2016-05-10 5 views
2

У меня есть замкнутая 2d поверхность, как показано ниже:MATLAB: Как найти площадь произвольной поверхности в 2d закрытые формы

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

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

ответ

2

Из 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) работает по размеру, заданному скалярным тусклым.

Пример

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 

enter image description here

+0

Это желательно, чтобы вы привести пример, который имеет отношение к вопросу в ФП, а не буквально копировать/вставить документацию MATLAB. – Suever

+0

Спасибо за ваш ответ, я попробовал, и это сработало, но на самом деле я думаю, что не было необходимости в xv = [xv; XV (1)]; yv = [yv; уу (1)]; Спасибо – Soyol

+0

@Suever Это может помочь, это не так? – nanilab

Смежные вопросы