📄 myrls.m
字号:
function myRLS
f1=300; f2=1000; fs=8000; N=600; t0=0.02;
for n=1:N
x(n)=6*sin(2*pi*f1/fs*n);
s(n)=sin(2*pi*f2/fs*n);
end
a=1;x=x';s=s';
order=fix(t0*fs);
d=0.8*x;
y=d+s; e0=zeros(N,1); e=zeros(N,1); w=zeros(order,1); ryx=zeros(N,1);
z=10; p=z*eye(order,order);rxx=zeros(N,order); g=zeros(order,1);
for n=2:N
ryx(n)=((n-1)/n)*ryx(n-1)+(1/n)*y(n)*x(n);
end
for i=1:order
for n=(i+1):N
rxx(n,i)=((n-1)/n)*rxx(n-1,i)+(1/n)*x(n)*x(n-i);
end
end
xii=x(order+1-(order:-1:1));%1~order
R=xii'*xii;
for i=(order+2):N %
xii=x(i-(order:-1:1));%i-order~i-1 2~order+1 3~order+2
R=R+xii'*xii;
end
R=R/(N-order);
u0=max(eig(R));
u=0.99*(1/u0);
e2=zeros(N,1); w2=zeros(order,1); y2=zeros(order,1);d2=y;
for n=(order+1):N
x1=x(n:-1:n-order+1);
r=rxx(n,:)'; %order*1
g=(p*r)/(a+r'*p*r); %order*1
e0(n)=ryx(n)-r'*w;
w=w+g*e0(n); %order*1
p=(1/a)*(p-g*r'*p);
qq(n)=w'*x1;
e(n)=y(n)-qq(n-1);
x2=x1';
y2(n)=x2*w2;
e2(n)=d2(n)-y2(n);
w2=w2+u*x2'*e2(n);
end
plot(e);
figure;
plot(e2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -