FFT Matlab - 频率向量的含义

信息处理 matlab fft 傅里叶变换 傅立叶
2022-02-20 21:38:00

我正在关注有关 FFT 的教程。解释得很好,但我不明白频率向量的含义:

Fs = 150; % Sampling frequency
t = 0:1/Fs:1; % Time vector of 1 second 
f = 5; % Create a sine wave of f Hz.
x = sin(2*pi*t*f); 
nfft = 1024; % Length of FFT

% Take fft, padding with zeros so that length(X) 
is equal to nfft 
X = fft(x,nfft);
% FFT is symmetric, throw away second half
X = X(1:nfft/2); 
% Take the magnitude of fft of x
mx = abs(X);
% Frequency vector
f = (0:nfft/2-1)*Fs/nfft; 

% Generate the plot, title and labels. 
figure(1);
plot(t,x);
title('Sine Wave Signal'); 
xlabel('Time (s)'); 
ylabel('Amplitude'); 
figure(2);
plot(f,mx);
title('Power Spectrum of a Sine Wave'); 
xlabel('Frequency (Hz)'); 
ylabel('Power');

有人可以解释一下这是为了什么:

f= (0:nfft/2-1)*Fs/nfft;

这是链接

1个回答

具体来说,
nfft = 1024
Fs = 150
所以f = (0:511)x(150/1024)
f将从0x(150/1024) = 0变为511x(150/1024) = 75
所以,你正在绘制频谱的幅度从 0 到 75 Hz。
频谱是周期性的,将重复 75 到 150 Hz,因此您的绘图范围为 0 到 Fs/2