MATLAB Answers

Filter Z Transform Implementation

26 views (last 30 days)
LB
LB on 22 Jan 2021
Commented: Star Strider on 22 Jan 2021
Hello,
I would like to know how to implement a filter in Matlab in the Z transform like : H(z)= -1/2 - z^(-1) - 1/2*z^-2
Im trying to get the impulse response with impz but have since failed in doing so.
Thank you

  0 Comments

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 22 Jan 2021
The easiest way is to let the Control System Toolbox do the initial analysis:
z = tf('z'); % Use Control System Toolbox Functions
H = tf( -1/2 - z^(-1) - 1/2*z^-2, 'Variable','z^-1')
filt_a = H.Numerator{:};
filt_b = H.Denominator{:};
figure
freqz(filt_b, filt_a)
figure
impulse(H)
figure
impz(filt_b, filt_a)
producing:
H =
-0.5 z^3 - z^2 - 0.5 z
----------------------
z^3
Sample time: unspecified
Discrete-time transfer function.
and the plots.

  2 Comments

LB
LB on 22 Jan 2021
Is it always freqz(den,num) or freqz(num,den)?
Im confused my teachers use impz freqz...(num,den)
EDIT: would something like num = [-1/2 -1 -1/2], den=1, h=impz(num,den), impz(h) work?
Thank you!
Star Strider
Star Strider on 22 Jan 2021
I always used:
freqz(num, den)
that appears to be correct according to the freqz documentation.
‘... would something like num = [-1/2 -1 -1/2], den=1, h=impz(num,den), impz(h) work?
Not exactly, although this would:
num = [-1/2 -1 -1/2];
den = 1;
[h,t] = impz(num,den);
figure
stem(t, h, 'filled', 'LineWidth',2)
axis([0 max(t)+0.5 -1.5 1.5])
.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!