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\n',1/MAX1,1/MAX2,1/MAX3)
disp('2nd order blocks - MATLAB design')
disp(SOSs)
w = 8; LSB = 2^-(w-1);
SOSq = SOSs;
SOSq(:,1:3) = LSB*round(SOSq(:,1:3)/LSB);
SOSq(:,5) = 2*LSB*round(.5*SOSq(:,5)/LSB);
SOSq(:,6) = LSB*round(SOSq(:,6)/LSB);
disp('2nd order blocks - quantized')
disp(SOSq)
Scaling factors for section 1, 2 and 3 : 0.0271663 , 0.229457 , 0.508501
2nd order blocks - MATLAB design
0.0272 0.0210 0.0272 1.0000 -1.5743 0.6496
0.2295 -0.2197 0.2295 1.0000 -1.5520 0.7965
0.5085 -0.6535 0.5085 1.0000 -1.5629 0.9396
2nd order blocks - quantized
0.0234 0.0234 0.0234 1.0000 -1.5781 0.6484
0.2266 -0.2188 0.2266 1.0000 -1.5469 0.7969
0.5078 -0.6563 0.5078 1.0000 -1.5625 0.9375
Graphics - Freqeuncy responses
[H1q,w] = freqz(SOSq(1,1:3),SOSq(1,4:6),N);
[H2q,w] = freqz(SOSq(2,1:3),SOSq(2,4:6),N);
[H3q,w] = freqz(SOSq(3,1:3),SOSq(3,4:6),N);
[b,a] = sos2tf(SOS,G);
H = freqz(b,a,N);
FIG1 = figure('Name','lab3_5 : Frequency responses of cauer lowpass and quantized filter in direct form II',...
'NumberTitle','off');
subplot(1,2,1),plot(w/pi,abs(H),w/pi,abs(H1q.*H2q.*H3q)), 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(H1q.*H2q.*H3q))), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H(e^{j\Omega})| in dB \rightarrow')
axis([0 1 -80 0]);
FIG2 = figure('Name','lab3_5 : Frequency responses of 2nd order sections in direct form II',...
'NumberTitle','off');
subplot(3,2,1),plot(w/pi,abs(H1/MAX1),w/pi,abs(H1q)), 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(H1q))), 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(H2q)), 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(H2q))), 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(H3q)), 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(H3q))), grid
xlabel('\Omega / \pi \rightarrow'), ylabel('|H_3(e^{j\Omega})| in dB \rightarrow')