lms_eml_samplebase.m

来自「各种滤波器」· M 代码 · 共 53 行

M
53
字号
function y=lms_eml_samplebase(x,d) %#eml
%% filter state
persistent fifo;
persistent h;

%% define fi object 
ISFI=isfi(x);
if ISFI
    T=numerictype(x);
    y=fi(0,T);
    e=fi(0,T);
else
    y=0;
    e=0;
end
%% filter parameter
L=32;
if ISFI
    mu=fi(0.01,1,16);
else
    mu=0.01;
end

%% initialize
if isempty(h)
    if ISFI
        h=fi(zeros(L,1),1,16,14);
    else
        h=zeros(L,1);
    end
end
if isempty(fifo)
    if ISFI
        fifo=fi(zeros(L,1),T);
    else
        fifo=zeros(L,1);
    end
end
%% buffer fifo update
for k=2:L
    fifo(k)=fifo(k-1);
end
fifo(1)=x;
%% filtering
for k=1:L
    y=y+fifo(k)*h(k);
end
e=d-y;
%% filer coefficient update
for k=1:L
    h(k)=h(k)+mu*e*fifo(k);
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?