如何制作Zigzag情节

时间:2014-02-24 13:36:56

标签: matlab

我想在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)

1 个答案:

答案 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)

我在您的代码中使用yy1y2,而不只是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)

enter image description here