• 大小: 54KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: Matlab
  • 标签: matlab  多目标  

资源简介

求多个目标的最小外接矩形,有说明,matlab版

资源截图

代码片段和文件信息

function [rectxrectyareaperimeter] = minboundrect(xymetric)
% minboundrect: Compute the minimal bounding rectangle of points in the plane
% usage: [rectxrectyareaperimeter] = minboundrect(xymetric)
%
% arguments: (input)
%  xy - vectors of points describing points in the plane as
%        (xy) pairs. x and y must be the same lengths.
%
%  metric - (OPTIONAL) - single letter character flag which
%        denotes the use of minimal area or perimeter as the
%        metric to be minimized. metric may be either ‘a‘ or ‘p‘
%        capitalization is ignored. Any other contraction of ‘area‘
%        or ‘perimeter‘ is also accepted.
%
%        DEFAULT: ‘a‘    (‘area‘)
%
% arguments: (output)
%  rectxrecty - 5x1 vectors of points that define the minimal
%        bounding rectangle.
%
%  area - (scalar) area of the minimal rect itself.
%
%  perimeter - (scalar) perimeter of the minimal rect as found
%
%
% Note: For those individuals who would prefer the rect with minimum
% perimeter or area careful testing convinces me that the minimum area
% rect was generally also the minimum perimeter rect on most problems
% (with one class of exceptions). This same testing appeared to verify my
% assumption that the minimum area rect must always contain at least
% one edge of the convex hull. The exception I refer to above is for
% problems when the convex hull is composed of only a few points
% most likely exactly 3. Here one may see differences between the
% two metrics. My thanks to Roger Stafford for pointing out this
% class of counter-examples.
%
% Thanks are also due to Roger for pointing out a proof that the
% bounding rect must always contain an edge of the convex hull in
% both the minimal perimeter and area cases.
%
%
% Example usage:
%  x = rand(500001);
%  y = rand(500001);
%  tic[rxryarea] = minboundrect(xy);toc
%
%  Elapsed time is 0.105754 seconds.
%
%  [rxry]
%  ans =
%      0.99994  -4.2515e-06
%      0.99998      0.99999
%   2.6441e-05            1
%  -5.1673e-06   2.7356e-05
%      0.99994  -4.2515e-06
%
%  area
%  area =
%      0.99994
%
%
% See also: minboundcircle minboundtri minboundsphere
%
%
% Author: John D‘Errico
% E-mail: woodchips@rochester.rr.com
% Release: 3.0
% Release date: 3/7/07
% default for metric
if (nargin<3) || isempty(metric)
  metric = ‘a‘;
elseif ~ischar(metric)
  error ‘metric must be a character flag if it is supplied.‘
else
  % check for ‘a‘ or ‘p‘
  metric = lower(metric(:)‘);
  ind = strmatch(metric{‘area‘‘perimeter‘});
  if isempty(ind)
    error ‘metric does not match either ‘‘area‘‘ or ‘‘perimeter‘‘‘
  end
  
  % just keep the first letter.
  metric = metric(1);
end
% preprocess data
x=x(:);
y=y(:);
% not many error checks to worry about
n = length(x);
if n~=length(y)
  error ‘x and y must be the same sizes‘
end
% start out with the convex hull of the points to
% reduce the problem dramatically. N

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5399  2011-12-12 18:39  matlab_minrect\MinRect.m

     文件      71168  2011-12-12 19:48  matlab_minrect\外接矩形.doc

     文件        570  2011-12-12 18:38  matlab_minrect\最小外接矩形.txt

     目录          0  2014-06-13 13:25  matlab_minrect

----------- ---------  ---------- -----  ----

                77137                    4


评论

共有 条评论