我有这种形式的功能
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的函数。还有另一种方式吗?
答案 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)