2015-06-20 2 views
2

У меня проблемы с функциями scilab; У меня есть вывод в виде вектора 1x6, и я хотел бы иметь простой способ заставить его работать с переменной переменной.Как работать с несколькими переменными с векторами

v = [1,2,3,4,5,6] ; 
function z=f(a,b,c,d,e,f) 
... 
endfunction 
f(v) //returns error 

Спасибо

ответ

2

Scilab не имеет прямого аналога вызова fcn(*v) функции Python, которая будет интерпретировать записи клиновых как несколько аргументов.

Если вы хотите быть в состоянии назвать вашу функцию или как 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) для назначения набора, возникает ошибка.

Смежные вопросы