在2d平面中找到数据集的圆周矩形的长度和宽度(Matlab)

时间:2017-05-29 20:10:43

标签: matlab

在2D中有一组数据(比如说知道平面中某些点的位置),怎样才能找到Matlab中各点的圆周矩形的长度和宽度?

2 个答案:

答案 0 :(得分:1)

要获得给定点的周长,您可以按以下步骤操作。首先使用 boundary 获取边界点。一旦你有边界点,你就可以得到距离并求它们;它给你外围。

data = rand(10,2) ;
%% Get boundary of the points
idx = boundary(data(:,1),data(:,2)) ;
%%
figure
hold on
plot(data(:,1),data(:,2),'.r') ;
plot(data(idx,1),data(idx,2),'b') ;
%% perimeter
bound = [data(idx,1) data(idx,2)] ;
dx_boundary = diff(bound) ;
dist = sqrt(dx_boundary(:,1).^2+dx_boundary(:,2).^2);
perimeter = sum(dist) ;

答案 1 :(得分:0)

您可以使用x和y坐标的最大值和最小值来获取边界框。从这些获取矩形的坐标。

data = rand(10,2) ;
%% Get bounding box/ Rectangle
x0 = min(data(:,1)) ; x1 = max(data(:,1)) ;
y0 = min(data(:,2)) ; y1 = max(data(:,2)) ;
%% Legnth and breadth of rectangle
L = abs(x1-x0) ;
B = abs(y1-y0) ;
%% coordinates of rectangle 
Rect = [x0 y0 ; x0+L y0 ; x0+L y0+B ; x0 y0+B ; x0 y0] ;
%% figure
figure
hold on
plot(data(:,1),data(:,2),'.r')
hold on
plot(Rect(:,1),Rect(:,2),'b')