最大信噪比盲源分离算法研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最大信噪比盲源分离算法研究
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,x); %滑动平均处理
U=cov(S-x,1); %计算协方差
V=cov(x,1);
[W d]=eig(V,U); %计算特征值
ys=(x*W)'; %源信号估计
mplot(x);
figure(2);
mplot(ys);
上述程序中引用了一个画图子程序mplot(s),能画小于6个信号的图形,该程序代码如下:
function mplot(s)
[dim,sample]=size(s);
if dim>sample
s=s';
[dim,sample]=size(s);
end
if dim>6
error('dim can not more than six');
end
for i=1:dim
subplot(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 算法说明
基于最大信噪比的盲源分离算法,以盲源分离效果越好时信噪比越大这一特点,建立信噪比目标函数,把求优过程转化成广义特征值求解,用求出的广义特征值构成特征向量矩阵----分离矩阵,该算法是全局最优的盲源分离算法,具有低的计算复杂度。
设T N n s n s n s )](),....,([)(1=为N 维源信号向量,)(n x 为N 维混合信号向量,A 为N*N 阶瞬时线性混合矩阵,信号的混合模型可表示为:
)()(n As n x = (2-1)
盲源分离就是仅有观测信号)(n x 和源信号)(n s 的概率分布先验知识来恢复出)(n s 。即寻找一个N*N 阶的分离矩阵W ,使其输出
)()()()(n Gs n WAs n Wx n y === (2-2)
为)(n s 的一个估计,称)(n y 为估计信号或分离信号。这里的G 为全局变换矩阵。下面介绍以信噪比最大化为准则,建立目标函数以学习的方式确定分离矩阵W 的算法。 2.1 信噪比目标函数
根据盲分离式(2-2),把源信号s 与估计信号y 的误差e=s-y 作为噪声信号,建立信噪比函数为:
T
T
T T y s y s s s e e s s SNR )
()(log 10log 10-∙-∙=∙∙= (2-3) 由于源信号s 是未知的,考虑到y(n)含有噪声,因此用估计信号y(n)的滑动平均~
y 代替源信号s ,式(2-3)变为
T
T
T T
y y y y y
y e e s s SNR )
()(log 10log
10~
~~~
-∙-∙=∙∙= (2-4) 式中:∑=-=-=p
j i i p j j n y p n y 0
~
1,....,2,1,0),(1)(,滑动平均长度P 可根据信号的噪声特点
选取(P 可为小于100的整数,程序中设定p=80),为了简化计算,将式(2-4)分子中的~
y 用y 代替,因此得到最大信噪比目标函数为 T
T y y y y y y SNR y F )
)((log
10)(~
~--∙== (2-5)
式中:;;~
~
x W y Wx y == W 为分离矩阵;~
x 为混合信号经滑动平均处理后的信号,即
∑=-=-=p
j i p i j n x p n x 0
~
1,.....,2,1,0),(1)( (2-6)
方程(2-5)可写成
U
V W C W WCW
W x x x x W W Wxx y y y y y y x W F T
T
T
T T
T T
T log
10log
10))((log
10)
)((log 10),(~
~
~
~
~
==--=--∙= (2-7)
式中:T
T
x x x x C xx C ))((,~
~
~
--==为相关矩阵;T
T
W C W U WCW V ~
;==。 2.2 分离算法的推导
以分离矩阵W 对式(2-7)两边求梯度,得
~
22C U
W C V W W F -=∂∂ (2-8) 由于目标函数F(W,x)的极点值为式(2-8)的零点,因此得
~C W U
V
WC = (2-9)
通过求解(2-9)就可以得分离矩阵∧W ,∧W 为矩阵1
~
-∙C
C 的特征向量。(可用Matlab 中eig()
函数求得)。当然分离的源信号向量为x W y ∧
=,其中y 的每一行代表一个分离信号,或称y 是源信号s 的估计。只要分理出的信号不相关时,通过∧
W 得到的信号是统计独立的,因此上述算法可分离独立的源信号。
3仿真结果与分析
选择两路信号,一路为超高斯分布信号,一路为亚高斯分布的正弦信号为源信号,随机产生的线性混合矩阵A={0.1509 0.3784}{0.6979 0.8600},取数据长度L=1000。这两个信号分别按如下方式产生
⎥⎥⎦
⎤
⎢⎢⎣⎡∆+-=⎥⎦⎤⎢⎣⎡=)100sin(3]9
11)23,mod([
215t t S S S π 其中t 取离散值1,2,…,1000,4
102-⨯=∆,信号S1的峭度大于零,属于超高斯信号,S2的峭度小于零,属于亚高斯信号,这两路信号的波形如图1所示。