⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bss.m

📁 这是盲信号的代码 都已经通过编译了 做这方面的同仁可以参考一下 我觉得蛮惯用的
💻 M
字号:
%函数定义:
function W=BSS(X)
%W=BSS(X)为分离阵W的离线批处理ICA学习算法
%输入宗量:X
%输出宗量:W
%调用函数:


W(:,:,1)=[-2.0625,0.071422;0.18782,1.2263];                                     %给定分离阵W随机初值W(1)
Y(:,:,1)=W(:,:,1)*X;                                                            %得到Y的初值Y(1)                               
m41(1)=mean(Y(1,:,1).^4);
m42(1)=mean(Y(2,:,1).^4);
m21(1)=mean(Y(1,:,1).^2);
m22(1)=mean(Y(2,:,1).^2);
k1(1)=m41(1)/(m21(1).^2)-3;
k2(1)=m42(1)/(m22(1).^2)-3;
j1(1)=sign(k1(1));
j2(1)=sign(k2(1));
J(:,:,1)=diag([j1(1),j2(1)]);
Q=0;
T=length(X);
for i=1:T
    Q=Y(:,i,1)*Y(:,i,1)'+J(:,:,1)*tanh(Y(:,i,1))*Y(:,i,1)'+Q;
end
I=diag([1,1]);
F(:,:,1)=I-Q/T;                                                                 %计算估计函数F(1)
D(:,:,1)=F(:,:,1)*W(:,:,1);                                                    
a(1)=0.0001;                                                                    %设步幅初值a(1)为0.05
DW(:,:,1)=a(1)*D(:,:,1);                                                        %计算W(1)的"微小变化"DW(1)
W(:,:,2)=W(:,:,1)+DW(:,:,1);                                                    %开始迭代,设迭代次数为800次
%for k=2:20000                                                                     
for k=2:20
    Y(:,:,k)=W(:,:,k)*X;
    m41(k)=0.999*m41(k-1)+0.001*(norm(Y(1,:,k)).^4);
    m42(k)=0.999*m42(k-1)+0.001*(norm(Y(2,:,k)).^4);
    m21(k)=0.999*m21(k-1)+0.001*(norm(Y(1,:,k)).^2);
    m22(k)=0.999*m22(k-1)+0.001*(norm(Y(2,:,k)).^2);
    k1(k)=m41(k)/(m21(k).^2)-3;
    k2(k)=m41(k)/(m21(k).^2)-3;
    j1(k)=sign(k1(k));
    j2(k)=sign(k2(k));
    J(:,:,k)=diag([j1(k),j2(k)]);
    Q=0;
    for i=1:T
        Q=Y(:,i,k)*Y(:,i,k)'+J(:,:,k)*tanh(Y(:,i,k))*Y(:,i,k)'+Q;
    end
    F(:,:,k)=I-Q/T;
    D(:,:,k)=F(:,:,k)*W(:,:,k);
    DW(:,:,k)=a(1)*D(:,:,k);
    W(:,:,k+1)=W(:,:,k)+DW(:,:,k);
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -