功能中没有足够的输入参数

时间:2016-03-31 13:40:33

标签: matlab function

我有这种形式的功能

    function [g] = g(i,j)
    k=1;

    if i==0
       g=0;
    elseif i==k
       g=j;
    end

我不想要代码中的第二行。相反,我希望函数从主程序中读取k。我不想写

    function [g] = g(i,j,k) 

相反,因为这样我将不得不在主程序的代码中写出g作为i,j和k的函数。还有另一种方式吗?

1 个答案:

答案 0 :(得分:3)

您可以使用匿名函数创建closure。将您的功能定义为

function [g] = g(i,j,k)
    if i==0
       g=0;
    elseif i==k
       g=j;
    end
end

然后在您的主脚本中,您可以执行类似

的操作
k=1;
g2 = @(i,j)g(i,j,k);

现在,您可以按照g2的方式拨打g,但k将为1,并且会在主脚本中定义,而不是在您的主脚本中定义功能

或者您甚至可以完全跳过k并定义:

g1 = @(i,j)g(i,j,1)