www.pudn.com > adaptivefiltering.rar > run_qrd_lsl.m
function run_qrd_lsl(rp)
Niter = rp.Niter;
Ndata = rp.Ndata;
seed = 0:(Niter-1);
verbose = 0;
lambda = rp.lambda;
var_v = rp.var_v;
delta = rp.delta;
T = rp.T
h = [1/2*(1+cos(2*pi/T*((1:3) - 2)))];
M = rp.M;
% because we do not truncate and shift the convolved input
% sequence, the delay of the desired output sequence wrt
% the convolved input sequence need only be the delay
% introduced by the ideal weight vector centred at n=5
tau = rp.tau;
Npred = (Ndata + length(h) - 1) - 1; % discard terminal iteration in n
Wx = zeros(M+1, Npred-M+1);
E = [];
Gamma = [];
for iter = 1:Niter,
iter
rand('seed', seed(iter));
randn('seed', seed(iter));
a = [2*(rand(Ndata, 1) > 0.5) - 1];
Xi = conv(a, h);
Xi = Xi + sqrt(var_v)*randn(length(Xi), 1);
Y = [zeros(tau, 1) ; a(1:Ndata)];
[Wo, e, gamma] = qrd_lsl(Xi, Y, M, verbose, lambda, delta);
Wx = Wx + Wo(:, M:Npred); % ignore 1st M-1 incomplete weight vectors
E = [E ; e((tau+1):Npred)];
Gamma = [Gamma ; gamma];
save tmp.mat iter Wx E Gamma;
end; % for iter
Wx = Wx / Niter;
eval(['save ', rp.name])