我想在同一个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);
有什么建议吗?
答案 0 :(得分:1)
您需要将单元格包装在另一个单元格中,以在其字段中创建包含单元格的标量 struct
。
struct('setA', {a}, 'setB', {b})
% setA: {'one' 'two' 'three'}
% setB: {'four' 'five' 'six' 'seven'}
默认情况下,struct
假定某个单元格意味着您需要一个多元素struct
,其中每个单元格元素都属于不同的struct
。它使用这些单元格的尺寸来确定结果struct
的大小。在您的情况下,两个单元格数组(a
和b
)的大小不同,因此会混淆。
通过将每个单元包装在另一个单元格内,MATLAB将创建一个包含您期望的单元格数组的标量结构。