打印

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

[复制链接]
1913|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

使用特权

评论回复
5
weidalun| | 2009-9-3 14:00 | 只看该作者
看看help里面关于DFT的定义,就可以理解数据为什么只要一半了

使用特权

评论回复
6
adofu2008| | 2009-10-25 19:05 | 只看该作者
m=(0:N/2-1)*fs/N意思就是把X轴的N/2个点转换成了模拟频率。这个模拟频率的最大值只有fs/2

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

6

帖子

1

粉丝