From bde048062854006edd16da5d64ba151497f5afaa Mon Sep 17 00:00:00 2001 From: Nimitt Sharma <84977996+Nimittxo@users.noreply.github.com> Date: Sat, 12 Oct 2024 00:54:04 +0530 Subject: [PATCH] Fourier_Transform.py Creation of another folder and creating the first Algorithm for Fourier_Transform --- maths/Transforms/Fourier_Transform.py | 34 +++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 maths/Transforms/Fourier_Transform.py diff --git a/maths/Transforms/Fourier_Transform.py b/maths/Transforms/Fourier_Transform.py new file mode 100644 index 000000000000..4a5b677ea4a3 --- /dev/null +++ b/maths/Transforms/Fourier_Transform.py @@ -0,0 +1,34 @@ +import numpy as np +from typing import List, Union + +def fourier_transform(signal: List[Union[int, float]]) -> List[complex]: + """ + Compute the discrete Fourier transform (DFT) of a signal. + + Args: + signal (List[Union[int, float]]): A list of numerical values representing the input signal. + + Returns: + List[complex]: The Fourier transform of the input signal as a list of complex numbers. + + Example: + >>> fourier_transform([1, 2, 3, 4]) + [(10+0j), (-2+2j), (-2+0j), (-2-2j)] + + Note: + This is a basic implementation of the DFT and can be optimized using FFT for larger datasets. + """ + n = len(signal) + result = [] + for k in range(n): + summation = 0 + 0j + for t in range(n): + angle = -2j * np.pi * t * k / n + summation += signal[t] * np.exp(angle) + result.append(summation) + return result + +if __name__ == "__main__": + sample_signal = [1, 2, 3, 4] + result = fourier_transform(sample_signal) + print("Fourier Transform of the signal:", result)