Matlab 二维单元阵列中的倍频程附加

Matlab 二维单元阵列中的倍频程附加,matlab,octave,cell-array,Matlab,Octave,Cell Array,我试图在2D单元格数组行的末尾追加一个元素。我的代码是: b = cell(5, 0) b(1) = {b(1, :), 2} % Trying to append at the end of the first row 这给了我一个错误:error:A(I)=X:X必须与I具有相同的大小 我还尝试了各种其他形式,例如: b = cell(5, 0) b(1, end+1) = 2 % Ok, inserts 2 at [1,1] b(2, end+1) = 3 % No, ins

我试图在2D单元格数组行的末尾追加一个元素。我的代码是:

b = cell(5, 0)
b(1) = {b(1, :), 2}   % Trying to append at the end of the first row
这给了我一个错误:
error:A(I)=X:X必须与I具有相同的大小

我还尝试了各种其他形式,例如:

b = cell(5, 0)
b(1, end+1) = 2   % Ok, inserts 2 at [1,1]
b(2, end+1) = 3   % No, inserts 3 at [2,2] instead of [2, 1]

您似乎对单元格数组索引感到困惑

如果要在矩阵(在您的情况下是单元格数组)中的行末尾追加元素,则必须确保赋值后所有行的大小相同,否则将触发有关维度不匹配的错误

b(1)={b(1,:),2}
不同的是,以下方法应该有效:

b(1, end + 1) = 2
或者,如果要将整列单元格数组附加到
b
,请使用水平连接,例如:

b = [b, {2; 3; 4; 5; 6}];

这应该在
b

的每一行末尾附加一个单元格。元素被插入
[2,2]
而不是
[1,1]
的原因是,当您尝试插入第二个元素时,
end
表示的值已从
0
增加到
1

以下内容应满足您的需要:

>> b = cell(5, 0)

b = 

Empty cell array: 5-by-0

>> b(1,1) = {2}

b = 

    [2]
    []
    []
    []
    []

>> b(2,1) = {3}

b = 

    [2]
    [3]
    []
    []
    []

>> 

为什么
b(2,end+1)=3
[11]
插入
3
?对不起,我实际上是指
[21]
实际上,我知道会有5行。但我事先不知道每行将包含多少列。在这种情况下如何初始化单元格数组?@RafiKamal你的问题不清楚,但现在我明白了。您已经很好地初始化了单元数组,只需水平连接即可。我已经修改了答案。