How to colour regions in a graph: poles and zeros

2 ビュー (過去 30 日間)
Joshua Behrendorff
Joshua Behrendorff 2020 年 5 月 6 日
編集済み: TED MOSBY 2025 年 7 月 9 日
Hi guys! Hoping for some help if anyone here has expertise plotting a graph using complex conjugates and zeros
We've been given the task to find a region where a specific set of values are valid on the real and complex axis. I've calculated the borders(?) and was wondering if anyone would know how I could add this to my current matlab code, as Im checking what fits in the borders :)
The borders are:
-2.665 + 0i to 0±2.7996i
at an angle of 46.37 degrees from -2.665 in both directions
sorry if the wording is a little confusing.
this is the code I'd like to plot on this shading.
hold on
for kp=[2, 4, 8, 16, 32, 64]
disp(kp)
G = tf([kp 64], [1 10 16 0]);
CLTF = feedback(kp*G,1)
pzmap(CLTF)
end
If anyone could help this would be mad appreciated

回答 (1 件)

TED MOSBY
TED MOSBY 2025 年 7 月 9 日
編集済み: TED MOSBY 2025 年 7 月 9 日
Hi,
You can achieve this by using the fill function in MATLAB to create the shaded region before you plot your pole-zero map. It looks like the region you've described is a triangle with vertices at (-2.665, 0), (0, 2.7996), and (0, -2.7996).
Here is how you can do that:
figure;
hold on;
x_vertices = [-2.665, 0, 0];
y_vertices = [0, 2.7996, -2.7996];
fill(x_vertices, y_vertices, 'y', 'FaceAlpha', 0.2, 'EdgeColor', 'k', 'LineStyle', '--');
for kp = [2, 4, 8, 16, 32, 64]
G = tf([kp 64], [1 10 16 0]);
CLTF = feedback(kp*G, 1);
p = pole(CLTF);
end
grid on;
xlabel('Real Axis (\sigma)');
ylabel('Imaginary Axis (j\omega)');
ax = gca;
ax.XAxisLocation = 'origin';
ax.YAxisLocation = 'origin';
axis equal;
hold off;
Here is more information on "fill" : https://www.mathworks.com/help/matlab/ref/fill.html
Hope it helps!

カテゴリ

Help Center および File ExchangeGraphics についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by