How do I remove the empty cells from a vector of cells?
조회 수: 31 (최근 30일)
이전 댓글 표시
I have a vector of cells which contain strings. Some of the cells in the vector are empty. I want to remove the empty cells from the vector.
Suppose I start with
strs = {'one','','two','three','','','four',''};
and I want to end with
strs = {'one','two','three','four'};
댓글 수: 2
Rajiv Kumar
2017년 3월 12일
if I have B = {[1 0 0 4],[0 0 0 0],[0 0 1 0],[0 0 2 3]} I want to remove zeros entries like this B = {[1 4],[],[1],[2 3]} How it is possible in cell vector
채택된 답변
Hy
2011년 1월 20일
The built-in function strcmp can compare a character array to a cell array of strings. Matching cells may be removed by setting them equal to the empty array.
strs(strcmp('',strs)) = [];
댓글 수: 0
추가 답변 (4개)
Matt Fig
2011년 1월 20일
Probably the fastest approach:
strs = strs(~cellfun('isempty',strs)) % Call Built-in string
댓글 수: 2
Ned Gulley
2011년 1월 20일
댓글 수: 1
Jan
2011년 2월 1일
CELLFUN(@isempty) is remarkably slower than CELLFUN('isempty') as suggested by Matt Fig.
Michael Katz
2011년 1월 20일
I wanted to do:
strs = setdiff(strs,{''})
but turns out it reorders the output:
strs =
'four' 'one' 'three' 'two'
So, I wound up with this:
[~,ix] = setdiff(strs,{''})
strs = strs(sort(ix))
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Characters and Strings에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!