From 835603223fff4ed651fc8e2343b2eaadb8ece0aa Mon Sep 17 00:00:00 2001 From: Nimitt Sharma <84977996+Nimittxo@users.noreply.github.com> Date: Sat, 12 Oct 2024 00:59:11 +0530 Subject: [PATCH 1/3] fourier_transform.py create a new directory called ``` transforms ``` for transforms in calculus added first transform named 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..bec7212e60a6 --- /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) From 45b18a8669656ebc317b76a39b438d575012d16c Mon Sep 17 00:00:00 2001 From: Nimitt Sharma <84977996+Nimittxo@users.noreply.github.com> Date: Sat, 12 Oct 2024 01:06:50 +0530 Subject: [PATCH 2/3] Update fourier_transform.py --- maths/transforms/fourier_transform.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/maths/transforms/fourier_transform.py b/maths/transforms/fourier_transform.py index bec7212e60a6..c50bbdd7378a 100644 --- a/maths/transforms/fourier_transform.py +++ b/maths/transforms/fourier_transform.py @@ -1,28 +1,28 @@ -import numpy as np from typing import List, Union +import numpy as np -def fourier_transform(signal: List[Union[int, float]]) -> List[complex]: +def fourier_transform(signal: list[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. + signal (list[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. + 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)] + >>> 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. + 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): + 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) From cf00b93ad6c1056dc3461c4e70f8e53fa5b2ab23 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 11 Oct 2024 19:43:07 +0000 Subject: [PATCH 3/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/transforms/fourier_transform.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/maths/transforms/fourier_transform.py b/maths/transforms/fourier_transform.py index c50bbdd7378a..e0d6bc65bf3a 100644 --- a/maths/transforms/fourier_transform.py +++ b/maths/transforms/fourier_transform.py @@ -1,6 +1,7 @@ from typing import List, Union import numpy as np + def fourier_transform(signal: list[int | float]) -> list[complex]: """ Compute the discrete Fourier transform (DFT) of a signal. @@ -28,6 +29,7 @@ def fourier_transform(signal: list[int | float]) -> list[complex]: result.append(summation) return result + if __name__ == "__main__": sample_signal = [1, 2, 3, 4] result = fourier_transform(sample_signal)