📄 lms.m
字号:
K = 1; % 独立仿真次数
N = 4000; % 每次仿真样本总数
A = [1.0000 0.9966 0.9988 0.9982 0.9985;...
0.9966 1.0000 0.9963 0.9995 0.9889;...
0.9988 0.9963 1.0000 0.9972 0.9968;...
0.9982 0.9995 0.9972 1.0000 0.9996;...
0.9985 0.9989 0.9968 0.9996 1.000];
F = 10e3;
n=0:0.0001:0.3999; %采样频率为10kHz,4000个点
s1=sign(cos(2*pi*155*n));
s2=sin(2*pi*800*n);
s3=sin(2*pi*90*n);
s4=sin(2*pi*300*n+6*cos(2*pi*60*n));
s5=-2*rand(1,4000)+1; %仿真5个源信号
s = [s1;s2;s3;s4;s5];
u = 60e-4;
E = zeros(K,N);
for k = 1 : K
% A=randn(5,5);
W = rand(5)*eye(5);
T = W;
for n = 1 : N
C = abs(W*A);
C1max = max(C);
C2max = max(C.');
E1 = 0;
E2 = 0;
for i = 1:5
E1 = E1 + sum(C(i,:))/C2max(i) - 1;
E2 = E2 + sum(C(:,i))/C1max(i) - 1;
end
E(k,n) = E1 + E2;
ss = s(:,n);
x = A*ss;
y = W*x;
g = tanh(y);
W = W + u*(eye(5)-y*y'+g*y'-y*g')*W;
end
end
% figure;
% plot(E');
% hold on
% plot(mean(E),'r.')
% title(['盲信号分离的串音误差(步长=',num2str(u),')']);
% xlabel('样本点')
% ylabel('串音误差')
sr = W*A*s;
start=3000;
figure
subplot(5,1,1)
plot(sr(1,start+1:start+200));
ylabel('sr1')
title('分离得到的信号')
subplot(5,1,2)
plot(sr(2,start+1:start+200));
ylabel('sr2')
subplot(5,1,3)
plot(sr(3,start+1:start+200));
ylabel('sr3')
subplot(5,1,4)
plot(sr(4,start+1:start+200));
ylabel('sr4')
subplot(5,1,5)
plot(sr(5,start+1:start+200));
ylabel('sr5')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -