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

📄 lms.m

📁 盲信号分离的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 + -