指定输入时,输入参数不足

时间:2015-07-17 18:03:39

标签: matlab

这感觉就像一个非常愚蠢的问题,因为错误信息非常直接,所以我花了一些时间来创建尽可能简单的完整示例。看起来在构造函数中调用构造函数时(我认为我首先注意到的是普通方法而不是构造函数)并且对象以相反的顺序放入数组中,然后matlab会给出一个not enough input arguments error例如:

classdef practice
    methods
        function self = practice(b)
            b
            if b>1
                for i = 2:-1:1
                    s(i) = practice(b-i);
                end
            end
        end
    end
end

称为

practice(4)

给出

b =

     4


b =

     2


b =

     0

Error using practice (line 4)
Not enough input arguments.

Error in practice (line 7)
                    s(i) = practice(b-i);

Error in practice (line 7)
                    s(i) = practice(b-i);

这种情况很奇怪,因为只有在到达b <= 1的地方才会失败,但我的真实代码并没有像这样失败。关于究竟出了什么问题以及如何解决它的任何想法?

1 个答案:

答案 0 :(得分:1)

我认为问题出在第一次迭代,b = 4时,您设置了s(i) = practice(b-i)i = 2。这会将s初始化为practice length 2的数组,但由于您首先初始化第二个元素,因此第一个元素将初始化为默认practice,其中输入b未定义。

如果您将索引更改为i次迭代为i = 1:2,则应解决此问题。

修改

例如,尝试清除工作区,然后执行以下操作:

s(2) = practice(0)

这将尝试将practice(0)分配给s(2),然后s(1)将被分配默认的初始化practice,在这种情况下,b未定义。这将复制您遇到的问题。解决方案是首先分配到s(1),然后分配到s(2)