ICA用于盲源分离Word文件下载.docx

上传人:b****7 文档编号:22098231 上传时间:2023-02-02 格式:DOCX 页数:18 大小:561.78KB
下载 相关 举报
ICA用于盲源分离Word文件下载.docx_第1页
第1页 / 共18页
ICA用于盲源分离Word文件下载.docx_第2页
第2页 / 共18页
ICA用于盲源分离Word文件下载.docx_第3页
第3页 / 共18页
ICA用于盲源分离Word文件下载.docx_第4页
第4页 / 共18页
ICA用于盲源分离Word文件下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

ICA用于盲源分离Word文件下载.docx

《ICA用于盲源分离Word文件下载.docx》由会员分享,可在线阅读,更多相关《ICA用于盲源分离Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。

ICA用于盲源分离Word文件下载.docx

(2)信息极大判据

理论分析表明,如果把完成ICA的过程用一个运算网络表示,并在此网络的输出端,引入相应的信源的累积分布函数为变换函数的一个非线性环节,把转化为,则的熵最大就等效于式(5)互信息极小

(3)极大似然估计判据

极大似然估计的目的是通过对观测模型式x=As进行估计,得到潜在的信号S,利用

(6)

当N足够大时,其对数似然概率收敛于它的期望

(7)

式可改写为:

(8)

即,可通过极大似然估计判据提取独立成份

3.常用ICA算法

(1)成对旋转法:

利用Givens旋转,将中的独立成份两两成对旋转直到独立性判据目标函数收敛为止

2)固定点算法:

(i)(四阶累积量)

(9)

(ii)Newton法

(10)

(3)自然梯度学习算法

(11)

4.ICA算法仿真实例:

原始信号混合信号ICA分离信号

5.ICA理论研究方向

(1)固定点算法

(2)非线性ICA研究

(3)噪声ICA研究

(4)overcompleteICA研究

(5)子空间ICA研究

6.ICA应用研究

(1)信号分离

(2)图像去噪

(3)EEG数据分离

(4)fMRI数据处理

下面介绍两种算法进行ICA用于信号分离的实验验证:

第一种:

快速ICA算法

算法步骤:

(1)取任意初始矢量

,要求它满足

(令

=0)。

(2)求

,注意其中k为迭代序号,不是时间序列。

E(.)可以通过对z的各采样时刻值求均值来估计。

(3)将

归一化:

(4)如果

不接近1,则令k加1,回到步骤

(2)。

否则迭代结束。

输出最终的

作为

(5)提取独立分量:

