2013-05-12 1 views
1

2D 셀 배열 행 끝에 요소를 추가하려고합니다. 내 코드는 다음과 같습니다 error: A(I) = X: X must have the same size as I2D 셀 배열에 옥타브 추가

나는 또한 같은 다양한 다른 형태를 시도했습니다 :

b = cell(5, 0) 
b(1) = {b(1, :), 2} % Trying to append at the end of the first row 

이 나에게 오류를 제공

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

이유 '[1]'에서해야'B (2, 끝 + 1) = 3' 삽입'3'? – Shai

+0

죄송합니다. 실제로 의미가 있습니다. [2 1] –

답변

4

당신이 셀 어레이와 혼동 것 같다 색인 생성.

행렬의 행 끝에 요소 (셀 배열)를 추가하려면 할당 후 모든 행의 크기가 동일한 지 확인해야합니다. 불일치하는 치수에 대한 오류가 발생합니다.

대신 b(1) = {b(1, :), 2}의 다음 작업을해야합니다 :

b(1, end + 1) = 2 

을 다른 방법으로, b에 세포의 전체 열 배열을 추가하려는 경우, 예를 들어, 수평 연결을 사용

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

각 셀 끝에 b의 끝에 단일 셀을 추가해야합니다.

+0

사실, 5 행이 있다는 것을 알고 있습니다. 그러나 각 행에 포함될 열의 수를 미리 알 수는 없습니다. 이 경우에 셀 배열을 초기화하는 방법은 무엇입니까? –

+0

@RafiKamal 귀하의 질문에서 명확하지 않았지만 지금은 이해합니다. 셀 배열을 잘 초기화했으면 수평으로 연결해야합니다. 나는 그 답을 수정했다. –

2

요소가 [2, 2]에 삽입하지 [1, 1]됩니다 이유는 시간에 의해 두 번째 요소를 삽입하려고 end로 표시 값이 10에서 증가한다는 것입니다.

다음은 무엇을해야한다 다음

>> b = cell(5, 0) 

b = 

Empty cell array: 5-by-0 

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

b = 

    [2] 
    [] 
    [] 
    [] 
    [] 

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

b = 

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

>>