Octave附加在2D单元阵列中

时间:2013-05-12 08:28:08

标签: 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 must have the same size as 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]

2 个答案:

答案 0 :(得分:5)

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

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

而不是b(1) = {b(1, :), 2},以下内容应该有效:

b(1, end + 1) = 2

或者,如果要将整个列的单元格数组附加到b,请使用水平串联,例如:

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

这应该在b的每一行末尾添加一个单元格。

答案 1 :(得分:2)

元素在[2, 2]而非[1, 1]插入的原因是,当您尝试插入第二个元素时,end表示的值已从{{1}增加转到0

以下内容可以满足您的需求:

1