Matlab,输入参数太多错误?

Posted

技术标签:

【中文标题】Matlab,输入参数太多错误?【英文标题】:Matlab, Too many input arguments Error? 【发布时间】:2014-08-19 11:33:43 【问题描述】:

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

使用加法/加法时出错 输入参数过多。

谁能告诉我为什么会发生这种奇怪的事情?

【问题讨论】:

【参考方案1】:

当你在你的类中定义一个方法时,你必须总是传递实例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 中使用任何属性,因此您似乎需要静态方法而不是实例方法。

【讨论】:

【参考方案2】:

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

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

我最终经常遇到此错误,因此如果对某人有帮助,请考虑分享此错误的可能原因。

【讨论】:

由于我的构造函数名称中有一个细微的拼写错误,我收到了错误。

以上是关于Matlab,输入参数太多错误?的主要内容,如果未能解决你的问题,请参考以下文章

matlab 提取多个输出参数中的某一个

lisp错误: 参数太多

BCILAB MATLAB 错误“输入参数过多”

MATLAB 奇怪的“输入参数过多”错误

Matlab 类方法:参数太多

您输入了太多参数 excel IF 错误