2016-07-04 93 views
4

在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?

我试过的一切都失败了。例如: -

>> triplet = {1, 'two', [true, true, true]}; 
>> [first second third] = triplet 
Too many output arguments. 

回答

5

你可以依靠使用{:}索引它会创建一个可以分配给三个输出值comma-separated list细胞扩增。

[a, b, c] = triplet{:}; 

如果triplet是一个矩阵,而不是,你可以先将其转换为使用num2cell单元阵列。

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

[a, b, c] = tripletcell{:}; 
+0

谢谢。我认为“交易”是两者中较为一般的,因为即使“三重”是“双倍(1,3)”,它也会起作用。 – kjo

+0

@kjo不是,你必须提供每个输出作为输入参数来处理。我更新了一个使用数字数组的示例。 – Suever