在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
可以在MATLAB中做这样的事情吗?
我尝试过的一切都失败了。 E.g:
>> triplet = {1, 'two', [true, true, true]};
>> [first second third] = triplet
Too many output arguments.
答案 0 :(得分:9)
您可以使用{:}
索引依赖单元格扩展,这会创建一个comma-separated list,可以将其分配给三个输出值。
[a, b, c] = triplet{:};
如果triplet
是矩阵,您可以先使用num2cell
将其转换为单元格数组。
triplet = [1, 2, 3];
tripletcell = num2cell(triplet);
[a, b, c] = tripletcell{:};