我创建了一个函数trapezoidArea
,如下所示:
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 :(得分:0)
我喜欢Matlab的调试程序。让我们开始吧!
当您从原点移动a2
并从最后移动a1
时,您会获得边界上的结果。一步一步调试:
a1(200)=2,a2(200)=0
和t1(200)=19.9, t2(200)=20
所以area=0.1*2/2=0.1
因此,如果您希望在边框上获得相同的结果,则应该正确地重新排列阵列。