0

我想将 2 个不同大小的单元格放在同一个struct. 例如:

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

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

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

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

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

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

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

有什么建议么?

4

1 回答 1

1

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

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

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

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

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

于 2016-03-25T18:39:20.233 回答