2015-04-08 66 views
0

我創建了一個功能trapezoidArea如下的計算:MATLAB的奇怪的區域功能

function area=trapezoidArea(x1,x2,y1,y2) 
    area=abs((x2-x1).*(y1+y2))/2; 
end 

,這裏是我做了什麼:

t=0:0.1:40; 
a(1,1:201)=2; 
a(1,201:301)=0; 
a(1,301:401)=-4; 
t1=t(1:end-1); 
t2=t(2:end); 
a1=a(1,1:end-1); 
a2=a(1,2:end); 
v=transpose(trapezoidArea(t1,t2,a1,a2)); 

但有趣的是,我得到的v(200)=0.1000一些奇怪的值和v(300)=0.2000。我究竟做錯了什麼?

回答

0

我喜歡Matlab的調試程序。開始吧!

當你從原點移動a2並從最後你在邊界上得到這樣的結果。一步一步調試:

a1(200)=2,a2(200)=0t1(200)=19.9, t2(200)=20所以area=0.1*2/2=0.1

所以,如果你希望得到的邊界同樣的結果,你應該正確地重新安排你的陣列。