📄 run_dctlmseq.m
字号:
function run_dctlmseq(rp)
% Computer Experiment
% Section 10.5, Adaptive Filter Theory, 3rd edition
% Adaptive equalization
disp('dctlmseq')
seed = 0:(rp.Niter-1);
h = [1/2*(1+cos(2*pi/rp.T*((1:3) - 2)))];
M = rp.M;
alpha = 1 / 2 / M;
Lambdax = [];
Npred = rp.Ndata + length(h) - 1;
Wx = zeros(M, Npred-M+1);
E = [];
for iter = 1:rp.Niter,
disp([rp.T iter]);
rand( 'seed', seed(iter));
randn('seed', seed(iter));
a = 2*(rand(rp.Ndata, 1) > 0.5) -1;
Xi = conv(a, h);
Xi = Xi + sqrt(rp.var_v)*randn(length(Xi), 1);
Y = [zeros(rp.tau, 1) ; a(1:rp.Ndata)];
if rp.type == 'A',
disp('type A')
[Wo, e, Lambda] = dct_lms(Xi, Y, M, alpha, rp.beta, rp.gamma, rp.verbose);
end
if rp.type == 'C',
disp('type C')
[Wo, e, Lambda] = dct_lms_C(Xi, Y, M, alpha, rp.beta, rp.gamma, rp.verbose);
end
Wx = Wx + Wo(:, M:Npred); % ignore 1st M-1 incomplete weight vectors
E = [E; e(M+1:Npred).'];
Lambdax = [Lambdax; Lambda(M, :)];
end; % for iter
Wx = Wx / rp.Niter;
eval(['save ' rp.name])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -