📄 zaixianjianmonew.m
字号:
clc;
clear all;
close all;
Lw=128;
Ls=64;
M1=5;
M2=10;
M3=191;
%count=1000;
t=0:0.0005:1;
p=2*sin(2*pi*t*300);
x=awgn(p,30);
datelong=length(x);
v=sqrt(0.01)*randn(1,datelong);
muw=0.0005;
mus=0.0005;
w=zeros(1,Lw);
ss=zeros(1,Ls);
d=zeros(1,datelong);
y=zeros(1,datelong);
vn=zeros(1,datelong);
y1=zeros(1,M1);
yn=zeros(1,datelong);
e=zeros(1,datelong);
x1=zeros(1,Lw);
x2=zeros(1,Ls);
xx1=zeros(1,M2);
xn=zeros(1,datelong);
xn1=zeros(1,Lw);
v1=zeros(1,Ls);
v2=zeros(1,Ls);
e_max=datelong; % maximum #of epochs
pi=3.14;
epoch=1;
a=[0.05 -0.001 0.001 0.8 0.6 -0.2 -0.5 -0.1 0.4 -0.05];
b=[0.05 -0.01 0.95 0.01 -0.9];
while epoch<e_max
% shift new input into array U1
for i=2:Lw
x1(Lw-i+2)=x1(Lw-i+1);
end
x1(1)=x(epoch);
for i=1:M2
xx1(i)=x1(i);
end
% for i=1:Ls
% x2(i)=x1(i);
% end
for i=2:Ls
x2(Ls-i+2)=x2(Ls-i+1);
end
x2(1)=x(epoch);
% for i=2:Lw
% for j=1:Ls
% xn1(i)=xn1(i)+x2(i+j-1)*ss(j);
% end
% end
for i=2:Lw
xn(Lw-i+2)=xn(Lw-i+1);
end
% xn1(1)=xn(epoch);
xn(1)=dot(x2,ss);
y(epoch)=dot(x1,w);
d(epoch)=dot(xx1,a);
for i=2:M1
y1(M1-i+2)=y1(M1-i+1);
end
y1(1)=y(epoch);
yn(epoch)=dot(y1,b);
for i=2:Ls
v1(Ls-i+2)=v1(Ls-i+1);
end
v1(1)=v(epoch);
for i=1:M1
vv1(i)=v1(i);
end
for i=2:Ls
v2(Ls-i+2)=v2(Ls-i+1);
end
v2(1)=v(epoch);
vvn(epoch)=dot(v1,ss);
vn(epoch)=dot(vv1,b);
e(epoch)=d(epoch)+yn(epoch)-vn(epoch);
f(epoch)=e(epoch)-vvn(epoch);
for n=1:Lw
% w(n)=w(n)-2*muw*e(epoch)*xn1(n);
w(n)=w(n)-2*muw*e(epoch)*xn(n);
end
for n=1:Ls
%ss(n)=ss(n)-2*mus*f(epoch)*v2(n);
ss(n)=ss(n)-2*mus*f(epoch)*v2(n);
end
% for i=1:Lw
% xn1(i)=0;
% end
% for i=1:Ls
% v2(i)=0;
% end
epoch=epoch+1;
end
figure(1)
freqz(b,1)
title('s(z)的频率响应');
hold on
% figure(2)
freqz(ss,1);
title('ss(z)的频率响应');
%
% figure(3)
% subplot(211);
% plot(t,x);
% title('初级通道输入');
% subplot(212);
% plot(t,d);
% title('初级通道输出');
figure(2)
subplot(211)
plot(t,x);
title('初级通道输入');
subplot(212)
plot(t,e);
title('误差信号')';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -