2012-01-01 5 views
8

의 셀에서 요소를 삭제, 첫 번째 줄의 요소가 0 인 열을 제거하기 위해, 우리는 사용할 수 있습니다매트릭스에서 matlab에

ind2remove = (A(1,:) == 0); 
A(:,ind2remove) = []; 

을 나는 A 셀 인 경우 그렇게하려면 어떻게 ? 나는 첫 번째 행의 요소는 I 시도 0

인 열을 제거하려면 :

ind2remove = (A{1,:} == 0); 
A{:,ind2remove} = []; 

하지만 오류 메시지가 있어요 :

??? Error using ==> eq 
Too many input arguments. 

Error in ==> ind2remove = (A{1,:} == 0); 
+0

셀은 다른 데이터 유형을 보유 할 수 있습니다. 당신의 세포는 어떻게 생겼습니까? 각 셀에 하나의 요소 (숫자) 만 있습니까? 대답은 간단하지만 예제 데이터를 원합니다. – abcd

+0

@yoda : 셀 A의 첫 번째 행에는 숫자 값이 들어 있고 두 번째 행에는 행렬이 포함되어 있습니다. – bzak

답변

10

{ }를 사용하여 인덱싱을 제공을 내용은입니다. ()을 사용하는 색인 ​​생성은 원래 객체와 동일한 유형을 반환합니다. 즉, A이 셀이면 A{i,j}은 보유 및 A(i,j)은 항상 셀을 반환합니다. 당신은 후자가 필요합니다.

따라서 귀하는 다음을 수행하여 첫 번째 행이 0 인 모든 열을 제거 할 수 있습니다.

A(:, cellfun(@(x)x==0, A(1,:))) = []; 

여기서 첫 번째 행의 각 셀은 주석에 따라 하나의 숫자 요소 만 포함한다는 가정이 있습니다.

+0

고맙습니다. – bzak