[討論] FFT與關於leakage已回收
最近利用matlab做些FFT的分析,但總覺得程式分析出的結果有時怪怪的,
嘗試回到最簡單狀態去測試,若關於FFT的程式撰寫如下:
clear; close all;
L = 80; %資料筆數
w = 10; %訊號頻率
dt = 1/w/20;
t = (0:L-1)*dt;
y = 0.5*sin(2*pi*w*t+0.5*pi);
ffty = fft(y)/L;
f = (1/dt)/2*linspace(0,1,L/2);
subplot(2,1,1);
plot(t,y,'marker','o','markersize',2); grid on;
xlabel('t'); ylabel('y');
subplot(2,1,2);
stem(f,2*abs(ffty(1:L/2)),'markersize',2); grid on;
xlabel('f'); ylabel('spectrum');
不知上述程式是否有瑕疵?
以此程式為例,如果資料筆數設定在80,那麼分析出的結果是很完美的,
頻率落在10且振幅剛好0.5,而其餘頻率位置皆為0,
倘若我資料筆數設為90,那麼結果完全不是這麼一回事,
就目前粗淺了解是,若資料不是剛好週期整數倍位置截斷,
就會發生所謂洩漏(leakage),要防止此現象有折衷方式是所謂加窗處理,
但不知matlab中是如何做?而上述的論述是否正確?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.67.141.142
※ 編輯: Ballantine 來自: 203.67.141.142 (04/18 03:27)
推
04/18 21:09, , 1F
04/18 21:09, 1F
→
04/18 21:10, , 2F
04/18 21:10, 2F
→
04/18 21:11, , 3F
04/18 21:11, 3F
推
04/19 23:51, , 4F
04/19 23:51, 4F
推
04/24 14:39, , 5F
04/24 14:39, 5F
→
04/24 14:42, , 6F
04/24 14:42, 6F
推
04/24 14:59, , 7F
04/24 14:59, 7F
→
04/24 15:00, , 8F
04/24 15:00, 8F
→
04/24 15:01, , 9F
04/24 15:01, 9F