Showing information on a plot
6 views (last 30 days)
Show older comments
Hello,
I am analysing a control system, that has a step input and the given transfer function. I have been able to produce a graph, and obtain the information of the system (Peak, SettlingMax etc.), but I am trying to display this information as shown below on the MATLAB help centre. Unfortunately, I am unable to locate any guidance on displaying the information in this way (see below for my current graph/desired output)
For reference, my transfer function is g = tf(1,[1,8.52,5.3,26]), and as stated prior a step input is used.
This is my blank graph
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1627148/image.png)
An example I found in a textbook
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1627153/image.png)
And I am looking to display it in this way.
I![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1627158/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1627158/image.png)
Note - I am able to find the values for each of these via the command stepinfo(g), however would like to show them as the nodes on the image above.
Any help to display my results in a similar way would be greatly appreciated!
Thank you,
Lewis
0 Comments
Accepted Answer
Star Strider
on 25 Feb 2024
Retrieving and showing all that information is not straightforward, however it is definitely possible. Use stepinfo to get the information, and stepplot to do the plot since it is easier to work with than step.
This should get you started —
g = tf(1,[1,8.52,5.3,26])
si = stepinfo(g)
figure
hsp = stepplot(g);
Ampl = hsp.Responses.Data.Amplitude;
Time = hsp.Responses.Data.Time;
xl = xlim;
hold on
plot([1 1]*si.PeakTime, [0 si.Peak], '-.k')
plot([0 si.PeakTime], [1 1]*si.SettlingMax, '-.k')
sttmin = interp1(Ampl, Time, si.SettlingMin); % Interpolate To Determine This Specific Time
plot([-1 1]*max(xl)*0.05+sttmin, [1 1]*si.SettlingMin, '-.k')
plot([0 si.PeakTime], [1 1]*si.SettlingMax, '-.k')
hold off
text(si.PeakTime, si.Peak, sprintf('\\leftarrow Peak = %.4f V\n Time = %.4f s', si.Peak, si.PeakTime), 'Vert','middle')
text(max(xl)*0.05+sttmin, si.SettlingMin, sprintf('\\leftarrow Minimum = %.4f V\n Time = %.4f s', si.SettlingMin, sttmin), 'Vert','middle')
% get(hsp)
Tweak appropriately to get the result you want.
.
2 Comments
More Answers (1)
the cyclist
on 25 Feb 2024
You should be able to get everything you want, using the following commands:
line to create the line segments.
annotation to add the text and arrows.
See Also
Categories
Find more on Discrete Data Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!