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 + -
显示快捷键?