MATLAB: Plot for different conditions of function

plot

Hi everyone,
i have the task that I have to make plot for different conditions y(x) for different value x.
The following code I have is below. If is correct.
But plot did not work. I thought that missing hold on or something like that but also did not work.
clear all
close all
clc
x=rand
if x<6
y=2;
% fprintf ('%.2f, %d\n',x,y)
elseif x>=6 & x<20
y=x-4;
% fprintf ('%.2f, %.2f\n',x,y)

elseif x>=20
y=36-x;
% fprintf ('%.2f, %.2f\n',x,y)
end
fprintf ('%.2f, %.2f\n',x,y)
for x=-30:1:30
if x<6
y1=2;
plot(x,y1)
elseif x>=6 & x<20
y2=x-4;
plot(x,y2)
elseif x>=20
y3=36-x;
plot(x,y3)
end
end
Thank you!

Best Answer

Your code is plotting scalars. If you want to see a line you should put in multiple values at the same time.
for x=-30:1:30
if x<6
y1=2;
plot(x,y1,'.')
elseif x>=6 & x<20
y2=x-4;
plot(x,y2,'.')
elseif x>=20
y3=36-x;
plot(x,y3,'.')
end
end
A better strategy would be to create the entire array at one, and then plot it as a vector.
x=-30:30;
y=NaN(size(x));
L=x<6;
y(L)=2;
L=x>=6 & x<20;
y(L)=x(L)-4;
L=x>=20;
y(L)=36-x(L);
plot(x,y)
Also, you shouldn't use clc,clear all,close all. You aren't printing anything to the command window, you should only use clear all exactly once in your entire code base, and you don't want to close all figures without knowing they are related to your code.