我在处理scilab函数方面遇到了麻烦;我有一个1x6向量形式的输出,我想有一个简单的方法来使它与6变量函数一起工作。
v = [1,2,3,4,5,6] ;
function z=f(a,b,c,d,e,f)
...
endfunction
f(v) //returns error
谢谢
答案 0 :(得分:1)
Scilab没有Python的fcn(*v)
函数调用的直接类比,它将v的条目解释为多个参数。
如果您希望能够将您的功能称为fcn(1,2,3,4,5,6)
或v = 1:6; fcn(v)
,那么您需要将此子句添加到其开头:
function z=fcn(a,b,c,d,e,f)
if argn(2)==1 then
[a,b,c,d,e,f] = (a(1),a(2),a(3),a(4),a(5),a(6))
end
// rest of function
z = a+b+c+d+e+f
endfunction
现在v=1:6; fcn(v)
返回21,就像fcn(1,2,3,4,5,6)
一样。
条件argn(2)==1
检查函数是否接收到一个参数而不是预期的6;如果是这种情况,则假定它是一个向量。如果该向量没有足够的元素(6)用于元组赋值,则抛出错误。