# How to plot multiple curves in the same graph window?

40 views (last 30 days)
Aishwarya Govekar on 15 Mar 2020
Commented: Star Strider on 16 Mar 2020
I want to plot graphs for multiple Kp values for a proportional controller. I tried using for loop to perform this. But I didn't get the output.Below, I attach the code which I have written for your reference. Please guide me on this. If you can tell me if there's any other way to do it, then that would be great.
Thank you.
Aishwarya Govekar on 15 Mar 2020
clc;
clear all;
close all;
J=20.48*10e-6;
b=0.702;
kt=14.70;
kb=0.48;
R=1.6;
L=0.02*0.001;
num=kt;
den=[(J*L) ((J*R)+(L*b)) ((b*R)+(kb*kt))];
for kp=0:50:300 %plotting graph for P controller with Kp values in steps of 50
ki=0;
kd=0;
numc=[kd,kp,ki];
denc=[0 1];
numa=conv(num,numc);
dena=conv(den,denc);
[numac,denac]=cloop(numa,dena);
step(numac,denac)
hold on;
title ('pid control');
grid;
end

Star Strider on 15 Mar 2020
Try this:
J=20.48*10e-6;
b=0.702;
kt=14.70;
kb=0.48;
R=1.6;
L=0.02*0.001;
num=kt;
den=[(J*L) ((J*R)+(L*b)) ((b*R)+(kb*kt))];
kp=0:50:300; %plotting graph for P controller with Kp values in steps of 50
for k = 1:numel(kp)
ki=0;
kd=0;
numc=[kd,kp(k),ki];
denc=[0 1];
numa=conv(num,numc);
dena=conv(den,denc);
[numac,denac]=cloop(numa,dena);
sys = tf(numac,denac)
[y{k},t{k}] = step(sys);
% QL(k,:) = [min(y{k}), max(y{k})] % Information
end
figure
hold on
for k = 2:numel(y)
plot(t{k}, y{k})
end
hold off
title ('pid control');
grid
It is necessary to create a system object to use the step funciton. The first step output is uniformly zero, and that causes problems with the plot. Start with the second one instead.
Also, use feedback rather than cloop (that has been deprecated).
Star Strider on 16 Mar 2020
To change the axis limits use the xlim, ylim or axis functions. To set limits on axes that are already plotted, see the documentation on Axes Properties.