Find index of first empty cell in an array row
    21 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Ahmad Mahmoud
 am 3 Jul. 2018
  
    
    
    
    
    Bearbeitet: Jan
      
      
 am 1 Dez. 2020
            I have a cell with strings and matrices. I want to add data after the last cell with data in a row.
A = {['apple'] [3x2 double] ; ['banana'] []}
For example, I want to add a matrix after the 3x2 matrix in first row, or after the 'banana' in second row.
I tried using:
find(cellfun(@isempty,A{1,:}),1)
But I get the error:
Error using cellfun
Input #3 expected to be a cell array, was double instead.
1 Kommentar
Akzeptierte Antwort
  Hermes Suen
      
 am 3 Jul. 2018
        The error you are receiving seems to be because you are using curly braces after A.
A{1,:}
When you use curly braces with a cell array, you access the actual contents of what is within the cell array. So if you have a cell array of char vectors and doubles, for example:
A = {'Banana', 560}
A{1}
A{1} will yield only the char vector 'Banana'. A{2} will yield a double, 560. But the cell argument into cellfun, must be an actual Cell array, not the contents of that cell array. I suggest using regular parenthesis to index the cell array A.
A(1)
This will yield a another Cell array of length 1 that is a subset of A.
Weitere Antworten (1)
  Jan
      
      
 am 4 Jul. 2018
        
      Bearbeitet: Jan
      
      
 am 1 Dez. 2020
  
      A = {'apple', rand(2, 3); 'banana', []};
find(cellfun('isempty', A),1)
Note: Using the cellfun method 'isempty' is faster that providing a function handles @isempty.
There is no need to enclose a CHAR in square brackets. This wastes time only.
1 Kommentar
Siehe auch
Kategorien
				Mehr zu Calendar finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!