2014-09-02 3 views
3

저는 Matlab을 사용하는 초보자이며 셀 배열을 보았습니다.하지만 인덱스 작성법을 잘 모르겠습니다.Matlab에서 셀 배열을 사용하는 방법?

I 수행하여 5 행 3 COLS의 셀 어레이를 작성한

다음

A = cell(5,3); 

지금 첫번째 행에 의해 세포 배열을 통해 이동하는 것이 가능하고 어떻게 중첩 for 루프처럼 내지 컬럼 정상적인 배열을 위해서? 예를 들어

for i=1:5 
     for j=1:3 
      A{i,j} = {"random"} //random numbers/ string etc 
     end 
    end 

답변

5

당신은 색인의 두 가지 방법이 즉 괄호 (즉 (...)) 및 중괄호 (즉 {...}).

는 실시 예에 사용하는 셀 어레이를 만들 수 : paranthesis를 사용

A = {3, 9,  'a'; 
    'B', [2,4], 0}; 

인덱싱 세포 배열 AS 셀 어레이 의 일부를 반환한다. 예를 들어

A(:,3) 

A{1,3} 

단일 문자를 돌려, 예를 들면, 브레이스는 CONTENTS에게 해당 셀의를 반환하여 2 바이 1 셀 어레이를

ans = 

    'a' 
    0 

인덱싱 반환

ans = 

a 

괄호를 사용하여 단일 셀을 반환 할 수도 있지만 은 여전히 ​​셀입니다. 중괄호를 사용하여 여러 셀을 반환 할 수도 있지만 comma separated lists으로 반환됩니다.이 값은 조금 더 고급입니다.

셀에 할당 할 때 매우 유사한 개념이 적용됩니다. 당신은 괄호를 사용하여 지정하는 경우, 당신은 적절한 크기의 세포 행렬을 지정해야합니다 : 당신은 괄호를 사용하여 단일 값을 할당하면

A(:,1) = {1,1} 

은, 다음 (셀에 넣어합니다 즉 A(1) = 2는 것이다 오류가 발생하므로 A(1) = {2}을 수행해야합니다. 따라서 중괄호를 사용하는 것이 셀의 내용에 직접 영향을 미치기 때문에 더 좋습니다. 그래서 올 바르게 되겠습니다.

A{1} = 2 

이것은 A(1) = {2}과 같습니다. A {1} = {2}는 잘못한 것이 아니라 셀 안에있는 셀을 중첩하여 나중에 발생한 일은 없을 것이라고합니다.

A{2,2}(1) 

ans = 

    3 
: 당신이 당신의 세포 중 하나 내부에 행렬이있는 경우

마지막으로, 다음 matlab에 직접과 같이 그 행렬에 색인을 수행 할 수 있습니다

2

:

for i=1:5 
    for j=1:3 
     A{i,j} = rand(3) 
    end 
end 


그냥 =의 오른쪽에있는 {}를 건너 완벽하게 잘 작동합니다

셀 어레이와
관련 문제