打印

精通MATLAB和FFT的DSP高手进来看下

[复制链接]
4171|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小研究|  楼主 | 2007-7-6 22:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
搞了好几年的MATLAB,今天突然有点迷了(我常常在自己熟悉的领域里犯迷@_@)。今天用MATLAB中的FFT函数,做了个简单的FFT仿真,比如128点FFT,得到的结果中总是有点数的倍数。下面附上几条MATLAB程序,有兴趣的朋友可以试一下。本来为1的直流量得到却是128,本来为1的基波得到64,本为0.2的三次谐波得到12.8。也就是说MATLAB中的FFT函数算完之后还是需要处理的,且这个处理跟点数有关,比如128点,直流分量需要除以128,而其他次数的分析结果则需要除以64。我现在必须知道的是,通常TI给出的FFT程序(我以前搞ADSP时的FFT程序结果是直接可以用来算幅值的)的结果是否也包含了这样一个点数的倍数?这个结果是否可以直接用来算幅值,或者是象MATLAB的结果这样需要除以点数之后才能算幅值?

function ffttry
clc
for m=0:1:50*128-1
x(m+1)=1+cos(2*pi/128*m)+0.2*cos(2*pi*3*m/128+pi/4)+0.1*cos(2*pi*63*m/128+pi/6);
end
figure 
k=[0:50*128-1];
plot(k,x)
fft(x,128)

先行谢过了。

相关帖子

沙发
田宏亮| | 2007-7-7 06:25 | 只看该作者

RE

如果输入信号是实数,FFT的结果是幅值的N/2倍。如果输入信号是复数,FFT的结果是幅值的N倍,N是每周期的采样点数。请参考信号与系统或数字信号处理方面的书关于DFT的定义,是有1/N的。TI的FFT函数使用Q15格式,是可以算幅值的。

使用特权

评论回复
板凳
小研究|  楼主 | 2007-7-7 17:27 | 只看该作者

回2楼

我用的是浮点的VC33,我知道用这个DSP的朋友很少,希望精通6000的朋友说说TI给出的6000的FFT程序的结果中是否含有N的倍数?
谢谢

使用特权

评论回复
地板
小研究|  楼主 | 2007-7-7 17:50 | 只看该作者

2楼的朋友,FFT的结果跟格式没什么关系吧

关键是看是否在FFT的结果中做了点数的处理,我现在看汇编看的头大,总看不出个所以然来,所以才问各路高手。

使用特权

评论回复
5
wowow| | 2007-7-7 18:07 | 只看该作者

a

"直流分量需要除以128,而其他次数的分析结果则需要除以64",实际上都要除以128的,谐波能量少了一半是因为有一半到负频率域了。

DSP的FFT的函数好像有选项是否要除N吧?

使用特权

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

本版积分规则

153

主题

869

帖子

8

粉丝