资源描述:
《最大信噪比盲源分离算法研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、最大信噪比盲源分离算法研究1程序说明该算法参考文为“基于最大信噪比的盲源分离算法”(《计算机仿真》,2006),程序的Matlab代码如下:function[ys,w]=SNR_Max(x)[n,T]=size(x);x=x-mean(x')'*ones(1,T);%去均值%---------------白化处理-------------------------[F,D]=eig((x*x')/T);v=F*(D^(-0.5))*F';x=v*x;p=80;a=ones(1,p)/p;x=x';S=filter(a,1
2、,x);%滑动平均处理U=cov(S-x,1);%计算协方差V=cov(x,1);[Wd]=eig(V,U);%计算特征值ys=(x*W)';%源信号估计mplot(x);figure(2);mplot(ys);上述程序中引用了一个画图子程序mplot(s),能画小于6个信号的图形,该程序代码如下:functionmplot(s)[dim,sample]=size(s);ifdim>samples=s';[dim,sample]=size(s);endifdim>6error('dimcannotmorethansix
3、');endfori=1:dimsubplot(dim,1,i);plot(s(i,:));axis('tight');set(gca,'XTick',[]);end程序调用说明:输入混合信号x为一个n*T阶数据矩阵,输出的分离信号ys是n*T阶估计数据矩阵,W为n*n阶分离矩阵,调用格式为[ys,W]=SNR_Max(x)。2算法说明基于最大信噪比的盲源分离算法,以盲源分离效果越好时信噪比越大这一特点,建立信噪比目标函数,把求优过程转化成广义特征值求解,用求出的广义特征值构成特征向量矩阵----分离矩阵,该算法是全局
4、最优的盲源分离算法,具有低的计算复杂度。设为N维源信号向量,为N维混合信号向量,A为N*N阶瞬时线性混合矩阵,信号的混合模型可表示为:(2-1)盲源分离就是仅有观测信号和源信号的概率分布先验知识来恢复出。即寻找一个N*N阶的分离矩阵W,使其输出(2-2)为的一个估计,称为估计信号或分离信号。这里的G为全局变换矩阵。下面介绍以信噪比最大化为准则,建立目标函数以学习的方式确定分离矩阵W的算法。2.1信噪比目标函数根据盲分离式(2-2),把源信号s与估计信号y的误差e=s-y作为噪声信号,建立信噪比函数为:(2-3)由于源信
5、号s是未知的,考虑到y(n)含有噪声,因此用估计信号y(n)的滑动平均代替源信号s,式(2-3)变为(2-4)式中:,滑动平均长度P可根据信号的噪声特点选取(P可为小于100的整数,程序中设定p=80),为了简化计算,将式(2-4)分子中的用y代替,因此得到最大信噪比目标函数为(2-5)式中:W为分离矩阵;为混合信号经滑动平均处理后的信号,即(2-6)方程(2-5)可写成(2-7)式中:为相关矩阵;。2.2分离算法的推导以分离矩阵W对式(2-7)两边求梯度,得(2-8)由于目标函数F(W,x)的极点值为式(2-8)的零
6、点,因此得(2-9)通过求解(2-9)就可以得分离矩阵,为矩阵的特征向量。(可用Matlab中eig()函数求得)。当然分离的源信号向量为,其中y的每一行代表一个分离信号,或称y是源信号s的估计。只要分理出的信号不相关时,通过得到的信号是统计独立的,因此上述算法可分离独立的源信号。3仿真结果与分析选择两路信号,一路为超高斯分布信号,一路为亚高斯分布的正弦信号为源信号,随机产生的线性混合矩阵A={0.15090.3784}{0.69790.8600},取数据长度L=1000。这两个信号分别按如下方式产生其中t取离散值1,
7、2,…,1000,,信号S1的峭度大于零,属于超高斯信号,S2的峭度小于零,属于亚高斯信号,这两路信号的波形如图1所示。(a)原始信号—超高斯信号(b)原始信号---亚高斯信号图1原始信号两路原始信号经过混合矩阵混合后的信号如图2所示。图2混合信号经过最大信噪比盲源分离算法分离后的波形如图3所示。图3基于最大信噪比盲源分离算法得到的分离信号由图3可以看出,经过最大信噪比盲源分离算法的操作,得到了非常好的分离效果。具体的Matlab实现程序如下:clear;t=1:1000;E=0.0002;S1=((mod(t,23)
8、-11)/9).^5+3;plot(S1)A=[0.15090.6979;0.37840.8600]S2=sin(100*pi*E*t);figure(2)plot(S2)S=[S1;S2];x=A*S;[ys,W]=SNR_Max(x)