MatLab奇怪的计算区域函数

时间:2015-04-08 04:16:53

标签: matlab

我创建了一个函数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.1000v(300)=0.2000值。我做错了什么?

1 个答案:

答案 0 :(得分:0)

我喜欢Matlab的调试程序。让我们开始吧!

当您从原点移动a2并从最后移动a1时,您会获得边界上的结果。一步一步调试:

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

因此,如果您希望在边框上获得相同的结果,则应该正确地重新排列阵列。