Find index of first empty cell in an array row
21 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaire
Réponse acceptée
Hermes Suen
le 3 Juil 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.
Plus de réponses (1)
Jan
le 4 Juil 2018
Modifié(e) : Jan
le 1 Déc 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 commentaire
Voir également
Catégories
En savoir plus sur Cell Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!