2014-02-24 38 views
0

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

如果你需要一個曲折 - 你爲什麼不只是連接的角落? – bdecaf

+1

你寫的代碼不是在for循環中使用MATLAB語法。你必須寫下如下的代碼:'for x = p/m:2 * p/m1'而不是'for p./m Mohammad

回答

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,它確實不會產生鋸齒,becuse該地塊是在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

+1

由於'我'從來沒有定義,這也不會工作。 – nkjt

+1

@nkjt對。我糾正它。相當醜陋,但我現在沒有時間... – Adiel

+0

它實際上是否產生任何之字形線?我的r2007a不是 – Manex