如何将矢量变量"解包"成几个变量?

kjo*_*kjo 6 matlab

在Python中,可以通过赋值将3元组(例如)"解包"为三个单独的变量:

In [1]: triplet = (1, 'two', (True, True, True))

In [2]: first, second, third = triplet

In [3]: third
Out[3]: (True, True, True)

In [4]: second
Out[4]: 'two'

In [5]: first
Out[5]: 1
Run Code Online (Sandbox Code Playgroud)

可以在MATLAB中做这样的事情吗?

我尝试过的一切都失败了.例如:

>> triplet = {1, 'two', [true, true, true]};
>> [first second third] = triplet
Too many output arguments.
Run Code Online (Sandbox Code Playgroud)

Sue*_*ver 10

您可以使用{:}索引来依赖单元格扩展,这会创建一个逗号分隔的列表,该列表可以分配给三个输出值.

[a, b, c] = triplet{:};
Run Code Online (Sandbox Code Playgroud)

如果triplet是矩阵,则可以先将其转换为单元格数组num2cell.

triplet = [1, 2, 3];
tripletcell = num2cell(triplet);

[a, b, c] = tripletcell{:};
Run Code Online (Sandbox Code Playgroud)