Matlab信号处理:FFT频谱分辨率
频谱分辨率其中为采样间隔为采样点数为采样频率为FFT点数。有三正弦信号频率分别为 f1 1Hzf2 10Hzf3 40Hz示例1采样频率 fs 1000Hz采样时长 1s则采样点数为 1000采样间隔 0.001s.代入公式频谱分辨率为 1Hz.代码如下fs 1000; t 0:1/fs:1-1/fs; % 采样时长1s采样间隔0.001s采样点数1000 f1 1; f2 10; f3 40; y sin(2*pi*f1*t) sin(2*pi*f2*t) sin(2*pi*f3*t); y_fft fft(y); len length(y_fft); P1 abs(y_fft/len); P2 P1(1:len/21); P2(2:end-1) 2*P2(2:end-1); f fs*(0:len/2)/len; stem(f,P2);FFT频域图1Hz、10Hz 与 40Hz能够被分辨。示例2将采样时长变为 0.05s则采样点数变为 50代入公式频谱分辨率为 20Hz.代码如下fs 1000; t 0:1/fs:0.05-1/fs; % 采样时长0.05s采样间隔0.001s采样点数50 f1 1; f2 10; f3 40; y sin(2*pi*f1*t) sin(2*pi*f2*t) sin(2*pi*f3*t); y_fft fft(y); len length(y_fft); P1 abs(y_fft/len); P2 P1(1:len/21); P2(2:end-1) 2*P2(2:end-1); f fs*(0:len/2)/len; stem(f,P2);FFT频域图此时 1Hz、10Hz 都不能被分辨且出现频谱泄露对非周期信号截取都会引起频谱泄露对周期信号截取若截取信号段为原信号周期的整数倍则不会产生频谱泄露反之则会。