MATLAB: как найти площадь произвольной поверхности в двумерной замкнутой форме



У меня замкнутая двумерная поверхность, как показано ниже:



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


Мне было интересно, какой самый эффективный способ найти его площадь?

1243   1  

1 ответ:

Из документации MATLAB: http://www.mathworks.com/help/matlab/ref/polyarea.html


Вы можете использовать polyarea

Синтакс

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

Введите описание изображения здесь

Comments

    Ничего не найдено.