Давайте рассмотрим этот пример:
Fs=1000;
Ns=500;
t=0:1/Fs:(Ns-1)*1/Fs;
f1=10;
f2=400;
x=5+5*sin(2*pi*f1*t)+2*sin(2*pi*f2*t);
X=fft(x);
В этом сценарии разрешение по частоте равно 2, и все частотные компоненты фиксируются правильно. Однако, если я сделаю это:
X=fft(x,1000);
разрешение по частоте составляет 1, но наблюдается спектральная утечка. Подобный эффект виден здесь . Мне кажется, что преобразования Фурье обоих окон (одно с длиной 500 и одно с длиной 1000) имеют нули на частотах, которые представлены в сигнале, поэтому я не понимаю, почему произойдет утечка?
fft
frequency-spectrum
dft
user3616359
источник
источник
Ответы:
Это явление не имеет ничего общего со спектральной утечкой. То, что вы наблюдаете - это эффект заполнения нулями. Учитывая количество выборокN , существует максимально возможное разрешение по частоте Δ F которое может быть достигнуто:
В вашем случаеΔ F точно 2H z . Если вы добавляете сигнал к нулю, никакой дополнительной информации для извлечения нет - вы только уменьшитечастотный интервал.
В приведенном выше примере, когда вы увеличиваетеN до 1000 , вы получаете разнос частот 1H z . Все дополнительные наблюдали образцы просто интерполяция, сделанная с помощью оконной функции ( с я н с в вашем случае). Вы начнете наблюдать боковые лепестки окна спектра. Так как вы неявно умножили свой сигнал на прямоугольное окно, это приведет к свертке спектра вашего сигнала (два Дирака + DC) с функцией с я н с .
Другой способ взглянуть на это - представить, что DFT - это, по сути, банк фильтров, состоящий из сдвинутыхс я н с с я н с
Давайте представим, что частота, соответствующая синему фильтру, присутствует. Это даст амплитуду в соответствующем бине. Все остальные частоты нет (оранжевый и желтый), таким образом , вы умножьте тес я н с 0 с я н с
И увеличенная часть:
На что обратить внимание:
Мы также можем наблюдать шум БПФ в самом низу.
ДляN= 10000 с я н с
И, очевидно, код для воспроизведения результатов:
источник
Спектральная утечка обычно является другим названием для эффекта свертки Синка или артефакта прямоугольного оконного окна в другой области (t или время в вашем случае). И заполнение нулями выполняется путем добавления прямоугольного окна (которое является вашими исходными данными, отличными от нуля) в более длинное БПФ.
Ваша гипотеза о том, что FT должен быть нулевым, кроме одной частоты, в целом неверна. Любой сигнал конечной длины (и ненулевой) будет иметь бесконечную степень ненулевого спектра. Эта бесконечная протяженность спектра (в форме Sinc или преобразование других окон) окажется невидимой в результате DFT / FFT только для чистых синусоид, которые охватывают всю ширину FFT с точной целочисленной периодичностью в этой ширине. Нулевое заполнение не позволяет этого.
источник
Утечка возникает, в частности, из окон конечной длины, которые вы всегда имеете на практике. Однако, если у вас есть ровно целое число периодов ваших синусоидальных компонентов, периодизация, присущая БПФ, действует так, как если бы синусы были «бесконечными», а его частоты точно падали на дискретизированные бины. И, таким образом, утечка каким-то образом устраняется из чистой удачи: если бы вы заранее знали период своего сигнала, вам не нужно было бы анализировать его с помощью инструментов Фурье.
С нулевым заполнением у вас больше нет чистого синуса. Ни с не целым периодом многократное окно. Вы объединяете куски синусов, которые имеют резкие изменения на границах окна. Таким образом, весь периодизированный сигнал больше не является «бесконечным синусом». Следовательно, вы можете получить то, что ассимилируете с утечкой, но это эффект заполнения нулями, как прекрасно объяснил @jojek.
источник