How to plot |z| in a pole-zero map of a discrete time system ?

5 vues (au cours des 30 derniers jours)
jefazo jefazo
jefazo jefazo le 14 Oct 2020
Réponse apportée : Satwik le 28 Mar 2025
Hi,
I am trying to plot a pole-zero map of a discrete time system. I have used pzmap(mysys) and zgrid(zeta,wn2) to create my plot, where zeta = 0.5038 and wn2 = 0.2906 and I get this plot (see "My_Plot). But I also want to plot | z | = exp(-zeta*wn*T) and make my graph look more like "Desired_Plot". Any help would be greatly appreciated.

Réponses (1)

Satwik
Satwik le 28 Mar 2025
To enhance the pole-zero plot and include the contour '| z | = exp(-zeta*wn*T)', we can use the 'fimplicit' function. Here is a sample MATLAB script demonstrating its usage:
% Define your discrete-time system
mysys = zpk([], [0.5 + 0.5i, 0.5 - 0.5i], 1, 0.1); % Example system, replace with your system
% Define parameters
zeta = 0.5038;
wn2 = 0.2906;
T = 0.1; % Sampling time, replace with your system's sampling time
% Plot the pole-zero map
figure;
pzmap(mysys);
hold on;
% Add zgrid with specific zeta and wn2
zgrid(zeta, wn2);
% Plot the contour |z| = exp(-zeta*wn*T)
r = exp(-zeta * wn2 * T);
fimplicit(@(x,y) sqrt(x.^2 + y.^2) - r, [-1.5, 1.5, -1.5, 1.5], 'LineStyle', '--', 'Color', 'r');
% Enhance plot appearance
title('Enhanced Pole-Zero Map');
xlabel('Real Part');
ylabel('Imaginary Part');
axis equal; % Keep the aspect ratio equal for better visualization
grid on;
hold off;
Please refer to the following documentation for more information on the 'implicit' fucntion: https://www.mathworks.com/help/matlab/ref/fimplicit.html
I hope this helps!

Community Treasure Hunt

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

Start Hunting!

Translated by