仪器社区

正弦序列FFT频谱分析程序问题!!

beibei91 2010-07-11
1楼 就是正弦包含频率是20hz,20.5hz,40hz,采样频率fs是100hz,分析栅栏效应,先是128个点fft,补零到512个点进行fft,再512个点fft。程序是这样的: N1=128;N2=512; fs=100;f1=20;f2=20.5;f3=40; n1=0:N1-1;n2=0:N2-1; xn1=sin(2*pi*f1*n1/fs)+sin(... 1楼 就是正弦包含频率是20hz,20.5hz,40hz,采样频率fs是100hz,分析栅栏效应,先是128个点fft,补零到512个点进行fft,再512个点fft。程序是这样的: N1=128;N2=512; fs=100;f1=20;f2=20.5;f3=40; n1=0:N1-1;n2=0:N2-1; xn1=sin(2*pi*f1*n1/fs)+sin(2*pi*f2*n1/fs)+sin(2*pi*f3*n1/fs); xk11=fft(xn1,N1) mxk11=abs(xk11(1:N1/2)); figure(1); subplot(211);plot(n1,xn1); xlabel('n');title('x(n) 0<=n<127');axis([0,128,-3,3]); k1=(0:N1/2-1)*fs/N1; subplot(212) plot(k1,mxk11); xlabel('频率 单位Hz');title('X1(k)的幅度谱'); xn2=[xn1,zeros(1,N2-N1)]; xk12=fft(xn2,N2); mxk12=abs(xk12(1:N2/2)); figure(2); subplot(211);plot(n2,xn2); xlabel('n');title('x(n) 0<=n<=511');axis([0,512,-3,3]); k2=(0:N2/2-1)*fs/N2; subplot(212); plot(k2,mxk12); xlabel('频率 单位Hz');title('x1(k)补零后的幅度谱'); xn3=sin(2*pi*f1*n2/fs)+sin(2*pi*f2*n2/fs)+sin(2*pi*f3*n2/fs); xk2=fft(xn3,N2); mxk3=abs(xk2(1:N2/2)); figure(3); subplot(211);plot(n2,xn3); xlabel('n');title('x(n) 0<=n=511');axis([0,512,-3,3]); k3=(0:N2/2-1)*fs/N2; subplot(212); plot(k3,mxk3); xlabel('频率 单位Hz');title('512点有效数据的幅度谱'); 我看不懂的是 xk11=fft(xn1,N1) mxk11=abs(xk11(1:N1/2));(这个是什么意思?) 和k1=(0:N1/2-1)*fs/N1;(为什么是二分之一得N1呢?)
评论
全部评论
梦色未央
因为N个样点的信号经过fft以后变成N个样点的频谱,这个频谱是关于第N/2+1样点左右对称的,所以真正有用的频谱数据只有前面一半,后面一半是镜像。mxk11是对前N/2个样点取幅度谱,其实应该是取1:N1/2+1,你这里少取了一个点。具体为什么会镜像请看数字信号处理DFT章节。
14 0 2016-07-28 0条评论 回复
萌狸仔甴
diyi行是对XN1做fft的N1点变换
第二条是求FFt变化后的幅值,括号中说的是采样点,也就是说求对应采样点的幅值
第三条是求频率轴,除以二取整是求正半轴,当然也可以取负值,这就看你对结果的要求了。
19 0 2010-07-12 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论