Преобразование Фурье ⎼ это мощный инструмент для анализа временных сигналов и спектрального анализа данных. Обычно для выполнения преобразования Фурье мы используем готовые библиотеки, такие как numpy или scipy. Однако, я решил попробовать написать код для преобразования Фурье на Python без использования этих библиотек.
Прежде всего, вам нужно понять, что само преобразование Фурье является математическим алгоритмом, который выполняет разложение сигнала на синусоидальные компоненты разных частот. Вот пример моего кода для выполнения простого одномерного преобразования Фурье⁚
python
import math
def fourier_transform(signal)⁚
n len(signal)
transformed_signal []
for k in range(n)⁚
real_part 0
imaginary_part 0
for t in range(n)⁚
angle 2 * math.pi * k * t / n
real_part signal[t] * math;cos(angle)
imaginary_part — signal[t] * math.sin(angle)
transformed_signal.append(complex(real_part, imaginary_part))
return transformed_signal
def inverse_fourier_transform(signal)⁚
n len(signal)
transformed_signal []
for k in range(n)⁚
real_part 0
imaginary_part 0
for t in range(n)⁚
angle 2 * math.pi * k * t / n
real_part signal[t].real * math.cos(angle) ⎼ signal[t].imag * math.sin(angle)
imaginary_part signal[t].real * math.sin(angle) signal[t].imag * math.cos(angle)
transformed_signal.append(complex(real_part/n, imaginary_part/n))
return transformed_signal
# Пример использования
input_signal [1, 2, 3, 4, 5, 6, 7, 8]
transformed_signal fourier_transform(input_signal)
reconstructed_signal inverse_fourier_transform(transformed_signal)
print(″Исходный сигнал⁚ ″, input_signal)
print(″Преобразованный сигнал⁚ ″, transformed_signal)
print(″Восстановленный сигнал⁚ ″, reconstructed_signal)
Обратите внимание, что я использовал встроенную функцию `complex` для работы с комплексными числами, которые являются частью преобразования Фурье. Также я использовал формулы Эйлера для вычисления синуса и косинуса угла.
Результат выполнения кода показывает исходный сигнал, преобразованный сигнал и восстановленный сигнал. Вы можете попробовать изменить входной сигнал и поэкспериментировать с различными значениями для получения интересных результатов.
Хотя писать код для преобразования Фурье самостоятельно немного сложнее, чем использовать готовые библиотеки, это может быть полезным упражнением для лучшего понимания алгоритма и математики, лежащей в его основе.