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,输入参数太多错误?的主要内容,如果未能解决你的问题,请参考以下文章