2011-10-10 4 views
3

예를 들어, 논리 배열의 스택을 보유하고있는 셀 배열이 있다고합니다.이진 연산의 연결을 벡터화

matrices = 
    [225x400 logical] 
    [225x400 logical] 
    .... 
    [225x400 logical] 

셀 어레이에는 잠재적으로 수백 개의 매트릭스가있을 수 있습니다.

이 행렬에 대한 이진 연산의 연결 결과 인 단일 행렬을 계산하고 싶습니다.

result = matrices{1} & matrices{2} & matrices{3} & ..., etc. 

내 질문 :는 반복하지 않고이 작업을 수행 할 수 있습니까? 그렇다면이 계산 MATLAB을 벡터화 할 때 어떤 이점이 있습니까? 행렬의 스택 차원 배열로 표현하면 어떻게

, 예를 들어, (대신 셀 어레이?) :

Name      Size     

    matrices     225x400x100 

는 3D 매트릭스 대 세포 배열로 스택의 이러한 유형을 들고 어떤 혜택이 있습니까 ? (이 마지막 예제에서 AND100 행렬이고 각각 ​​크기가 225x400 임).

PS : 나는 당신이 셀 어레이에 벡터화 계산을 할 수없는 AND, XOROR

답변

4

에 솔루션에 관심이 있어요. 3D 배열 (cell2mat 사용)으로 변환하거나 더 나은 방법으로 3D 배열을 사전 할당해야합니다.

그런 다음, 크기는 225x400x100 당신은 할 수 있습니다 :

나 :

any(matrices,3) 

과 :

all(matrices,3) 

을 XOR : 셀 어레이의

mod(sum(matrices, 3), 2) 

장점은 메모리 보존 (eg 일단 셀을 삭제하면 셀 배열이 안정되면 Matlab 루프보다 훨씬 빠른 벡터화 된 계산을위한 행렬로 변환해야합니다.

+0

잘 작동합니다. 감사! –

+2

cellarray에서 3D 행렬로 변환하려면 다음을 사용하십시오 :'cat (3, matrices {:})' – Amro