如何让多变量函数与向量一起工作
How to have multiple variable function work with vectors
我在处理 scilab 函数时遇到问题;我有一个 1x6 向量形式的输出,我想有一个简单的方法让它与 6 变量函数一起工作。
v = [1,2,3,4,5,6] ;
function z=f(a,b,c,d,e,f)
...
endfunction
f(v) //returns error
谢谢
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)
returns 21,就像 fcn(1,2,3,4,5,6)
一样。
条件argn(2)==1
检查函数是否接收到一个参数而不是预期的6个;如果是这种情况,它假定它是一个向量。如果该向量没有足够的元素 (6) 用于元组分配,则会抛出错误。
我在处理 scilab 函数时遇到问题;我有一个 1x6 向量形式的输出,我想有一个简单的方法让它与 6 变量函数一起工作。
v = [1,2,3,4,5,6] ;
function z=f(a,b,c,d,e,f)
...
endfunction
f(v) //returns error
谢谢
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)
returns 21,就像 fcn(1,2,3,4,5,6)
一样。
条件argn(2)==1
检查函数是否接收到一个参数而不是预期的6个;如果是这种情况,它假定它是一个向量。如果该向量没有足够的元素 (6) 用于元组分配,则会抛出错误。