全球旧事资料 分类
卡尔曼滤波算法及MATLAB实现
这一段时间对现代滤波进行了学习,对自适应滤波器和卡尔曼滤波器有了一定认识,并对它们用MATLAB对语音信号进行了滤波,发现卡尔曼滤波器还是比较有用,能够在较大的噪声中还原原来的信号。新的学期马上就开始了,由于TI的开发板一直在维修,所以学习TI开发板的计划搁置,但是对声音信号的处理及滤波器的认识有了进一步提高。新的学期继续努力!卡尔曼滤波的基本思想是:以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型,利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估计,求出当前时刻的估计值,算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。语音信号在较长时间内是非平稳的,但在较短的时间内的一阶统计量和二阶统计量近似为常量,因此语音信号在相对较短的时间内可以看成白噪声激励以线性时不变系统得到的稳态输出。假定语音信号可看成由一AR模型产生:
时间更新方程:
测量更新方程:
Kt为卡尔曼增益,其计算公式为:
其中

分别为过程模型噪声协方差和测量模型噪声协方差,测量协方差可以通过观测得到,则较难确定,在本实验中则通过
与两者比较得到。由于语音信号短时平稳,因此在进行卡尔曼滤波之前对信号进行分帧加窗操作,在滤波之后对处理得到的信号进行合帧,这里选取帧长为256,而帧重叠个数为128;下图为原声音信号与加噪声后的信号以及声音信号与经卡尔曼滤波处理后的信号:
f原声音信号与加噪声后的信号
原声音信号与经卡尔曼滤波处理后的信号MATLAB程序实现如下:基于LPC全极点模型的最大后验概率估计法采用卡尔曼滤波clearclc
f加载声音数据loadvoicematym12xy008ra
d
1le
gthy原声音信号和加噪声后的信号figure1subplot211plotm11m12xlabel时间ylabel幅度title原声音信号subplot212plotm11xxlabel时间ylabel幅度title加噪声后的信号输入参数Fs44100bits16N256mN2le
thle
gthx信号采样的频率信号采样的位数帧长每帧移动的距离输入信号的长度处理整个信号需要移动的帧数先不考虑补零的问题AR模型的阶数
cou
tfloorle
thm1p11azeros1pwhammi
gNy_temp0Fzeros1111F121F231F341F451F561F671F781F891F9101F10111Hzeros1pr
好听全球资料 返回顶部