# Control systems: Labelling multiple plots dynamically based on parameter ?

1 view (last 30 days)
Shovnik Paul on 27 Dec 2021
Commented: Shovnik Paul on 28 Dec 2021
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 on 27 Dec 2021
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 ### More Answers (1)

Paul on 27 Dec 2021
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 CommentShowHide None
Shovnik Paul on 28 Dec 2021
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!