blindsignlms.m

来自「自编:张贤达《数字信号处理》习题4.26的MATLAB程序。加入了一个GUI界面」· M 代码 · 共 31 行

M
31
字号
function [DivideOut,VError]=BlindSignLMS(InSign,MixMatrix,StepLen)
%InSign---s(n)
%MixMatrix---A
%StepLen---μ
%DivideOut---y(n)
%VError---串音误差
%
[mS,nS]=size(InSign);
[mM,nM]=size(MixMatrix);
if (mM~=nM)
    msgbox('Lengh of Matrix dimensions must equal!');
    error('Lengh of Matrix dimensions must equal!');
elseif (nM~=mS)
    msgbox('Matrix dimensions not competible!');
    error('Matrix dimensions not competible!');
else
    VError=zeros(1,nS);
    DivideOut=zeros(mS,nS);
    W=zeros(mM,nM);
    for i=1:1:mM
        W(i,i)=1;
    end
    X=MixMatrix*InSign;
    for i=1:1:nS
        DivideOut(:,i)=W*X(:,i);
        Y=DivideOut(:,i);
        G=Y.^3;
        W=W+StepLen*(G*Y'-Y*G')*W;
        VError(i)=VoiceError(W*MixMatrix);
    end
end

⌨️ 快捷键说明

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