Contents
State-space representation
z = [-j j]; p = [.5 -.25];
[A,B,C,D] = zp2ss(z,p,1);
ssr = struct('A',A,'B',B,'C',C,'D',D,'S',[0;0],'form','zp2ss');
Filtering
N = 50;
x = [1 zeros(1,N)];
[y,S] = ssr_filter(ssr,x);
Transform to diagonal form (parallel form)
[V,lambda] = eig(A);
V = [V(:,1)/V(1,1) V(:,2)/V(1,2)];
M = V;
M_1 = inv(M);
L = M_1*A*M;
ssr(2).A = L;
ssr(2).B = M_1*B;
ssr(2).C = C*M;
ssr(2).D = D;
ssr(2).S = [0;0];
ssr(2).form = 'diagonal';
[yd,S] = ssr_filter(ssr(2),x);
Compare impulse responses
fprintf('\n')
fprintf('lab2_2 : Impulse responses of 2nd order systems\n')
fprintf(' n y[n] yd[n] \n')
for n=1:10
fprintf('%2i : %-1.5e %-1.5e \n',n,y(n),yd(n))
end
lab2_2 : Impulse responses of 2nd order systems
n y[n] yd[n]
1 : 1.00000e+000 1.00000e+000
2 : 2.50000e-001 2.50000e-001
3 : 1.18750e+000 1.18750e+000
4 : 3.28125e-001 3.28125e-001
5 : 2.30469e-001 2.30469e-001
6 : 9.86328e-002 9.86328e-002
7 : 5.34668e-002 5.34668e-002
8 : 2.56958e-002 2.56958e-002
9 : 1.31073e-002 1.31073e-002
10 : 6.48880e-003 6.48880e-003