目的是把cmsis的fft移植跑起来.代码移植,编译都没有问题.
1)用于测试的采样数组,我是在matlab中生成的,用以下命令
512个点.t=0:1/6656:511/6656;%生成采样时间序列
s1=sin(54*2*pi*t);%生成采样点.
在matlab下测试这些采样点,用
fftsa1=fft(s1,512);%fft变换,
再取模,输出图形,如下:可见是正确的.
2)输出模值1--10,如下图.
只有对应频率的模为1,其他都为0,正确的.
3)把这个数组放到代码里,用cmsis的库函数进行fft变换.()
得到一个1024的数组.如下:
我的理解,这一步 求出的只是一个包括实部与虚部的数组,于是,对这个数组进行求模.
结果,得到一个 512的数组,每一项都为 1.
问题:
1)求模以后,不是应该 与第2步 相对应,即,只有对应频率 的模才为1,其他频率 的模 应该为零吧,这里为什么会512项都为1?看样子又不像出错..。。
2)我用另一个fft算法(非cmsis库)进行处理,得到的数组进行求模,也得到了一个同样都是1的数组..猜测,cmsis库的fft运算应该没有问题,而是我的理解哪里有问题...感觉 像是 一个圆,等分了512份,实部与虚部对应于每份半径的sin与cos值,这样求模就是1.但,如果我想取对应的频率 的幅值,肯定不能这样取,否则,每个分频率 求的模值 都是1,没道理..应该只有一个对应频率 的值 才是1(如第2 步图中的值)