Matlab,输入参数太多错误?

时间:2014-08-19 11:33:43

标签: 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

我初始化a并尝试通过

调用add函数
a = Addition(1, 2)  
a.add(2,4)  

然而,matlab给出了错误:

  

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

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

2 个答案:

答案 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 methodsinstance methods,以决定是否需要其中一种。

由于您没有在方法/函数add中使用任何属性,因此您似乎需要静态方法而不是实例方法。

答案 1 :(得分:1)

当我使用一个现有的类来创建另一个类而忘记按照新的类名更改构造函数名称时,会出现此错误。例如,在下面的代码中,如果我忘记将OldClass下的NewClass更改为methods(),则会收到此错误。如果我更正名称,问题就解决了。

classdef NewClass
    properties()
    end
    methods()
        function obj = OldClass()
        end
    end
end

我最终经常会收到此错误,因此请考虑共享一个可能导致此错误的原因(如果有帮助的话)。