创建结构点,然后计算两点之间的距离

时间:2014-11-28 00:14:24

标签: arrays matlab struct cell-array euclidean-distance

我需要一些帮助来确定如何创建结构点。

我需要两个字段x和y然后我想创建一个计算这两个点之间距离的函数。

我现在拥有的是:

function [ out ] = pointDist3( pointpair1, pointpair2)
%FUNCTION pointDist3 takes in any two pairs of points and 
% Calling sequence:
%   out = pointDist3(varargin)
%DEFINE VARIABLES
% minargs, maxargs = error checking variables 
% pointpair1 = structure containing fields for point 1: x1 and y1
% pointpair2 = structure containing fields for point 2: x2 and y2
% out = structure containing field distance

%CHECK FOR VALID INPUT
if ~isfield(pointpair1,'x', pointpair2, 'x' ) || ~isfield(pointpair1,'y', pointpair2, 'y')
    error('Input argument does not contain fields "x" and "y" for both points');
else

    out = sqrt((pointpair1.x-pointpair2.x)^2+(pointpair1.y-pointpair2.y)^2);

   end

end

1 个答案:

答案 0 :(得分:0)

感谢大卫的修复!这是工作版本

function [ out ] = pointDist3( pointpair1, pointpair2)
%FUNCTION pointDist3 takes in any two pairs of points and 
% Calling sequence:
%   out = pointDist3(varargin)
%DEFINE VARIABLES
% minargs, maxargs = error checking variables 
% pointpair1 = structure containing fields for point 1: x1 and y1
% pointpair2 = structure containing fields for point 2: x2 and y2
% out = structure containing field distance

%CHECK FOR VALID INPUT
    if ~isfield(pointpair1,'x')|| ~isfield(pointpair2, 'x' ) || ~isfield(pointpair1,'y') || ~isfield(pointpair2, 'y')
        error('Input argument does not contain fields "x" and "y" for both points');
    else

        out = sqrt((pointpair1.x-pointpair2.x)^2+(pointpair1.y-pointpair2.y)^2);
    end 
end

TESTER:

   >> pointA.x = 3

pointA = 

    x: 3

>> pointA.y =4

pointA = 

    x: 3
    y: 4

>> pointB.x=4

pointB = 

    x: 4

>> pointB.y=5

pointB = 

    x: 4
    y: 5

>> pointDist3(pointA, pointB)

ans =

    1.4142