(注:

具体原理可参考教材第99页。

实验程序:

%--------------------产生信号------------------------------

t=linspace(0,100,100);

s1=sin(t/2);

plot(s1)

s2=exp(-0.2*t).*cos(pi*t);

figure;

plot(s2);

s3=1/1000*t.^2.*cos(t/4).^2;

plot(s3);

%------------------信号进行混合------------------------------

A=[0.1,0.2,0.7;

0.2,0.6,0.2;

0.3,0.5,0.2];

%混合矩阵

s=[s1;

s2;

s3];

Y=A*s;

%进行信号混合

%-----------------去均值------------------------------------

meanValue=mean(Y'

);

Y=Y-diag(meanValue)*ones(size(Y));

%-----------------球化-------------------------------------

covarianceMatrix=cov(Y'

[U,V,W]=svd(covarianceMatrix);

%矩阵的SVD分解

x=diag(V);

x=x.^(-1/2);

V=diag(x);

Z=V*U'

*Y;

%---------------绘制的球化后的信号图------------------------

figure

plot(Z(1,:

));

plot(Z(2,:

plot(Z(3,:

%-------------盲源分离程序---------------------------------

p=zeros(3);

%存储每次得到的u1矢量

fori=1:

3

u1=rand(3,1);

a=sqrt(sum(u1.^2));

%产生初始矢量

u1=u1./a;

n=0;

m=1;

while(m>

1e-15)

u2=zeros(3,1);

forj=1:

100

y=u1'

*Z(:

j);

u2=u2+y^3*Z(:

end

u2=u2./100;

%得到迭代后的u2矢量

w3=zeros(3,1);

forl=1:

i-1

w3=w3+(u2'

*p(:

l))*p(:

l);

end

u2=u2-w3;

%进行矢量的施密特正交化,得到相互正交的向量

d=sqrt(sum(u2.^2));

u2=u2./d;

m=abs(u1'

*u2-1);

u1=u2;

n=n+1;

p(:

i)=u1;

end

q=p'

*Z;

%--------------------------绘制分离后的信号--------------------------------------

plot(q(1,:

plot(q(2,:

))

plot(q(3,:

运行程序得到的结果为:

解混矩阵p为:

p=

0.00270.9915-0.1302

0.4423-0.1180-0.8891

0.89690.05510.4389

源信号:

混合后的信号:

解混后的信号:

分析:

从上面的结果可以看出,分离出的信号幅度和顺序发生了改变,同源信号几乎一致。

第二种算法:

ICA的共轭下降法

原理:

这种方法以最小化互信息准则作为ICA的判据。

在信息论里,互信息是衡量随机变量间独立性的尺度,用负熵来表示互信息为:

其中J(y)表示y的负熵。

当y中各分量相互独立时,最小化互信息就等价于最大化各分离成分的负熵之和。

负熵可以由

近似。

其中,c为常数,v是具有0均值,单位方差的高斯变量,E表示期望运算,G是非线性非二次的函数,本实验中取

所以此问题转化为找出权值矩阵W,使分离出来的估计信号

能使函数

最大。

算法实现:

定义目标函数为:

其中,w为矩阵w的向量。

前面提到的负熵由前面的式子近似的条件是

是0均值单位方差的变量。

对于已经白化的观察信号x,这就相当于限制w的范数为1。

转化为无限制条件的优化问题,根据工程优化的相关知识,可以得到惩罚函数为:

F(w)的梯度为:

其中,

为常数,

为G的导数。

w的计算步骤如下:

1.设定初始点

,置

=

设定迭代次数为n=1000次;

2.若n=1000则停止迭代;

否则

,进行正交归一化;

其中步长

,(0<

<

1),且

满足条件:

3.

4.置k:

=k+1,转2.

算法程序:

%------------------------产生源信号并显示----------------------------------

s2=1/1000*t.^2.*cos(t/4).^2;

plot(s2)

s3=exp(-0.2*t).*cos(pi*t);

%-------------进行源信号混合---------------------------------------

0.2,0.4,0.4;

0.3,0.2,0.5];

%混合矩阵

%-----------去均值和球化-------------------------------------------

%球化后的矩阵

%------------显示球化后的信号-----------------------------

%---------------------盲源分离算法主程序----------------------------

symsyG%定义y和G为符号变量

G=1/4*y^4;

w1=rand(3,1);

w1=w1./sqrt(sum(w1.^2));

%产生初始的范数为1的随机向量

u=zeros(3,1);

g=diff(G);

y=w1'

i);

u=u+eval(g)*Z(:

a=0.1;

u=-u./100-a*w1;

d1=-u;

%产生初始的搜索方向向量d

%-----选择初始的步长minb-----------------

n=0;

c=a.^[0,1,2,3,4];

e=length(c);

while(n<

=1000)

minb=c

(1);

w2=w1+minb*d1;

h=0;

fork=1:

y=w2'

k);

h=h+eval(G);

minF=-h/100-a/2*(norm(w2)^2-1);

fork=2:

e

w2=w1+c(k)*d1;

forr=1:

r);

h=-h/100-a/2*(norm(w2)^2-1);

if(h<

minF)

minb=c(k);

minF=h;

%-------对迭代求得的向量进行正交归一,进行下一次迭代-------------

%w2为经过迭代求得的向量

w3=w3+(w2'

w2=w2-w3;

%w2进行正交化

w2=w2./sqrt(sum(w2.^2));

u1=zeros(3,1);

forj=1:

u1=u1+eval(g)*Z(:

u1=-u1./100-a*w2;

t=-norm(u1)^2/(d1'

*u);

b=max(t,0);

d2=-u1+b*d1;

n=n+1;

d1=d2;

w1=w2;

u=u1;

i)=w1;

%把求得满足条件的向量存储在p中

q=w1'

*Z

figure;

plot(q);

%绘制解混后的信号

运行结果:

求得的解混矩阵为:

0.0072-0.9369-0.3495

0.0778-0.34790.9343

0.99690.0339-0.0704

混合球化后的信号:

分离后的信号:

与快速ICA比较,得到的结果比其要好。

ICA的方法很多,这里不意义列举,其应用之一可以做图像分离,当混合图像是几个不相关图像的混合时,可以用ICA进行分离。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1