Неправильные знаки коэффициентов Фурье, возникающие в результате scipy.fft.fftPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Неправильные знаки коэффициентов Фурье, возникающие в результате scipy.fft.fft

Сообщение Гость »


Я вручную проанализировал треугольную волну, используя ряд Фурье, а затем используя пакет scipy.fft. Я получаю одинаковые абсолютные значения коэффициентов, но с противоположными знаками.
Изображение


Вручную:
Я взял интервал [-1,1], вычислил интеграл, чтобы получить a0 = 1, затем a1, a3 и a5. используя результат интеграции:
Изображение


И все bn равны 0.
Затем я просто построил ряд, где первый член равен a0/2, второй a1×cos(n Pi t/T) и так далее, и построил график этих волн. , сумма которых дает хорошее приближение к исходному сигналу.
Коэффициенты:

a0 = 0,5 а1 = -0,4053 а3 = -0,0450 а5 = -0,0162
Изображение

[img]https://i.stack .imgur.com/7WPmm.png[/img]


Scipy.fft:
Я определил частоту дискретизации fs=50 и создал пространство для функции с помощью space=np.linspace(-1,1,2*fs).
Затем определили fft1 = fft.fft(triang(space)), где «triang» — это функция, которая генерирует сигнал. Я сразу же масштабировал результаты, разделив на количество выборок (100) и умножив каждый член, кроме 0-го, на 2. Далее были частоты freq1 = fft.fftfreq(space.shape[-1], d=1/ фс). Итоговые коэффициенты (действительные части, относящиеся к an):

a0 = 0,5051 а1 = 0,4091 а3 = 0,0452 а5 = 0,0161 Как видите, абсолютные значения верны, а знаки — нет. Чего мне не хватает?
Изображение

[img]https://i. stack.imgur.com/LRYIM.png[/img]


И еще один бонусный вопрос, если можно: если делать это таким образом (используя scipy) и отображать каждую волну отдельно, следует ли мне добавлять фазовый угол из np.angle(fft1[n]) в каждый член, например a1×cos(n Pi t/T + theta) + b1×sin(n Pi t/T + theta)? Я бы сказал да, но в этом примере все bn равны 0, как и фазовые углы, поэтому я не смог это проверить.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»