作业帮 > 综合 > 作业

关于matlab的FFT不懂!

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/07 16:35:54
关于matlab的FFT不懂!
Fs = 100; % Sampling frequency
T = 1/Fs; % Sample time
L = 50; % Length of signal
t = (0:L-1)*T; % Time vector
x = sin(2*pi*10*t);
NFFT = 2^nextpow2(L);
Y = fft(x,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)|')
这是一个更改matlab fft帮助里的程序.我不了解1.为什么用2^nextpow2(L)而不直接是L?2.Y = fft(x,NFFT)/L为什么除以L.3,.f = Fs/2*linspace(0,1,NFFT/2+1);为什么用0,1,NFFT/2+1.最后2*abs(Y(1:NFFT/2+1))是什么意思?
1 、一般频域的采样点要大于时域的采样点,最好是2的幂数,便于计算.可以看看数字信号处理这类的书 2、 假设采样频率为Fs,信号频率F,采样点数为N.那么FFT之后结果就是一个为N点的复数.每一个点就对应着一个频率点.这个点的模值,就是该频率值下的幅度特性.具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍 所以这里应该是 3 linspace(x0,x1,n) 其中n代表的是点的数目,即分成n-1等分.其实Fs/2*linspace(0,1,NFFT/2+1);就是在0到1之间分成NFFT/2份,也就是FS/NFFT,也就是设置间隔点的频率.最后2*abs(Y(1:NFFT/2+1)) 因为前面Y = fft(x,NFFT)/ NFFT 是原来信号的二分之一 所以要乘以2
假设FFT之后某点n用复数a+bi表示,那么这个复数的模就是
An=根号a*a+b*b,相位就是Pn=atan2(b,a).根据以上的结果,
就可以计算出n点(n≠1,且n