FFT的那些细节

用MATLAB进行谱分析时注意:
例:

N=8;
n=0:N-1;
xn=[4 3 2 6 7 8 9 0];
Xk=fft(xn)


Xk =

39.0000 -10.7782 + 6.2929i 0 - 5.0000i 4.7782 - 7.7071i 5.0000 4.7782 + 7.7071i 0 + 5.0000i -10.7782 - 6.2929i

(1)Xk与xn的维数相同,共有8个元素。Xk的第一个数对应于直流分量,即频率值为0。
(2)对周期信号做FFT分析时,幅值大小与FFT选择的点数有关,但不影响分析结果。在IFFT时已经做了处理。要得到真实的振幅值的大小,只要将得到的变换后结果乘以2除以N即可。这里指的是单边谱,如果是双边谱则是除以N。
(3)对非周期信号做FFT分析时,如果是双边边谱求得fft后/N是傅里叶级数,在傅里叶变换的频谱上体现是极小量,所以傅里叶变换的频谱指的是频谱密度,需要再除以f0=fs/N=1/NTs,所以是fft后/N再除以f0,最终是fft结果乘以Ts采样间隔。attention N是信号点数

例1:x=0.5sin(2pi15t)+2sin(2pi40t)。采样频率fs=100Hz,分别绘制N=128、1024点幅频图。

clf;
Ts=0.01;N=128;   %采样频率和数据点数
fs=1/Ts;
n=0:N-1;t=n*Ts;   %时间序列
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号
y=fft(x,N);    %对信号进行N点快速Fourier变换(这里的Nfft是等于Ndata的,Nfft<Ndata就是截断,>就是补零)
mag=abs(y);     %求得Fourier变换后的振幅
f=n*fs/N;    %频率序列 单位为Hz 
subplot(2,2,1),plot(f,mag);   %绘出双边谱随频率变化的振幅
axis([0 100 0 150]);
xlabel('频率/Hz');
ylabel('振幅');title('N=128');grid on;
subplot(2,2,2),plot(f(1:N/2),2/N*mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅,单边谱,看真实幅值
axis([0 60 0 2]);
xlabel('频率/Hz');
ylabel('振幅');title('N=128');grid on;
%对信号采样数据为1024点的处理
Ts=0.01;N=1024;n=0:N-1;t=n*Ts;fs=1/Ts;
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号
y=fft
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值