Чому я маю витік частоти в DFT після нульової прокладки, якщо роздільна здатність частоти добре?


12

Розглянемо цей приклад:

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) мають нулі на частотах, які подаються в сигналі, тож я не знаю, чому відбудеться витік?


нульове прокладка не зменшить видимий спектральний витік, а лише зробить пучки спектральних витоків більш гладкими.
Роберт Брістоу-Джонсон

Відповіді:


18

Це явище не має нічого спільного зі спектральним витоком. Те, що ви спостерігаєте, - це ефект нульової прокладки. Враховуючи кількість зразків N , існує максимально можлива роздільна здатність частоти Δf яку можна досягти:

Δf=fсN

У вашому випадку Δf рівно 2Нz . Якщо ви подаєте нульовий сигнал свого сигналу, додаткової інформації для отримання не буде - ви лишезменшите інтервал частоти.

У наведеному вище прикладі, коли ви збільшуєте N до 1000 , ви отримуєте інтервал частот 1Нz . Усі додаткові спостережувані зразки - це лише інтерполяція, виконана функцією вікна (сiнc у вашому випадку). Ви почнете спостерігати за бічними часточками віконного спектру. Оскільки ви неявно помножили сигнал на прямокутне вікно, це призведе до згортання спектру вашого сигналу (два Дірака + DC) зфункцієюсiнc .


сiнcсiнc

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

сiнc0сiнc


N=1000N=10000

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

І збільшена частина:

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

Що потрібно помітити:

  • N=500

  • Ми також можемо спостерігати шум FFT в самому дні.

  • N=10000сiнc


І очевидно код для відтворення результатів:

Fs=1000; 
Ns=500;
Ns2=1000;
Ns3=10000;
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);

X1 = abs(fft(x))/length(x);
X2 = abs(fft(x, Ns2))/Ns;
X3 = abs(fft(x, Ns3))/Ns;

F1 = 0:Fs/Ns:Fs-Fs/Ns;
F2 = 0:Fs/Ns2:Fs-Fs/Ns2;
F3 = 0:Fs/Ns3:Fs-Fs/Ns3;

plot(F1, 20*log10(X1))
hold on
plot(F2, 20*log10(X2))
plot(F3, 20*log10(X3))
xlim([0, Fs/2])
grid on
legend({'N=500', 'N=1000', 'N=10000'})

1
Дуже повна відповідь +1. "[...] ви тільки збільшите інтервал частоти." Я думаю, це має бути зменшення .
Метт Л.

2

Спектральний витік зазвичай є іншою назвою для ефекту згортки Сінка або артефакту прямокутного вікна в іншому домені (т або час у вашому випадку). А нульове прокладка робиться додаванням прямокутного вікна (яке є вашими оригінальними даними, що не мають нульової панелі) до більш тривалого FFT.

Ваша гіпотеза про те, що FT взагалі має бути нульовим, однак одна частота взагалі помилкова. Будь-який сигнал кінцевої довжини (і ненульовий) буде мати нескінченну міру ненульового спектру. Цей нескінченний спектр спектру (у формі Сінка або трансформації інших Windows) виявиться невидимим у результаті DFT / FFT лише для чистих синусоїд, ніж охоплює всю ширину FFT з точною цілою періодичністю у цій ширині. Нульова накладка цього не дозволяє.


1

Витік виникає особливо при вікнах обмеженої довжини, які ви завжди маєте на практиці. Однак якщо у вас точно ціле число періодів ваших синусоїдних компонентів, притаманна FFT періодизація діє так, як ніби синуси були "нескінченними", а її частоти точно падають на дискретні бункери. І, таким чином, витік якось скасовується із чистої долі: якби ви заздалегідь знали період свого сигналу, вам не потрібно було б аналізувати його за допомогою інструментів Фур’є.

З нульовими накладками у вас більше немає чистого синуса. Ні з декількома вікнами без цілого періоду. Ви поєднуєте шматки синусів, які різко змінюються на межах вікна. Таким чином, весь періодизований сигнал вже не є "нескінченним синусом". Таким чином, ви можете отримати те, що ви засвоїте з витоком, але це ефект з нульовим прокладкою, як ідеально пояснив @jojek.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.