搞了好几年的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的结果这样需要除以点数之后才能算幅值?<br /><br />function ffttry<br />clc<br />for m=0:1:50*128-1<br />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);<br />end<br />figure <br />k=[0:50*128-1];<br />plot(k,x)<br />fft(x,128)<br /><br />先行谢过了。 |
|