加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

MAD算法实现分析

(2013-04-28 17:10:22)
分类: DSP

参考文献On-line Blind Source Separation of Non-Stationary Signals.  Lucas parra.

   MAD算法是一种FIR自适应滤波算法,采用梯度更新机制。因此自适应其实也是通过梯度更新滤波器发生变化。分析角度可以包括时域分析和频域分析。

   其中涉及的DSP运算以及编程实现总结:

   1、归一化运算和去归一化运算

   它使用的原因是避免数据计算过程中溢出,归一化的思想是去某个数组的最大数作为参考,将该数进行归一化,即使得数据处于(0x4000,0x7FFF)之间,同时得到定点Q值。然后其他数据依照Q值进行shr(右移运算)。

   去归一化与归一化相反,只要将按Q值进行shl(左移)。

   2、FFT运算和IFFT运算

   时域和频域的相互变化,代码实现一般讲这两个运算放到一个函数中。通过参数判断是FFT还是IFFT。需要主要的是,由于变量或者FFT后的频谱值是复数,需要数据两倍的空间进行存储。把每个数据的实部和虚部进行连续存放。

  对于时域是实数的FFT运算,只需要N/2+1的正频谱进行分析即可。FFT中的蝶形运算实现(待分析)。

   3、数据存储问题

   由于数据的成块处理,里面涉及的存储空间比较多,需要有矩阵思想和分开思想,结合多个指针使用。可以实现存储空间重复使用。同时程序可读性和操作方便。

   4、变量及运算

   结合论文编程时,还需要特别注意的地方是,需要对论文中每个运算以及变量的要非常清楚,两个向量的自相关怎么求以及维数、FFT和IFFT变换是取哪些数据使用,滤波器系数和FFT长度、滑窗大小(一般都有叠加),变量之间的乘法是点乘还是矩阵相乘,除法是点除还是矩阵求逆。

0

阅读 收藏 喜欢 打印举报/Report
后一篇:同行博客
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有