我想在matlab中创建一个锯齿形图,并有一个数学公式。为什么以下不起作用:
clc
clear all
p=100;
m=5;
x=0:1:100;
for 0 < x <= p./m
y(i) =m.*x;
end
plot(x,y)
hold on
for p./m < x <= 2.*p./m
y(i) = -m.*x + 2.*p ;
end
plot(x,y)
hold on
for 2.*p./m < x <= 3.*p./m
y(i) = m.*x - 2.*p;
end
plot(x,y)
答案 0 :(得分:0)
你在定义for循环时遇到了错误。它应该是:
clc
clear all
p=100;
m=5;
x=0:1:100;
y=[];
y1=[];
y2=[];
for x=1: p/m
y(end+1) =m.*x;
end
plot(x,y)
hold on
for x=p/m+1:2*p/m
y1(end+1) = -m.*x + 2.*p ;
end
plot(x,y1)
hold on
for x=2*p/m+1: 3.*p./m
y2(end+1) = m.*x - 2.*p;
end
plot(x,y2)
我在您的代码中使用y
,y1
,y2
,而不只是y
,因为如果它在所有循环中的长度不同,那么它将会是一个错误的结果。
修改强>
作为@Manex wtore,它确实不会产生之字形,因为这些图已超过x
,并且没有超过每个图的正确值。在这里,我修复了它,并整理了整个代码,使其更具可读性:
clc
clear all
p=100;
m=5;
x1=1:p/m;
x2=p/m+1:2*p/m;
x3=2*p/m+1:3*p/m;
y1=m*x1;
y2=-m*x2+2*p;
y3=m*x3-2*p;
plot(x1,y1,x2,y2,x3,y3)