📄 ftf.m
字号:
clear all
clc
N=200;
M=2;
v=sqrt(1/2)*randn(1,N);
u(1)=v(1);
u(2)=1.558*u(1)+v(2);
d(1)=0.2*u(1);
d(2)=0.2*u(2)+0.7*u(1);
for n=3:N
u(n)=1.558*u(n-1)-0.81*u(n-2)+v(n);
d(n)=0.2*u(n)+0.7*u(n-1);
end
%采用快速横向滤波算法(FTF)
aM=zeros(1,M);bM=zeros(1,M);kM=zeros(1,M);
wM=zeros(1,M);gM=zeros(1,M);k=0;
r=ones(M+1,M);epsf=1;epsb=1;
for n=3:N
x1=[u(n) u(n-1)];
x2=[u(n-1) u(n-2)];
ef(n,n-1)=u(n)-x2*aM';
ef1=ef(n,n-1);
ef(n,n)=r(M,n-1)*ef(n,n-1);
ef2=ef(n,n);
epsf0=epsf;
epsf=epsf+ef1*ef2;
aM=aM+ef(n,n-1)*gM;
r(M+1,n)=epsf0/epsf*r(M,n-1);
kN1=[0 gM]+ef2/epsf*[1 -aM];
for m=1:M
kN(m)=kN1(m);
end
k=kN1(end);
eb(n,n-1)=u(n-M)-x1*bM';
eb1=eb(n,n-1);
r(M,n)=1/(1-k*eb1)*r(M+1,n);
eb(n,n)=r(M,n)*eb(n,n-1);
eb2=eb(n,n);
epsb0=epsb;
epsb=epsb+eb2*eb1;
gM=[kN+k*bM]*r(M,n)/r(M+1,n);
bM=bM+gM*eb1;
e(n,n-1)=d(n)-x1*wM';
e1=e(n,n-1);
wM=wM+gM*e1;
Recordedw(n,1:M)=wM;
end
subplot(2,1,1),plot(Recordedw(:,1))
subplot(2,1,2),plot(Recordedw(:,2))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -