📄 testbfdaf.m
字号:
% BFDAF used in a simple system identification application.
% By the end of this script the adaptive filter w
% should have the same coefficients as the unknown filter h.
clear all;
iter = 5000; % Number of samples to process
% Complex unknown impulse response
h = [.9 + i*.4; 0.7+ i*.2; .5; .3+i*.1; .1];
xt = 2*(rand(iter,1)-0.5); % Input signal, zero mean random.
% although xn is real, dn will be complex since h is complex
dt = filter(h,1,xt); % Unknown filter output
en = zeros(iter,1); % vector to collect the error
% Initialize BFDAF with a filter of 5 coef.
L = 3;
M = 5;
[W,x,dn,e,y,Px,w]=init_bfdaf(L,M);
%% Processing Loop
for (m=1:L:iter-L)
xn = xt(m:m+L-1,:);
dn = dt(m:m+L-1,:)+ 1e-3*rand;
% call BFDAF to calculate the filter output, estimation error
% and update the coefficients.
[W,x,y,e,Px,w]=asptbfdaf(M,x,xn,dn,W,0.05,1,1,0.98,Px);
% save the last error sample to plot later
en(m:m+L-1,:) = e;
end;
% display the results
subplot(2,2,1);stem([real(w) imag((w))]); grid;
xlabel('filter after convergence')
subplot(2,2,2);
eb = filter(.1, [1 -.9], en(1:m) .* conj(en(1:m)));
plot(10*log10(eb +eps ));grid
axis([0 5000 -80 0]);
ylabel('estimation error [dB]')
xlabel('Learning curve')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -