2014-12-15 6 views
1

1x6 셀 배열이 있습니다. 셀 1-4와 6에는 문자열이 포함 된 5000x1 셀 배열이 있습니다. 다섯 번째 셀에는 숫자가 들어있는 5000x1 셀 배열이 있습니다. 글쎄, 나는 다섯 번째 셀에 0이있는 행을 제거하고 싶다. 확인하려면, 그것은 분명하다Matlab - 셀 배열에서 0 행 제거

문자열 문자열 문자열 문자열 35 문자열

문자열 문자열 문자열 문자열 0 문자열

문자열 문자열 문자열 문자열 42 문자열

문자열 문자열 문자열 문자열 10 문자열

문자열 문자열 문자열 0 문자열

포럼에 비슷한 질문이 1x 발견되었습니다. 2 셀,하지만이 특정 경우에 그것을 수행하는 방법을 알아낼 수 없습니다.

아무도 도와 줄 수 있습니까?

미리 감사드립니다.

+0

죄송합니다. 귀하의 예를 이해하지 못해서 명확하게 할 수 있습니까? 정확히 문자열은 ... 35 문자열 ...? 0을 제거 할 5 번째 셀입니까? –

+0

죄송합니다, 미리보기에서 모든 것이 올바르게 정렬 된 것으로 보입니다. 다섯 번째 셀에 0이있는 행을 제거하고 싶습니다. 문자열은 데이터를 올바르게 해석하는 데 필요한 코드입니다. 따라서 0 요소가 있으면 코드가 필요하지 않습니다. 이게 더 명확한가요? – aulky11

답변

1

셀 배열이 c 변수에 저장되어 있다고 가정합니다.

for k = 1:6 
    c{k} = c{k}(notZeros); 
end 
:

notZeros = (c{5} ~= 0); 

는 그 후, 소자를 통한 루프는 제로 행 걸러 logical index 적용 : 첫째, 논리 연산을 이용 0 같지 않은 요소 (5)의 행을 결정할 수


cellfun을 사용할 수도 있습니다. 이는 아마도 더 느릴뿐만 아니라 판독 될 수

c = cellfun(@(c_el) c_el(notZeros),c,'UniformOutput',false); 

"'UniformOutput',false는"as understood by the function는 불균일 한 결과, 필터 출력 벡터 보낸 필수 옵션이다.

+0

고마워요! 그것은 완벽하게 작동합니다! – aulky11