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