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;