Contents
2nd order system
b = [1 2 1]; a = [1 -1.4 .74];
h = filter(b,a,[1 zeros(1,100)]);
b = b / sqrt(sum(h.^2));
ssr = ssr_ABCD(b,a,'DF2');
l2 scaling of states
if strcmp(ssr.form,'DF2')
K = [1+a(3) -a(2); -a(2) 1+a(3)]/((1-a(3))*(1-a(2)+a(3))*(1+a(2)+a(3)));
elseif strcmp(ssr.form,'NF2')
p = roots(a); z = p(1);
K11 = 1/(1-abs(z)^2) - real(1/(1-z^2)); K12 = - imag(1/(1-z^2));
K22 = 1/(1-abs(z)^2) + real(1/(1-z^2));
K = .5*[K11 K12; K12 K22];
else
fprintf('lab5_2 : no match - ssr.form = %s\n',ssr.form)
end
T = [sqrt(K(1,1)) 0; 0 sqrt(K(2,2))]; T_1 = inv(T);
ssr.A = T_1*ssr.A*T; ssr.B = T_1*ssr(1).B; ssr.C = ssr.C*T;
Quantization
w = 8;
ssr = ssr_quant2c(ssr,w);
Simulation
N1 = 100; N2 = 31;
f = zeros(2,N1); f(:,2) = ssr.B;
g = zeros(2,N1); g(:,2) = ssr.C';
Ap = eye(2);
for n = 3:N1
Ap = Ap*ssr.A;
f(:,n) = Ap*ssr.B;
g(:,n) = (ssr.C*Ap)';
end
hf = zeros(1,N1);
hg = zeros(1,N1);
for n=1:N1
hf(n) = ssr.C*f(:,n);
hg(n) = g(:,n)'*ssr.B;
end
hf(1) = hf(1) + ssr.D;
hg(1) = hg(1) + ssr.D;
h = hf;
Ef1 = sum(f(1,:).^2); Ef2 = sum(f(2,:).^2);
Eg1 = sum(g(1,:).^2); Eg2 = sum(g(2,:).^2);
Eh = sum(h.^2);
fprintf('\nlab5_2 (%s)\n',ssr.form)
fprintf('Ef1 = %g , Eg1 = %g \n',Ef1,Eg1)
fprintf('Ef2 = %g , Eg2 = %g \n',Ef2,Eg2)
fprintf('Eh = %g \n',Eh)
lab5_2 (DF2q)
Ef1 = 1.01428 , Eg1 = 3.49005
Ef2 = 1.01428 , Eg2 = 6.32687
Eh = 1.01637
Graphics - Impulse responses
FIG1 = figure('Name',['lab5_2 : f and g (',ssr.form,')'],...
'NumberTitle','off','Units','normal','Position',[.3 .3 .65 .55]);
subplot(2,2,1),stem(0:N2-1,f(1,1:N2),'filled')
axis([0 N2 -2 2]); grid;
xlabel('n \rightarrow'), ylabel('f_1[n] \rightarrow')
title('Partial impulse response')
subplot(2,2,3),stem(0:N2-1,f(2,1:N2),'filled')
axis([0 N2 -2 2]); grid;
xlabel('n \rightarrow'), ylabel('f_2[n] \rightarrow')
title('Partial impulse response')
subplot(2,2,2),stem(0:N2-1,g(1,1:N2),'filled')
axis([0 N2 -2 2]); grid;
xlabel('n \rightarrow'), ylabel('g_1[n] \rightarrow')
title('Partial impulse response')
subplot(2,2,4),stem(0:N2-1,g(2,1:N2),'filled')
axis([0 N2 -2 2]); grid;
xlabel('n \rightarrow'), ylabel('g_2[n] \rightarrow')
title('Partial impulse response')
FIG2 = figure('Name',['lab5_2 : Impulse response - ',ssr.form],...
'NumberTitle','off','Units','normal','Position',[.3 .3 .65 .55]);
stem(0:N2-1,hf(1:N2),'filled')
axis([0 N2 -1 1]); grid;
xlabel('n \rightarrow'), ylabel('h[n] \rightarrow')
title('Impulse response')