📄 lat6q.m
字号:
function eo = lat6q(input,d,lambda,eta,order,B);
% Quantized QR-array 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);
qf = zeros(M,1);
qb = zeros(M,1);
q = 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 = sqrt(xif);
xib = sqrt(xib);
xif = quantize_v(xif,B);
xib = quantize_v(xib,B);
xibo = xib;
for i=1:N
bo = b;
gamma = ones(M+1,1); % square-root of gamma denoted by gamma still
b(1) = input(i);
f(1) = input(i);
r(1) = d(i);
for m=1:M
A1 = [quantize(lambda^(1/2)*xibo(m),B) bo(m); quantize(lambda^(1/2)*(qf(m))',B) (f(m))'];
[c s] = givens(A1(1,1),A1(1,2));
c = quantize(c,B);
s = quantize(s,B);
B1 = A1*[c -s; conj(s) c];
qf(m) = quantize((B1(2,1))',B);
f(m+1) = quantize((B1(2,2))',B);
xib(m) = quantize(B1(1,1),B);
xibo(m) = xib(m);
A2 = [quantize(lambda^(1/2)*xib(m),B) b(m); quantize(lambda^(1/2)*(q(m))',B) (r(m))'; 0 gamma(m)];
[c s] = givens(A2(1,1),A2(1,2));
c = quantize(c,B);
s = quantize(s,B);
B2 = A2*[c -s; conj(s) c];
xib(m) = quantize(B2(1,1),B);
q(m) = quantize((B2(2,1))',B);
r(m+1) = quantize((B2(2,2))',B);
gamma(m+1) = quantize(B2(3,2),B); % square-root of conversion factor
A3 = [quantize(lambda^(1/2)*xif(m),B) f(m); quantize(lambda^(1/2)*(qb(m))',B) (bo(m))'];
[c s] = givens(A3(1,1),A3(1,2));
c = quantize(c,B);
s = quantize(s,B);
B3 = A3*[c -s; conj(s) c];
xif(m) = quantize(B3(1,1),B);
qb(m) = quantize((B3(2,1))',B);
b(m+1) = quantize((B3(2,2))',B);
ro(m+1) = quantize(r(m+1)*gamma(m+1),B);
end
eo(i) = quantize(r(M+1)/gamma(M+1),B);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -