Digital Signal Processing Reference
In-Depth Information
b = [b 0];
vor dem Befehl residuez erhält man die gesuchte Sprungantwort, siehe Pro-
gramm dsplab11_2 .
A11.6
Die Zustandsgrößen beschreiben die inneren Speicher des Systems und müssen des-
halb für eine kontinuierliche Verarbeitung gemerkt und wiederverwendet werden,
siehe Programm iirdf2t und Testprogramm dsplab11_1
%% Filtering
for k=1:length(x)
y(k) = b(1)*x(k) + SI(1);
SI(1) = b(2)*x(k) - a(2)*y(k) + SI(2);
SI(2) = b(3)*x(k) - a(3)*y(k);
end
sf = SI; % final conditions
M11.1 Impulsantwort, siehe Programme dsplab11_1 und iirdf2t
% Test program for 2nd order system in transposed direct form II using
% function iirdf2t
% dsplab11_1.m * mw * 06Dec2010
b = [1 0 1];
% numerator coefficients
a = [1 -0.8 0.64];
% denominator coefficients
% Impulse response
N = 20;
n = 0:N;
x = [1 zeros(1,N)];
% impulse
h = zeros(size(x));
SF = [0,0];
% final state
for k = 1:N+1
SI = SF;
% update state variables
[h(k),SF]= iirdf2t(b,a,x(k),SI);
% filter routine
end
hMTLB = filter(b,a,x);
% MATLAB filter function
hIMPZ = impz(b,a,N+1);
% MATLAB impulse response
%% Graphics
FIG1=figure( 'Name' ,...
'dsplab11_1 : 2nd order IIR filter - impulse response' ,...
'NumberTitle' , 'off' );
subplot(3,1,1), stem(n,h, 'filled' ), grid
ylabel( '{\ith}[{\itn}]' ), text(12.5,.5, 'user "iirdf2t"' )
subplot(3,1,2), stem(n,hMTLB, 'full' ), grid
ylabel( '{\ith}[{\itn}]' ), text(12.5,.5, 'MATLAB "filter"' )
subplot(3,1,3), stem(n,hIMPZ, 'filled' ), grid
xlabel( '{\itn}' ), ylabel( '{\ith}[{\itn}]' )
text(12.5,.5, 'MATLAB "impz"' )
M11.2 Sprungantwort, siehe Programm dsplab11_2
%% Step response
a = [a 0] - [0 a];
% in case of step response
b = [b 0];
[r,p,k] = residuez(b,a);
% residues, poles and direct term
n = 0:20;
Search WWH ::




Custom Search