我刚刚遇到了matlab编程问题。我想尝试从类中调用一个方法 而且我的课很简单,就像这样
classdef Addition
properties
a;
b;
end
methods
function obj = Addition(a, b)
obj.a = a;
obj.b = b;
end
function add(c, d)
fprintf(c + d);
end
end
end
我初始化a并尝试通过
调用add函数a = Addition(1, 2)
a.add(2,4)
然而,matlab给出了错误:
使用添加/添加时出错 输入参数太多。
有人可以告诉我为什么会发生这种奇怪的事情吗?
答案 0 :(得分:6)
无论何时在类中定义方法,都必须始终将实例obj
作为参数传递。请参阅文档here。
在Matlab中处理类的实例时,代码
a.add(2,4)
相当于
add(a, 2, 4)
由于您(错误地)将您的实例方法定义为function add(c, d)
,因此Matlab检测到3个参数而不是2个。
您的方法声明必须为function add(obj, c, d)
。
详细了解static methods和instance methods,以决定是否需要其中一种。
由于您没有在方法/函数add
中使用任何属性,因此您似乎需要静态方法而不是实例方法。
答案 1 :(得分:1)
当我使用一个现有的类来创建另一个类而忘记按照新的类名更改构造函数名称时,会出现此错误。例如,在下面的代码中,如果我忘记将OldClass
下的NewClass
更改为methods()
,则会收到此错误。如果我更正名称,问题就解决了。
classdef NewClass
properties()
end
methods()
function obj = OldClass()
end
end
end
我最终经常会收到此错误,因此请考虑共享一个可能导致此错误的原因(如果有帮助的话)。