请大家帮我分析一段matlab程序

[复制链接]
2871|5
 楼主| hahajing85 发表于 2009-8-31 20:56 | 显示全部楼层 |阅读模式
%计算0≤n≤128时,x(n)的DFT
N=128;                  %数据长度
n=0:N-1;
fs=20;                   %采样率
xn=sin(3.1*2*pi*n/fs)+cos(3*2*pi*n/fs);
Xk=dft(xn);            %x(n)的DFT
figure;
subplot(2,1,1),plot(n,xn),title('x(n) (0=<n<128)');
m=(0:N/2-1)*fs/N;
subplot(2,1,2),plot(m,abs(Xk(1:N/2)));xlabel('Hz');


上面的程序中,为什么要用plot(m,abs(Xk(1:N/2)))而不用plot(n,abs(Xk));程序中的m=(0:N/2-1)*fs/N;是什么意思?
angelguard 发表于 2009-9-1 12:26 | 显示全部楼层
在FFT/DFT中,若不用N/2,那么出来的图形是左右对称的,但实际中,你只需要左半边的波形
McuPlayer 发表于 2009-9-1 12:36 | 显示全部楼层
FFT确实要头脑清醒的时候调试,但DTT老老实实按书上的公式基本一次就出来了
weidalun 发表于 2009-9-3 13:59 | 显示全部楼层
1# hahajing85
weidalun 发表于 2009-9-3 14:00 | 显示全部楼层
看看help里面关于DFT的定义,就可以理解数据为什么只要一半了
adofu2008 发表于 2009-10-25 19:05 | 显示全部楼层
m=(0:N/2-1)*fs/N意思就是把X轴的N/2个点转换成了模拟频率。这个模拟频率的最大值只有fs/2
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

6

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部