Matlab,输入参数太多错误?

use*_*716 4 matlab

我刚刚遇到了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给出的错误是:

使用添加/添加时出错
输入参数太多.

有人可以告诉我为什么会发生这种奇怪的事情吗?

gir*_*ire 7

无论何时在类中定义方法,都必须始终将实例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似乎需要静态方法而不是实例方法.