ica_kurt.m
来自「这是一个基于峰度的ICA算法」· M 代码 · 共 35 行
M
35 行
function [w,z,c,kurtos1,kurtos2,kurtos3]=ica_kurt(x)
[vectorSize, numSamples] = size(x);
[V,z]=whiten(x);
w=[];kurtos1=[];kurtos2=[];kurtos3=[];
for p=1:vectorSize;
w(:,p)=[1;zeros(vectorSize-1,1)];
deta=1;k=0;
while deta>=0.01
if k>30
break
end
wk=sign(kurt((w(:,p)'*z)'))*(z*((z'*w(:,p)).^ 3)) / numSamples - w(:,p);
su=0;
k=k+1;
c(p,1)=k;
for j=1:p-1
su=su+wk'*w(:,j)*w(:,j);
end
wk=wk-su;%su是对求和sum的简写
wk=wk/norm(wk,2);
switch p
case 1
w1(:,k)=wk;
kurtos1(1,k)=kurt((wk'*z)');
case 2
w2(:,k)=wk;
kurtos2(1,k)=kurt((wk'*z)');
case 3
w3(:,k)=wk;
kurtos3(1,k)=kurt((wk'*z)');
end
deta=norm(w(:,p)-wk,2);
w(:,p)=wk;
end
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?