我是 matlab 和 FFT 新手,想了解Matlab FFT 示例。现在我有两个主要问题:
1)为什么x轴(频率)以500结束?我怎么知道没有更多的频率或者它们只是被忽略了?
2) 我怎么知道频率在 0 到 500 之间?FFT不应该告诉我,频率在哪些范围内?FFT 是否只返回幅度值而不返回频率?
感谢您的任何提示!
有问题的例子:
考虑以 1000 Hz 采样的数据。形成一个包含幅度为 0.7 的 50 Hz 正弦波和幅度为 1 的 120 Hz 正弦波的信号,并用一些零均值随机噪声破坏它:
Fs = 1000; % Sampling frequency
T = 1/Fs; % Sample time
L = 1000; % Length of signal
t = (0:L-1)*T; % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
y = x + 2*randn(size(t)); % Sinusoids plus noise
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')
转换到频域,通过快速傅里叶变换 (FFT) 得到噪声信号 y 的离散傅里叶变换:
NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')