我有一个封闭的2d表面如下:
r=1+0.1*sin(5*theta)+a*sin(6*theta);
x=r.*cos(theta);
y=r.*sin(theta);
plot(x,y);
我想知道找到它的区域最有效的方法是什么?
答案 0 :(得分:2)
来自MATLAB文档: http://www.mathworks.com/help/matlab/ref/polyarea.html
您可以使用polyarea
<强> Sintax 强>
A = polyarea(X,Y)
A = polyarea(X,Y,dim)
<强>描述强>
A = polyarea(X,Y)
返回向量X
和Y
中顶点指定的多边形区域。
如果X
和Y
是相同大小的矩阵,则polyarea会返回由X
和Y
列定义的多边形区域。
如果X
和Y
是多维数组,则polyarea会返回X
和Y
的第一个非单独维度中多边形的区域。
A = polyarea(X,Y,dim)
沿着标量dim指定的维度运行。
示例强>
L = linspace(0,2.*pi,9);
xv = 1.2*cos(L)';
yv = 1.2*sin(L)';
xv = [xv ; xv(1)];
yv = [yv ; yv(1)];
A = polyarea(xv,yv)
// Result A = 4.0729
plot(xv,yv);
title(['Area = ' num2str(A)])
axis image