2013-05-12 41 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] 
    [] 
    [] 
    [] 

>>