2013-05-12 65 views
1

我试图在二维单元阵列行末尾添加一个元素。我的代码是:在二维单元阵列中追加八度数

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] 
+0

何必'B(2,终端+ 1)= 3'插入'3'在'[1]'? – Shai 2013-05-12 08:36:08

+0

对不起,我的意思是'[2 1]' – 2013-05-12 08:41:55

回答

4

看来你是混淆单元阵列索引。

如果你想在矩阵的行尾添加元素(在你的情况下是一个单元格数组),你仍然必须确保所有的行在赋值后大小相同,否则你会触发有关尺寸不匹配的错误。取而代之的b(1) = {b(1, :), 2}

,下面应该工作:

b(1, end + 1) = 2 

另外,如果要追加细胞的整列阵列b,使用横向拼接,例如:

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

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

+0

其实,我知道会有5行。但是我不知道每行将包含多少列。在这种情况下如何初始化单元阵列? – 2013-05-12 09:01:13

+0

@RafiKamal你的问题还不清楚,但现在我明白了。你已经初始化了你的单元阵列,你只需要水平连接即可。我已经修改了答案。 – 2013-05-12 09:11:49

2

元素被插入[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] 
    [] 
    [] 
    [] 

>>