Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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 在x y数据中查找交点以计算封闭区域的面积_Matlab - Fatal编程技术网

Matlab 在x y数据中查找交点以计算封闭区域的面积

Matlab 在x y数据中查找交点以计算封闭区域的面积,matlab,Matlab,我有x和y数据点,在绘制数据之后,我有下面的图。数据是包含交点的散乱x y数据。我想在图上绘制这些交点,如下所示。如何找到这些交点?我只能找到计算两条直线交点的函数,但不能像这样分散数据。我的主要目的是分离每个盒状结构,并使用交点测量面积,因为这种方法将是自动化的 如果直线总是水平和垂直的,那么您可以这样做 discriminationCritera = 5 ; % Will need to play with this, how many times more counts does an a

我有x和y数据点,在绘制数据之后,我有下面的图。数据是包含交点的散乱x y数据。我想在图上绘制这些交点,如下所示。如何找到这些交点?我只能找到计算两条直线交点的函数,但不能像这样分散数据。我的主要目的是分离每个盒状结构,并使用交点测量面积,因为这种方法将是自动化的


如果直线总是水平和垂直的,那么您可以这样做

discriminationCritera = 5 ; % Will need to play with this, how many times more counts does an area need to have to be considered a line
[ N , Xedges , Yedges , binX , binY ] = histcounts2(x,y); % bins the data

% Find number of data points in each row and column
Xsum = sum(N,2);
Ysum = sum(N,1);

% Decided whether it is dense enough to be considered a line
XLines = find( Xsum > discriminationCritera * median(Xsum) );
YLines = find( Ysum > discriminationCritera * median(Ysum) );

% figure out which points are in that bin
xlines = sort(arrayfun(@(line) mean(x( line == binX ) ) , XLines ));
ylines = sort(arrayfun(@(line) mean(y( line == binY ) ) , yLines ));

% Display results
disp(strjoin( ...
[ arrayfun(@(x) sprintf( 'x = %g' , x ), xlines(:) , 'uni', 0)
  arrayfun(@(y) sprintf( 'y = %g' , y ), ylines(:) , 'uni', 0) ] ...
, '\n' ) )

% Calculate areas, flipping is to align with y direction
Areas = flipud( diff( ylines(:) ) ) * diff( xlines(:)' );

% Display more results
disp('Areas enclosed')
disp(Areas)

(很抱歉出现任何错误,我家里没有MATLAB许可证,因此无法运行代码)

如果手动查找交叉点对您的工作流程有意义,那么您可以使用覆盖散点图的
input
。在这种情况下,请相应地更新您的问题,以了解如何记录叠加到散点图上的手动输入坐标。如果您需要以编程方式进行交叉,我不知道标准算法可以做这样的事情,因此,要求提供标准库/函数之外的建议是离题的。在这种情况下,您可能应该问一些更具体的问题,以及如何实现您可能想到的特定插值方法。至于面积,获得(每4个)点所包围的(正方形)面积是一个不同的问题——在这个问题上,您还可以问一个更专注的问题。