www.gusucode.com > 无线通信FPGA设计源码程序 > 无线通信FPGA设计源码程序/matlab代码/matlab/c11/WHTlms.m

    u = 0.00005;    %迭代步长
n = 64;  %WHT-LMS的抽头数必须是2的幂
h = zeros(n ,1);    %抽头系数,n为抽头个数
x = zeros(1 ,n);    %滤波器抽头输入
%% 注意:读者需要给出输入信号xd, 参考信号d,运行本程序就能得到相应仿真图
e = zeros(n ,1);       %估计误差
y = zeros(len , 1);  %估计信号,len为数据长度
beita = 0.8;    %
p = zeros(n, 1);   %信号功率估计
for i = 1 : len
    x(1,2:end) = x(1,1:end-1);
    x(1,1) = xd(i,1);   %xd为输入信号
    xh = WHT(x, n); %完成WHT变换
    p = p*beita + (1-beita)*abs(xh).^2;   %功率估计
    y(i) = xh.'*conj(h);       %估计信号
    e(i) = d(i) - y(i);       %d为参考信号
    h = h + 2*u.*conj(e(i))*xh./(p+0.02);   %抽头系数更新
end
for i=1:len;
    err(i1)=abs(e(i).^2);    %统计均方误差
end