资源描述
Swinburne University of Technology
Faculty of Engineering and Industrial Sciences
EEE80003 Lab 1
\
Cascade Realization
The factored form of a casual FIR transfer function H(z) of order M-1, as given below:
(1)
can be determined from its polynomial form representation given by:
(2)
This factored form given in (1) can then be utilized to realize H(z) in a cascade form. The Matlab function below achieves this conversion. For this first part, set den to 1 in accordance to equation (2).
function [sos] = rat2sos(num,den)
% [sos] = rat2sos(num,den)
% Conversion of a rational transfer function
% to its factored form
% Adapted from Mitra 2000
% Output
% =====
% sos : second order systems
% Input
%=====
% num: numerator of the rational function
% den: denominator of the rational function
% Find the zeros and poles
[z,p,k] = tf2zp(num,den);
% then find the SOS matrix, you may also use the tf2sos function directly, for more recent versions of MATLAB.
sos = zp2sos(z,p,k);
The output is arranged in the follow fashion:
Q1: Using the function rat2sos develop a cascade realization of the following FIR transfer function:
Sketch the block diagram of the cascade realization. Is H1(z) a linear-phase transfer function?
Firstly, using the function rat2sos find the SOS matrix of :
Q1.m:
num=[2 10 23 34 31 16 4];
% num : numerator of the rational function
den=[1 0 0 0 0 0 0];
% den : denominator of the rational function
sos=rat2sos(num,den)
% Conversion of a rational transfer function
% to its factored form
% sos : second order systems
h=impz(num,den);
figure(1);stem(h)
% make the Impulse Response plot of h(n) in figure (1)
xlabel('n');ylabel('h(n)')
% the xlabel of figure(1) is 'n', and ylable is 'h(n)'
title('Impulse Respone')
% the title of figure(1) is 'Impulse Response'.
Run Q1.m, then we can get the SOS matrix and impulse response plot as following:
>> Q1
sos =
2.0000 6.0000 4.0000 1.0000 0 0
1.0000 1.0000 2.0000 1.0000 0 0
1.0000 1.0000 0.5000 1.0000 0 0
which means ,
where , , .
From the impulse response plot, we can see that is not a linear-phase transfer function. Because if a linear phase is desired, the filter coefficients must satisfy the constraint.But the coefficients of doesn’t satisfy this.
There are 6 possible cascade forms for this FIR filter, and Block diagram of the cascade realization are showed below:
x(n)
y(n)
2
6
4
2
0.5
6
x(n)
y(n)
2
6
4
0.5
2
6
x(n)
y(n)
2
6
2
4
0.5
6
x(n)
y(n)
2
6
0.5
4
2
6
x(n)
y(n)
2
6
2
0.5
4
6
x(n)
y(n)
2
6
0.5
2
4
6
Q2: Next, develop a cascade realization of the following FIR transfer function:
Sketch the signal flow graph of the cascade realization. Is H2(z) a linear phase transfer function? Using MATLAB, obtain the poles-zeros diagram for H2(z), consider the m-function zplane.
Firstly, using the function rat2sos find the SOS matrix of:
Q2.m:
num=[6 31 74 102 74 31 6];
% num : numerator of the rational function
den=[1 0 0 0 0 0 0];
% den : denominator of the rational function
sos=rat2sos(num,den)
% Conversion of a rational transfer function
% to its factored form
% sos : second order systems
h=impz(num,den);
figure(1);stem(h)
% make the Impulse Response plot of h(n) in figure (1)
xlabel('n');ylabel('h(n)')
% the xlabel of figure(1) is 'n', and ylable is 'h(n)'
title('Impulse Respone')
% the title of figure(1) is 'Impulse Response'
[z,p]=tf2zp(num,den);
% Find the zeros and poles
figure(2);zplane(z,p)
% make the poles-zeros diagram for H(z) in figure (2)
figure(2);title('poles-zeros diagram')
% the title of figure(2) is 'poles-zeros diagram'.
Run Q2.m, then we can get the SOS matrix , impulse response plot and the poles-zeros diagram for as following:
>> Q2
sos =
6.0000 15.0000 6.0000 1.0000 0 0
1.0000 2.0000 3.0000 1.0000 0 0
1.0000 0.6667 0.3333 1.0000 0 0
which means ,
where , , .
From the impulse response plot, we can see that is a linear-phase transfer function. Because if a linear phase is desired, the filter coefficients must satisfy the constraint.And the coefficients of satisfies this.
There are 6 possible cascade forms for this FIR filter, and signal flow graph of the cascade realization are showed below:
0.3333
0.6667
3
2
6
15
6
x(n)
y(n)
3
2
0.3333
0.6667
6
15
6
x(n)
y(n)
0.3333
0.6667
6
3
2
6
15
x(n)
y(n)
0.3333
0.6667
6
3
2
6
15
x(n)
y(n)
0.3333
0.6667
6
3
2
6
15
x(n)
y(n)
0.3333
0.6667
6
3
2
6
15
x(n)
y(n)
Q3: Using the same m-function, develop a cascade realization of the following casual IIR transfer function:
Sketch the block diagram of the cascade realization.
Plot the poles-zeros diagram and hence the frequency response of H3(z). (Hints: you may want to use fvtool for this purpose).
From the poles-zeros diagram, identify the order and combination of the Second Order Sections derived by the function. Is this the best cascade? Comment.
Firstly, using the function rat2sos find the SOS matrix of, and then plot the poles-zeros diagram and hence the frequency response of .
Q3.m:
num=[3 8 12 7 2 2];
% num : numerator of the rational function
den=[16 24 24 14 5 1];
% den : denominator of the rational function
sos=rat2sos(num,den)
% Conversion of a rational transfer function
% to its factored form
% sos : second order systems
[z,p]=tf2zp(num,den);
% Find the zeros and poles
figure(1);zplane(z,p)
% make the poles-zeros diagram for H(z) in figure (1)
figure(1);title('poles-zeros diagram')
% the title of figure(1) is 'poles-zeros diagram'
figure(2);fvtool(sos)
% make the frequency response for H(z) in figure (2)
Run Q3.m, then we can get the SOS matrix , poles-zeros diagram and hence the frequency response for as following:
>> Q3
sos =
0.1875 0.1875 0 1.0000 0.5000 0
1.0000 1.8747 2.4513 1.0000 0.5000 0.2500
1.0000 -0.2080 0.2720 1.0000 0.5000 0.5000
which means ,
where , , .
From the poles-zeros diagram, we can find that two poles are outside the unit circle, so this cascade system is not stable. There are also direct form, canonic form, and parallel form for this IIR filter, except for cascade form. And if we considering cascade form, first-order sections, forth-order sections can be taken into account, too.
The number of possible cascade from combinations with second-order sections for
-0.2720
-0.2080
0.5
0.5
0.25
0.5
2.4513
1.8747
0.5
0.1875
y(n)
x(n)
0.1875
6
is . As a matter of convenience, here we only show three of them.
Block diagram of the cascade realization:
2.4513
-0.2720
-0.2080
0.5
0.5
0.25
0.5
1.8747
0.5
0.1875
y(n)
x(n)
0.1875
6
-0.2720
2.4513
-0.2080
0.5
0.5
0.25
0.5
1.8747
0.5
0.1875
y(n)
x(n)
0.1875
6
Granular Limit Cycle Generation
In this section we will investigate the generation of granular limit cycles in a first order IIR filter. Recalling from lecture, this is given by:
z-1
-a1
+
x(n)
y(n)
Q
Q4: Write a m-file script to model the above system and evaluate the effect of a1 = -0.55:0.55. A quantization function using rounding is given to you. For now, fix the number of bit, n, to 5. Document and comment on your results.
Function a2dR :
function beq=a2dR(d,n)
% BEQ=A2DR(D,N) generates the decimal
%equivalent beq of the binary representation
% of a decimal number D with N bits for the
%magnitude part obtained by rounding
%
m=1;d1=abs(d);
while fix(d1)>0
d1=abs(d)/(10^m);
m=m+1;
end
beq=0;d1=d1+2^(-n-1);
for k=1:n
beq=fix(d1*2)/(2^k)+beq;
d1=(d1*2)-fix(d1*2);
end
beq=sign(d).*beq.*10^(m-1);
In this Granular Limit Cycle Generation, what we consider is a simple 1st-order IIR filter. a1=-0.55:0.55, we set . Next we have to determine the output , here for simply we assume , 5-bit quantizer in the multiplier.
Using the a2dR function as the quantization, we can model this granular limit cycle. First, we consider the situation a1=-0.55:
Q4:
% this part is to evaluate the effect of a1=-0.55
a1=-0.55;
num=[1 0];
Bit=5;
den=[1 a2dR(a1,Bit)];
[z,p,k]=tf2zp(num,den);
% num : numerator of the rational function
% den : denominator of the rational function
% Bit : the fix number of bit
% Find the zeros and poles
figure(1);zplane(z,p);
% make the poles-zeros diagram for H(z) in figure (1)
title('poles-zeros diagram')
% the title of figure(1) is 'poles-zeros diagram'.
n=20;
% set sample size n=20
% let x_tmp(i)=(7/8)*2^(-Bit*i), then we can output sequence
% y_tmp(i)=a2dR(-a1*y_tmp(i-1),Bit) of the
% filter, which is shown in figure(2)
x_tmp=zeros(1,n);
x_0=7/8;
y_tmp=zeros(1,n);
y_0=x_0;
x_tmp(1)=(7/8)*2^(-Bit);
y_tmp(1)=a2dR(-a1*y_0,Bit);
for i =2:n
x_tmp(i)=(7/8)*2^(-Bit*i);
y_tmp(i)=a2dR(-a1*y_tmp(i-1),Bit);
end
y=[y_0 y_tmp];
figure(2);stem(y)
xlabel('Sample Index n');ylabel('Amplitude')
% the xlabel of figure(2) is ' Sample Index n ', and ylable is ' Amplitude '
title('a1 =-0.55, Rounding')
% the title of figure(2) is 'a1 =-0.55, Rounding'.
Run Q4.m, we obtain the poles-zeros diagram and the output of the filter when
a1=-0.55.
The output signal for a1=-0.55 and the poles-zeros diagram show that the filter is a lowpass, and the limit cycle has a period of one sample with amplitude of 0.313.
Q4_2.m:
% this part is to evaluate the effect of a1=0.55
a1=0.55;
num=[1 0];
Bit=5;
den=[1 a2dR(a1,Bit)];
[z,p,k]=tf2zp(num,den);
% num : numerator of the rational function
% den : denominator of the rational function
% Bit : the fix number of bit
% Find the zeros and poles
figure(1);zplane(z,p);
% make the poles-zeros diagram for H(z) in figure (1)
title('poles-zeros diagram')
% the title of figure(1) is 'poles-zeros diagram'.
n=20;
% set sample size n=20
% let x_tmp(i)=(7/8)*2^(-Bit*i), then we can output sequence
% y_tmp(i)=a2dR(-a1*y_tmp(i-1),Bit) of the
% filter, which is shown in figure(2)
x_tmp=zeros(1,n);
x_0=7/8;
y_tmp=zeros(1,n);
y_0=x_0;
x_tmp(1)=(7/8)*2^(-Bit);
y_tmp(1)=a2dR(-a1*y_0,Bit);
for i =2:n
x_tmp(i)=(7/8)*2^(-Bit*i);
y_tmp(i)=a2dR(-a1*y_tmp(i-1),Bit);
end
y=[y_0 y_tmp];
figure(2);stem(y)
xlabel('Sample Index n');ylabel('Amplitude')
% the xlabel of figure(2) is ' Sample Index n ', and ylable is ' Amplitude '
title('a1 =0.55, Rounding')
% the title of figure(2) is 'a1 =0.55, Rounding'.
Run Q4_2.m, we obtain the poles-zeros diagram and the output of the filter when
a1=0.55.
The output signal for a1=0.55 and the poles-zeros diagram show that the filter is a highpass. It is clear that , in the steady state , the system has effectively becaome a linear system, which implies that , for the system
Also due to the rounding operation, the quantization error is bounded by where is the quantization step, so we conclude that
27
展开阅读全文