如何使用containers.Map在MATLAB中保存单元格数组?

时间:2017-03-22 06:51:48

标签: matlab dictionary cell

我有几个单元格数组,由不等长的数组组成,例如

a = {[0]; [1 2]; [3 4 5]};
b = {[1 2 3]; [0 3]};

我希望将这些单元格保存为MATLAB中类似JSON或类似地图的对象,可以通过键访问。钥匙可以是数字。例如,如果我致电a,我希望获得c(1),如果我致电b,则会获得c(2)

containers.Map对象可能很有用,但它的值类型不能是单元格数组。

这个问题有解决方法吗?

1 个答案:

答案 0 :(得分:2)

您可以简单地使用containers.Map,因为值类型可以是任何类型:

  

字符向量,指定值的数据类型。可能   值是'any','char','logical','double','single','int8',   'uint8','int16','uint16','int32','uint32','int64'或'uint64'。

     

默认值:'any'创建空Map对象或指定时   不同大小或类型的值,否则由数据确定   valueSet的类型。

使用默认Map ...

map = containers.Map();
map('1') = a;
map('2') = b;

..并获取值:

>> map('1')

ans = 

    [         0]
    [1x2 double]
    [1x3 double]

如果您希望键是数字,您可以在构造函数中定义键类型...

map  = containers.Map('KeyType', 'double', 'ValueType', 'any');
map(1) = a;
map(2) = b;

...并获取值:

>> map(2)

ans = 

    [1x3 double]
    [1x2 double]