第一天到绿安,接到第一个任务:用VC++封装FFT(快速傅里叶变换)的代码并用dll封装。

FFT的蝶形算法就不多说了,纠结的很,想知道的可以自行百度。。

上午一直在攻读FFT的相关知识,并且将网上的代码拷贝到电脑里运行,最后出结果了,但是完全不知道是不是对的,也不知道数据是从哪个参数被输入的。总之,就是一团雾水的状况。为了搞清楚算法, 中午去了小祁所在的传媒大学借了本信号处理的教材,上面讲的很系统很具体,不过看不懂还是看不懂……于是我打算换个工种,研究dll的封装,结果证明我的决策还算英明~

用VC++编写DLL,C#调用DLL的教程:   http://developer.51cto.com/art/201103/252320.htm

用matlab编写DLL的教程:  http://wenku.baidu.com/view/9c1c51a2b0717fd5360cdce3.html

 

现在,我用一天的时间看明白了2基的FFT,封装出了matlab FFT的DLL,不过VC++下的算法改编还差点。具体在于,当输入数据不是2的幂次方时,输出结果不正确。我的大致思路是找到距离输入数据量N最近且大于它的2的幂次方M,把M中没有实际数据的地方写为0,再将算法中所有调用N的地方改为M。

要是哪位朋友懂得分裂基FFT算法的话,还请不吝赐教,在此万分感谢!

posted on 2013-05-17 07:29  CodingPenguin  阅读(182)  评论(0编辑  收藏  举报