Почему преобразование Фурье одиночного синусоидального цикла не является одним столбцом?


12

Я пробовал разные коды преобразования Фурье на синусоидальных волнах, и все они генерируют распределенный спектр с резонансом на частоте сигнала, когда они теоретически должны отображать одну полосу.

Частота дискретизации оказывает небольшое влияние (здесь 10 кГц), однако количество циклов:

Один цикл:

введите описание изображения здесь

100 циклов:

введите описание изображения здесь

100000 циклов:

введите описание изображения здесь

Похоже, преобразование Фурье сходится только для бесконечного числа циклов, почему это так? Разве временное окно ровно одного цикла не должно приносить те же результаты, что и N циклов?

Применение: Это как из любопытства, так и потому, что я хочу узнать, насколько шаговая реакция системы первого порядка будет вызывать резонанс механической сборки. Поэтому мне нужно точное преобразование Фурье ответа ... которому я больше не доверяю. Что я мог бы сделать, чтобы улучшить точность, основываясь на случае «синусоиды»?

введите описание изображения здесь

PS: Эти конкретные скриншоты основаны на коде здесь .


6
В дополнение к принятому ответу, обратите внимание, что нет оснований полагать, что дискретное преобразование Фурье (которое вы рассчитываете с использованием ДПФ) будет импульсом для входного сигнала, который является одним периодом синусоиды. Непрерывное преобразование Фурье синусоиды - это импульс, да, но эта синусоида бесконечна по продолжительности. Когда вы ограничиваете сигнал во времени, это эквивалентно умножению на функцию прямоугольного окна. Результатом в частотной области является свертка импульса и преобразование Фурье окна, которое, по сути, является тем, что вы наблюдаете.
Джейсон Р

Спасибо за замечание. Итак, как вы объясните, что если я изменю число NFFT на длину вектора, результатом будет один столбец?
Мистер Мистер

1
Хороший вопрос. Это происходит из-за врожденного предположения в ДПФ. Предполагается, что сигнал конечной длины, подаваемый на вход ДПФ, периодически распространяется в обоих направлениях с бесконечной длительностью. Поэтому, когда у вас есть целое число циклов внутри «апертуры» ДПФ, вы в конечном итоге получаете преобразование синусоиды бесконечной длительности: один импульс. Это соответствует случаю абсолютно нулевой спектральной утечки и редко встречается на практике.
Джейсон Р

Ответы:


30

Это оконный артефакт.

Связанный код дополняет образец сигнала 10000 нулями, так что длина равна степени двух.

%% Author :- Embedded Laboratory

%%This Project shows how to apply FFT on a signal and its physical 
% significance.

fSampling = 10000;          %Sampling Frequency
tSampling = 1/fSampling;    %Sampling Time
L = 10000;                  %Length of Signal
t = (0:L-1)*tSampling;      %Time Vector
F = 100;                    %Frequency of Signal

%% Signal Without Noise
xsig = sin(2*pi*F*t);
...

%%Frequency Transform of above Signal
subplot(2,1,2)
NFFT = 2^nextpow2(L);
Xsig = fft(xsig,NFFT)/L;
...

Обратите внимание, что в приведенном выше коде FFT берется с размером FFT, NFFTкоторый на следующую степень на 2 больше, чем длина сигнала (в данном случае, 16 384). Из документации Mathworksfft() :

Y = fft(X,n)возвращает n-точечное ДПФ. fft(X)эквивалентно fft(X, n)где nразмер Xв первом не единственном измерении. Если длина Xменьше чем n, Xдополняется конечными нулями по длине n. Если длина Xбольше чем n, последовательность Xусекается. Когда Xиспользуется матрица, длина столбцов корректируется таким же образом.

Это означает, что вы на самом деле не берете БПФ «синусоидальной волны» - вы берете БПФ синусоиды с плоским сигналом после нее.

Это эквивалентно взятию БПФ синусоиды, умноженной на функцию квадратного окна. Спектр БПФ представляет собой свертку частотного спектра синусоидальной волны (импульсной функции) с частотным спектром прямоугольной волны (sinc (f).)

Если вы измените его L = 16,384так, что сигнал не будет заполнен нулями, вы будете наблюдать perfectБПФ.

Другие ключевые слова для поиска: "Спектральная утечка", "Оконная функция", "Окно Хэмминга".


Редактировать: Я убрал некоторые материалы, которые я написал по этой теме еще в университете, которые идут существенно более подробно. Я разместил это в своем блоге .


Это было прямо перед моим лицом все это время. Отлично, сэр, я просто изменил номер NFFT на длину вектора, и это было сделано.
Мистер Мистер,

1
@ MisterMystère: см. Редактировать для ссылки на соответствующие материалы, которые я написал в университете. Гораздо более подробное объяснение, включая картинки.
Ли Аунг Ип

(Хотя я забыл заново набрать математические формулы - исправлено сейчас.)
Ли-Аунг Ип

Просто напоминание о том, что нет никакого преимущества в заполнении nextpow2 с использованием алгоритмов matlab FFT, которые, я считаю, являются fftw (самое быстрое преобразование Фурье на западе)
Скотт Сейдман
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.