MATLAB:如何找到二维封闭形状中任意曲面的面积

MATLAB: How to find area of an arbitrary surface in a 2d closed shape

我有一个封闭的二维曲面如下:

r=1+0.1*sin(5*theta)+a*sin(6*theta);
x=r.*cos(theta);
y=r.*sin(theta);
plot(x,y);

我想知道找到它的面积的最有效方法是什么?

来自 MATLAB 文档: http://www.mathworks.com/help/matlab/ref/polyarea.html


您可以使用polyarea

语法

A = polyarea(X,Y)
A = polyarea(X,Y,dim)

描述

A = polyarea(X,Y) returns 由向量 XY.

中的顶点指定的多边形面积

如果 XY 是相同大小的矩阵,则 polyarea returns 由 XY 列定义的多边形面积.

如果 XY 是多维数组,polyarea returns 是 XY 的第一个非单一维度中的多边形面积。

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