频谱分辨率:
其中为采样间隔,为采样点数。
FFT分辨率:
其中为采样频率,为FFT点数。
有两正弦函数,频率分别为 f1 = 1Hz,f2 = 10Hz,f3 = 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/2+1);
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/2+1);
P2(2:end-1) = 2*P2(2:end-1);
f = fs*(0:len/2)/len;
stem(f,P2);
FFT频域图:
此时 1Hz、10Hz 都不能被分辨,且出现频谱泄露。