How can I combine these two MATLAB codes? (MATLAB)
4 views (last 30 days)
Show older comments
I want to show step function and ramp function in one matlab code.
clc; %unit step function
clear;
G1 = tf([1], [5, 1]);
G2 = tf([1], [1, 0]);
G3 = series(5, G1);
G4 = feedback(G3, 0.8);
G = series(G4, G2);
sys = feedback(G, 1);
t = 0:0.001:25;
r = ones(1, length(t));
y2 = lsim(sys, r, t);
plot(t, y2, 'linewidth', 2);
grid;
xlabel('Time, t (s)');
ylabel('Amplitude');
title('Plot of y_2(t)');
clc; %ramp function
clear all;
close all;
s=tf('s');
C=5*(1+0.8*s)
P=1/(s*(5*s+1))
CL=feedback(C*P,1)
figure;
step(CL)
t=0:0.1:10;
r=t;
[y,t]=lsim(CL,r,t);
figure;
plot(t,y,'linewidth',2);
title('Ramp Response');
0 Comments
Accepted Answer
Adam Danz
on 7 Jan 2021
Edited: Adam Danz
on 7 Jan 2021
This should get you started,
s=tf('s');
C=5*(1+0.8*s);
P=1/(s*(5*s+1));
CL=feedback(C*P,1);
figure
step(CL)
ax = gca();
hold(ax,'on')
G1 = tf([1], [5, 1]);
G2 = tf([1], [1, 0]);
G3 = series(5, G1);
G4 = feedback(G3, 0.8);
G = series(G4, G2);
sys = feedback(G, 1);
t = 0:0.001:25;
r = ones(1, length(t));
y2 = lsim(sys, r, t);
plot(t, y2, 'linewidth', 2,'DisplayName','y2');
t=0:0.1:10;
r=t;
[y,t]=lsim(CL,r,t);
plot(t,y,'linewidth',2,'DisplayName','Ramp Response');
ylim(ax,[-inf,max(y)])
% The first legend string is based on your variable name "CL".
legend('Location','NorthWest')
Alternatively,
[yResp, TOut] = step(CL);
plot(TOut, yResp)
0 Comments
More Answers (1)
the cyclist
on 7 Jan 2021
figure
hold on
plot(t, y2, 'linewidth', 2);
plot(t,y,'linewidth',2);
and then your other commands for labels, etc
1 Comment
Adam Danz
on 8 Jan 2021
Unfortunately there's no way to prevent the step() function from producing its own figure unless outputs are included which won't produce a plot at all.
See Also
Categories
Find more on Annotations 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!