How can I combine these two MATLAB codes? (MATLAB)

4 views (last 30 days)
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');

Accepted Answer

Adam Danz
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)

More Answers (1)

the cyclist
the cyclist on 7 Jan 2021
Use the hold command
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
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.

Sign in to comment.

Categories

Find more on Programming 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!