Contents
Scaling with respect to the frequency response
N = 1024;
[H1,w] = freqz(SOS(1,1:3),SOS(1,4:6),N);
[H2,w] = freqz(SOS(2,1:3),SOS(2,4:6),N);
[H3,w] = freqz(SOS(3,1:3),SOS(3,4:6),N);
MAX1 = max(abs(H1));
MAX2 = max(abs(H2.*H1/MAX1));
MAX3 = max(abs(H3.*(H2/MAX2).*(H1/MAX1)));
SOSs =SOS;
SOSs(1,1:3) = SOSs(1,1:3)/MAX1;
SOSs(2,1:3) = SOSs(2,1:3)/MAX2;
SOSs(3,1:3) = SOSs(3,1:3)/MAX3;
fprintf('scaling factors for section 1, 2 and 3 : %g , %g , %g\n',1/MAX1,1/MAX2,1/MAX3)
scaling factors for section 1, 2 and 3 : 0.0271663 , 0.229457 , 0.508501
Normal form with quantized coefficients
w = 8; LSB = 2^-(w-1);
Form = 'NF2';
for k=1:3
ssrq(k) = ssr_ABCD(SOSs(k,1:3),SOSs(k,4:6),Form);
ssrq(k).A = LSB*round(ssrq(k).A/LSB);
ssrq(k).C = LSB*round(ssrq(k).C/LSB);
ssrq(k).D = LSB*round(ssrq(k).D/LSB);
end
disp('Matrices A')
disp([ssrq(1).A, ssrq(2).A, ssrq(3).A])
disp('Vectors B')
disp([ssrq(1).B, ssrq(2).B, ssrq(3).B])
disp('Vectors C')
disp([ssrq(1).C, ssrq(2).C, ssrq(3).C])
disp('Skalars D')
disp([ssrq(1).D, ssrq(2).D, ssrq(3).D])
Matrices A
0.7891 -0.1719 0.7734 -0.4375 0.7813 -0.5703
0.1719 0.7891 0.4375 0.7734 0.5703 0.7813
Vectors B
0 0 0
1 1 1
Vectors C
-0.3438 0.0625 -0.3438 0.1328 -0.2422 0.1406
Skalars D
0.0234 0.2266 0.5078
Impulse responses
x = [1 zeros(1,2*N-1)];
hq = zeros(3,2*N); Hq = zeros(3,2*N);
for k=1:3
[hq(k,:),S] = ssr_filter(ssrq(k),x);
Hq(k,:) = fft(hq(k,:));
end
Hq = Hq(:,1:N);
[b,a] = sos2tf(SOS,G);
[H,w] = freqz(b,a,N);
Graphics - Frequency responses
FIG1 = figure('Name','lab3_6 : Frequency responses of cauer lowpass and qunatized system',...
'NumberTitle','off');
subplot(1,2,1),plot(w/pi,abs(H),w/pi,abs(Hq(1,:).*Hq(2,:).*Hq(3,:))), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H(e^{j\Omega)}| \rightarrow')
axis([0 1 0 1]);
subplot(1,2,2),plot(w/pi,20*log10(abs(H)),w/pi,20*log10(abs(Hq(1,:).*Hq(2,:).*Hq(3,:)))), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H(e^{j\Omega})| in dB \rightarrow')
axis([0 1 -80 0]);
FIG2 = figure('Name','lab3_6 : Frequency responses of quantized 2nd order blocks ',...
'NumberTitle','off');
subplot(3,2,1),plot(w/pi,abs(H1/MAX1),w/pi,abs(Hq(1,:))), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H_1(e^{j\Omega)}| \rightarrow')
subplot(3,2,2),plot(w/pi,20*log10(abs(H1/MAX1)),w/pi,20*log10(abs(Hq(1,:)))), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H_1(e^{j\Omega})| in dB \rightarrow')
subplot(3,2,3),plot(w/pi,abs(H2/MAX2),w/pi,abs(Hq(2,:))), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H_2(e^{j\Omega)}| \rightarrow')
subplot(3,2,4),plot(w/pi,20*log10(abs(H2/MAX2)),w/pi,20*log10(abs(Hq(2,:)))), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H_2(e^{j\Omega})| in dB \rightarrow')
subplot(3,2,5),plot(w/pi,abs(H3/MAX3),w/pi,abs(Hq(3,:))), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H_3(e^{j\Omega)}| \rightarrow')
subplot(3,2,6),plot(w/pi,20*log10(abs(H3/MAX3)),w/pi,20*log10(abs(Hq(3,:)))), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H_3(e^{j\Omega})| in dB \rightarrow')