How do I remove the empty cells from a vector of cells?
    14 次查看(过去 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 中查找有关 String Parsing 的更多信息
			
	产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





