Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
利用三角形面积和计算多边形面积的MATLAB函数_Matlab_Function_Defined - Fatal编程技术网

利用三角形面积和计算多边形面积的MATLAB函数

利用三角形面积和计算多边形面积的MATLAB函数,matlab,function,defined,Matlab,Function,Defined,我有一个关于我写的MATLAB函数的问题。它以两行向量的形式获取一组x和y顶点坐标作为输入,并使用这些坐标计算多边形的面积 对于单个三角形的情况,它运行得很好(尽管我知道我的代码可以更高效,看起来更好)。但是,我将在脚本中使用此函数,该脚本将获取一组x和y点,并计算以坐标点为边界的多边形的周长和面积 使用我为三角形面积创建的函数,可以根据以下步骤计算多边形的面积: 有N-2个三角形(其中N是多边形的边数) 我的函数计算这些三角形的面积(使用A=0.5(x1*(y2-y3)-x2*(y1-y3)

我有一个关于我写的MATLAB函数的问题。它以两行向量的形式获取一组x和y顶点坐标作为输入,并使用这些坐标计算多边形的面积

对于单个三角形的情况,它运行得很好(尽管我知道我的代码可以更高效,看起来更好)。但是,我将在脚本中使用此函数,该脚本将获取一组x和y点,并计算以坐标点为边界的多边形的周长和面积

使用我为三角形面积创建的函数,可以根据以下步骤计算多边形的面积:

  • 有N-2个三角形(其中N是多边形的边数)
  • 我的函数计算这些三角形的面积
    (使用
    A=0.5(x1*(y2-y3)-x2*(y1-y3)+x3(y1-y2)
  • 求三角形面积之和以找到多边形的面积
我的代码写在下面。我的周长函数工作得很好,但我不确定如何将三角形的面积函数实现到多边形面积程序中。我相信我的公式是正确的,问题在于循环索引。

任何关于如何从我下面的建议将不胜感激

function [tri_area] = area2dd(coords_x,coords_y)

%%Input argument check
narginchk(2,2) ;

%%Calculation
% % ii = 1:length(coords_x)-2;
% % jj = 1:length(coords_y)-2;

if length(coords_x) == 3 
    ii = 1:length(coords_x) -2;
    jj = 1:length(coords_y) -2;
    tri_area = sum(abs(0.5.*(coords_x(ii).*(coords_y(jj+1)-21coords_y(jj+2))-coords_x(ii+1)... 
        .*(coords_y(jj)-coords_y(jj+2))+coords_x(ii+2).*(coords_y(jj)-23coords_y(jj+1)))))
else
    ii = 1:3:length(coords_x) -2;
    jj = 1:3:length(coords_y) -2;
    tri_area = sum(abs(0.5.*(coords_x(ii).*(coords_y(jj+1)-29coords_y(jj+2))-coords_x(ii+1)... 
       .*(coords_y(jj)-coords_y(jj+2))+coords_x(ii+2).*(coords_y(jj)-31coords_y(jj+1)))))
end

好的,对于任何有兴趣的人或其他可能解决像我这样的问题的人,我有下面编写的最终工作代码。这个函数可以执行双重任务。如果输入的坐标向量是3对,那么这个函数将计算三角形的面积。如果有3组以上的坐标对,那么它将计算te以这些坐标为边界的多边形的面积

narginchk(2,2) ;
if length(coords_x) == 3 
ii = 1
jj = 1
area = sum(abs(0.5.*(coords_x(ii).*(coords_y(jj+1)-coords_y(jj+2))- ...
coords_x(ii+1).*(coords_y(jj)-coords_y(jj+2))+coords_x(ii+2).*...       
(coords_y(jj)-coords_y(jj+1))))) ;
else
ii = 1:length(coords_x) -3 ;
jj = 1:length(coords_y) -3 ;
area = sum((abs(0.5.*(coords_x(1).*(coords_y(jj+1)-coords_y(jj+2)) ...
-coords_x(ii+1)... 
.*(coords_y(1)-coords_y(jj+2))+coords_x(ii+2).*(coords_y(1)- ...
coords_y(jj+1)))))) ;
end
end

您可能正在寻找我希望是这样,不幸的是,我必须编写一个基于内部三角形计算多边形面积的函数。我见过几种更有效的方法,但我的作业要求我必须使用此方法。您能用当前代码澄清问题吗?我的问题在else语句中。我想计算多边形中三角形的面积,考虑到x和y坐标的任何数量。我想我的公式是正确的。我相信这个问题存在于循环索引中的某个地方。我不知道该如何设置索引,这样我就可以捕获用于计算区域的点。您可以考虑创建一个答案Y。我们自己(如果几天后接受)