我刚刚遇到了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
Run Code Online (Sandbox Code Playgroud)
我初始化了一个并尝试通过调用add函数
a = Addition(1, 2)
a.add(2,4)
Run Code Online (Sandbox Code Playgroud)
但是,matlab给出的错误是:
使用添加/添加时出错
输入参数太多.
有人可以告诉我为什么会发生这种奇怪的事情吗?
无论何时在类中定义方法,都必须始终将实例obj作为参数传递.请参阅此处的文档.
在Matlab中处理类的实例时,代码
a.add(2,4)
Run Code Online (Sandbox Code Playgroud)
相当于
add(a, 2, 4)
Run Code Online (Sandbox Code Playgroud)
由于您(错误地)定义了您的实例方法,因为function add(c, d)Matlab正在检测3个参数而不是2个.
您的方法声明必须是function add(obj, c, d).
阅读有关静态方法和实例方法的更多信息,以确定是否需要其中一种方法.
由于您没有在方法/函数中使用任何属性,因此您add似乎需要静态方法而不是实例方法.