在同一个结构中加入两个不同大小的单元格

时间:2016-03-25 18:32:26

标签: matlab matlab-struct

我想在同一个struct中放置两个不同大小的单元格。例如:

a = {'one', 'two', 'three'};
b = {'four', 'five', 'six', 'seven'};

struct("setA", a, "setB", b);

每当我尝试这样做时,MATLAB都会抛出以下错误:

  

错误:struct:参数2的尺寸与参数4的尺寸不匹配

根据错误消息,问题是细胞的尺寸。此外,如果我从单元格b中删除一个元素,则该过程完成且没有错误:

a = {'one', 'two', 'three'};
b = {'four', 'five', 'six'};

struct("setA", a, "setB", b);

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您需要将单元格包装在另一个单元格中,以在其字段中创建包含单元格的标量 struct

struct('setA', {a}, 'setB', {b})

%   setA: {'one'  'two'  'three'}
%   setB: {'four'  'five'  'six'  'seven'}

默认情况下,struct假定某个单元格意味着您需要一个多元素struct,其中每个单元格元素都属于不同的struct。它使用这些单元格的尺寸来确定结果struct的大小。在您的情况下,两个单元格数组(ab)的大小不同,因此会混淆。

通过将每个单元包装在另一个单元格内,MATLAB将创建一个包含您期望的单元格数组的标量结构。