这是我正在寻找的一个例子:
>> foo = [88, 12];
>> [x, y] = foo;
Run Code Online (Sandbox Code Playgroud)
之后我会期待这样的事情:
>> x
x =
88
>> y
y =
12
Run Code Online (Sandbox Code Playgroud)
但相反,我得到的错误如下:
??? Too many output arguments.
Run Code Online (Sandbox Code Playgroud)
我想deal()可能会这样做,但它似乎只适用于细胞.
>> [x, y] = deal(foo{:});
??? Cell contents reference from a non-cell array object.
Run Code Online (Sandbox Code Playgroud)
我该如何解决我的问题?如果我想单独处理它们,我必须经常索引1和2吗?
可能重复:
如何在MATLAB中进行多项赋值?
处理单元格数组时,我可以使用该deal()函数将单元格分配给输出变量,例如:
[a, b, c] = deal(myCell{:});
Run Code Online (Sandbox Code Playgroud)
要不就:
[a, b, c] = myCell{:};
Run Code Online (Sandbox Code Playgroud)
我想对一个简单的数组做同样的事情,例如:
myArray = [1, 2, 3];
[a, b, c] = deal(myArray(:));
Run Code Online (Sandbox Code Playgroud)
但这不起作用.有什么选择?
也许我被Python宠坏了,但Octave是否允许直接从向量中分配变量的值?就是这样做
a,b,c=[5,6,7]
Run Code Online (Sandbox Code Playgroud)
将导致a=5, b=6, c=7.我尝试了很多组合编写上面的表达式,但还没有运气......