Matlab 为什么函数参数被认为是未定义的变量?

Matlab 为什么函数参数被认为是未定义的变量?,matlab,Matlab,我已经四处寻找了一段时间,但我似乎找不到描述和回答我一直遇到的问题的东西。也就是说,我在一个ball类中定义了一个函数,该函数检查它是否与另一个球相交(由于球保持在同一个z平面上,并且所有球的半径都相同,我将问题简化为相交圆的问题)。此函数如下所示(其中obj和other都属于ball类,并且ball类包含长度为3的位置向量): 函数相交=球相交(obj,其他) 相交=(对象位置(1)-other.position(1))^2+(对象位置(2)-other.position(2))^2必须使用两

我已经四处寻找了一段时间,但我似乎找不到描述和回答我一直遇到的问题的东西。也就是说,我在一个
ball
类中定义了一个函数,该函数检查它是否与另一个球相交(由于球保持在同一个z平面上,并且所有球的半径都相同,我将问题简化为相交圆的问题)。此函数如下所示(其中
obj
other
都属于
ball
类,并且
ball
类包含长度为3的位置向量):

函数相交=球相交(obj,其他)

相交=(对象位置(1)-other.position(1))^2+(对象位置(2)-other.position(2))^2必须使用两个输入参数调用球相交


最有可能的情况是,您希望将
ball
的第56行更改为
如果ball\u交叉点(obj,other)
,或者
如果obj.ball\u交叉点(other)

采纳您的第一个建议,我认为第二个建议也会奏效。在许多其他语言中,可以调用成员函数,而不必显式地提到调用者——我想在Matlab中是不行的。
function intersected = ball_intersection(obj, other)
    intersected = (obj.position(1)-other.position(1))^2+(obj.position(2)-other.position(2))^2 <= (2*ball.radius)^2;
end
Undefined variable other.

Error in ball/ball_intersection (line 29)
            intersected = (obj.position(1)-other.position(1))^2+(obj.position(2)-other.position(2))^2 <= (2*ball.radius)^2;

Error in ball/move (line 56)
                if ball_intersection(other)

Error in finalproject (line 41)
    cueball.move(0.0001, 0, 0, 9.32, 4.65, otherball);