sparea.m
来自「麻省理工学院的人工智能工具箱,很珍贵,希望对大家有用!」· M 代码 · 共 51 行
M
51 行
function area = sparea(x,y,dim)
%SPAREA Signed polygon area.
% SPAREA(X,Y) returns the area of the polygon specified by
% the vertices in the vectors X and Y. If X and Y are matrices
% of the same size, then POLYAREA returns the area of
% polygons defined by the columns X and Y. If X and Y are
% arrays, POLYAREA returns the area of the polygons in the
% first non-singleton dimension of X and Y. Areas are positive
% for clockwise polygons and negative for counter-clockwise
% polygons.
%
% The polygon edges must not intersect. If they do, POLYAREA
% returns the absolute value of the difference between the clockwise
% encircled areas and the counterclockwise encircled areas.
%
% POLYAREA(X,Y,DIM) returns the area of the polygons specified
% by the vertices in the dimension DIM.
% Written by: A. Kim
% Copyright 1996-2002 Systems Planning and Analysis, Inc. and The MathWorks, Inc.
% $Revision: 1.3 $ $Date: 2002/03/20 21:26:54 $
if nargin==1, error('Not enough inputs.'); end
if ~isequal(size(x),size(y)), error('X and Y must be the same size.'); end
if nargin==2,
[x,nshifts] = shiftdim(x);
y = shiftdim(y);
elseif nargin==3,
perm = [dim:max(length(size(x)),dim) 1:dim-1];
x = permute(x,perm);
y = permute(y,perm);
end
siz = size(x);
if ~isempty(x),
area = reshape(sum( (x([2:siz(1) 1],:) - x(:,:)).* ...
(y([2:siz(1) 1],:) + y(:,:)))/2,[1 siz(2:end)]);
else
area = sum(x); % SUM produces the right value for all empty cases
end
if nargin==2,
area = shiftdim(area,-nshifts);
elseif nargin==3,
area = ipermute(area,perm);
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?