Как стать автором
Обновить

Комментарии 12

НЛО прилетело и опубликовало эту надпись здесь
Да, я делала преобразования над искусственными сигналами, чтобы показать, что и в идеальном случае не все гладко.

Согласна, что очень многое зависит от того, как именно исполнялось проиведение, я вскользь упомянула об этом в конце статьи. Моя же цель заключалась в том, чтобы показать, что уже на этапе дискретизации сигнала существует вероятность ошибки.
НЛО прилетело и опубликовало эту надпись здесь
Если исходный «аккорд» представляет собой сумму незатухающих «чистых синусоид» (по форме) и в выборке укладывается целое число периодов всех (каждой) составляющих аккорд «синусоид», то возможно произвести прямое и обратное преобразование Фурье и восстановить исходный сигнал без искажений.
FFT также работает с комплексными числами и отличается тем, что размер самого преобразования обязательно является степенью двойки,
— это неправда. Можно и степень тройки, и любая комбинация небольших простых множителей.
НЛО прилетело и опубликовало эту надпись здесь
Согласна, допустила значимую ошибку. Конечно же по теореме Котельникова здесь точность совершенно не гарантируется.

Попробовала запустить тот же код, поменяв значение параметра dt на 0.0001. График получился следующий:



Не похоже, что это сдвиг по фазе.
И в первом, и в этом варианте выглядит так, будто новый сигнал — зеркальное отражение исходного. Не знаю, на каком языке вы пишете, но вы уверены, что вам нужно fft(x, -1), а не что-то вроде ifft(x)? Дело в том, что дважды применённое прямое преобразование — это в точности разворот вектора.
Действительно, если почитать документацию (автор использует Scilab), то там про второй параметр написано:
sign
an integer. with possible values 1 or -1. Select direct or inverse transform. The default value is -1 (direct transform).

Так что действительно, автор дважды применила прямое преобразование.
обычный синус имеет ограниченный спектр, неограничен по времени.
прекрасно представляется гармониическим рядом из одного слагаемого.
при этом балуясь с ффт, если не понимать математики этого процесса, можно получать весьма неожиданные результаты.
рекомендую ознакомление с полной формулировкой теоремы Котельникова.
Вот результаты работы программы — график исходного сигнала, спектр и восстановленный сигнал — обратное преобразование Фурье.
Можно увидеть, что сигнал полностью восстанавливается.
Сигнал задается как сумма трех гармоник
xdata(i) = 16 * COS(th * 30) 'amp & Hz
xdata(i) = xdata(i) + 6 * COS(th * 6) 'amp & Hz
xdata(i) = xdata(i) + 4 * SIN(th * 14) 'amp & Hz

image

image
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории