Control systems: Labelling multiple plots dynamically based on parameter ?

5 次查看(过去 30 天)
Hello! This is my first time using this forum. Basically I need some way to label the plots with the value of the variable 'zeta' so that my output (below)
resembles this diagram (below) in my text book (the numbers "1.5", "1.0", "0.8", etc):
The code I have used is:
s = tf('s');
Wn = 1;
for zeta = 0.1:0.1:0.9
T = Wn^2/(s^2 + 2*zeta*Wn*s + Wn^2);
step(T);
hold all
end

采纳的回答

Burhan Burak AKMAN
Burhan Burak AKMAN 2021-12-27
You can use this. May be it will help you.
s = tf('s');
Wn = 1;
i=1;
ti=linspace(0,20,200);
for zeta = 0.1:0.1:0.9
T = Wn^2/(s^2 + 2*zeta*Wn*s + Wn^2);
[a,b]=step(T,ti);
hold all
plot(b,a)
text(b(-i*2+40),a(-i*2+40),"\zeta="+string(zeta),'FontSize',10)
i=i+1;
end

更多回答(1 个)

Paul
Paul 2021-12-27
Here's a way to do it with a legend.
s = tf('s');
Wn = 1;
for zeta = 0.1:0.1:0.9
T = Wn^2/(s^2 + 2*zeta*Wn*s + Wn^2);
[y,t]=step(T);
plot(t,y,'DisplayName',"zeta = "+string(zeta))
hold all
end
legend
If you really want to annotate the curves themselves, check out
doc text
doc annotation
  1 个评论
Shovnik Paul
Shovnik Paul 2021-12-28
This was very helpful, and honestly more readable, but I chose the other answer because it was closer to the diagram in my book. Thanks a lot!

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Annotations 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by