【问题标题】:MATLAB: How to find area of an arbitrary surface in a 2d closed shapeMATLAB:如何在二维封闭形状中找到任意曲面的面积
【发布时间】:2016-09-04 20:24:00
【问题描述】:

我有一个封闭的二维表面,如下所示:

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

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

【问题讨论】:

    标签: matlab area surface


    【解决方案1】:

    来自 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) 返回由向量XY 中的顶点指定的多边形面积。

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

    如果XY 是多维数组,polyarea 返回多边形在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
    

    【讨论】:

    • 您最好提供一个与 OP 的问题相关的示例,而不是直接复制/粘贴 MATLAB 文档。
    • 感谢您的回复,我试过了,它确实有效,但实际上我认为不需要 xv = [xv ;十五(1)]; yv = [yv; yv(1)];谢谢
    • @Suever 可能有帮助,不是吗?
    • @arglab 最好链接到他们的文档并使用类似于原始问题的数据来显示用法。文档的完整副本没有帮助。
    • @arglab 如果您认为我的问题值得提问,请给我一个 +1,因为我的问题收到不好(没有得到 +1 分),我即将被阻止,谢谢提前
    猜你喜欢
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 2010-10-01
    • 1970-01-01
    相关资源
    最近更新 更多