partc.m

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

M
100
字号

% Lattice filters in finite precision
% Solves part C



clear all
close all

N = 500;
P = 200;
SNR = 30;
var_v = 10^(-SNR/10);

M = 10; % filter oder
channel = randn(M,1);
channel = channel/norm(channel);

learn2 = zeros(1,N);
learn3 = zeros(1,N);
learn5 = zeros(1,N);
learn6 = zeros(1,N);

L = 50;

eta = 1e6;   % usually large
lambda = 0.999;

B = 10 % number of bits

for j=1:L
   j
   input = randn(N,1);
   d = filter(channel,1,input) + sqrt(var_v)*randn(N,1);
   input(P) = input(P) + 1;

   disp('a priori lattice')
   e2 = lat2q(input,d,lambda,eta,M,B);    % a priori lattice
   
   disp('a priori lattice with error feedback')
   e3 = lat3q(input,d,lambda,eta,M,B);    % a priori with error feedback
   
   
   disp('normalized lattice')
   e5 = lat5q(input,d,lambda,eta,M,B);    % normalized lattice
   
   disp('array lattice')
   e6 = lat6q(input,d,lambda,eta,M,B);    % QR-based array lattice

   learn2 = learn2 + abs(e2).^2;
   learn3 = learn3 + abs(e3).^2;
   learn5 = learn5 + abs(e5).^2;
   learn6 = learn6 + abs(e6).^2;
   
 end

 learn2= 10*log10(learn2/L);
 learn3= 10*log10(learn3/L);
 learn5= 10*log10(learn5/L);
 learn6= 10*log10(learn6/L);

 figure
subplot(221)
plot(1:N,learn2,'b');
ylabel('dB')
title('a-priori');
axis tight
grid
 
subplot(222)
plot(1:N,learn3,'b');
ylabel('dB')
title('a-priori error feedback');
axis tight
grid

subplot(223)
plot(1:N,learn5,'b');
ylabel('dB')
title('normalized');
axis tight
grid

subplot(224)
plot(1:N,learn6,'b');
ylabel('dB')
title('array');
axis tight
grid


figure
plot(1:N,learn2,'b',1:N,learn3,'m',1:N,learn5,'g',1:N,learn6,'y')
xlabel('i')
ylabel('dB')
legend('a-priori','a-priori error feedbk','normalized','array');
axis tight
grid

⌨️ 快捷键说明

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