lat1q.m

来自「This is mat lab code for adaptive lattic」· M 代码 · 共 51 行

M
51
字号

function eo = lat1q(input,d,lambda,eta,order,B);

% Quantized a posteriori-based RLS lattice filter
% returns the a-priori output error sequence

N = max(size(input));
M = order;

% Initialization of M-order vectors
gamma = ones(M+1,1);
b = zeros(M,1);
delta = zeros(M,1);
rho = zeros(M,1);
xif = (1/eta*lambda*lambda)*ones(M,1);
xib = (1/eta*lambda*lambda)*ones(M,1);
for m=0:M-1
  xib(m+1) = xib(m+1)/lambda^m;
end

xif = quantize_v(xif,B);
xib = quantize_v(xib,B);

for i=1:N
  gammao = gamma;          
  bo = b;
  xibo = xib;
  gamma = ones(M,1);
  b(1) = input(i);
  f(1) = input(i);
  r(1) = d(i);
  for m=1:M
     xif(m) = quantize(quantize(lambda*xif(m),B) + quantize((abs(f(m)))^2/gammao(m),B),B);
     xib(m) = quantize(quantize(lambda*xib(m),B) + quantize((abs(b(m)))^2/gamma(m),B),B);
                    
     delta(m) = quantize(quantize(lambda*delta(m),B) + quantize((f(m))'*(bo(m))/gammao(m),B),B);
     rho(m) = quantize(quantize(lambda*rho(m),B) + quantize((r(m))'*(b(m))/gamma(m),B),B);
      
     gamma(m+1) = quantize(quantize(gamma(m) - quantize(abs(b(m))^2/xib(m),B),B),B);
     kappab(m) = quantize(delta(m)/xif(m),B);
     kappaf(m) = quantize((delta(m))'/xibo(m),B);
     kappa(m) = quantize((rho(m))'/xib(m),B);
        
     b(m+1) = quantize(bo(m) - quantize(kappab(m)*f(m),B),B);
     f(m+1) = quantize(f(m) - quantize(kappaf(m)*bo(m),B),B);
     r(m+1) = quantize(r(m) - quantize(kappa(m)*b(m),B),B);
  end
  eo(i) = quantize(r(M+1)/gamma(M+1),B);
 end

⌨️ 快捷键说明

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