如何在Scilab中将变量分成两个,如[x,y] = X?

时间:2017-03-25 16:11:13

标签: scilab

语法[x, y] = X,将X(1)分配给xX(2)分配给y,绝对可以在Scilab中使用,例如:

[p, q] = cdfnor("PQ", 0, 0, 1)

但如果我尝试一下,我会得到一个"不兼容的分配"错误:

a = [0, 1]
[x, y] = a
Incompatible assignation: trying to assign 1 values in 2 variables.

如何在我自己的代码中复制此行为?

1 个答案:

答案 0 :(得分:3)

Scilab具有元组赋值,例如[x, y] = (0, 1)。这有点接近你想要的,但是这个括号语法似乎不对应于任何Scilab数据结构(我用 list 尝试了这个,但没有成功)。

所以看起来需要一个具有可变数量的输出变量(varargout)的函数,它接受一个向量并返回一个变量列表。似乎没有内置的方法将矢量转换为列表,所以我使用了一个循环。该函数名为deal,因为它与Matlab's deal function相似。

function varargout = deal(a)
    varargout = list()
    for i = 1:length(a)
        varargout(i) = a(i)
    end
endfunction

a = [0, 1]
[x, y] = deal(a)