Effacer les filtres
Effacer les filtres

Find index of first empty cell in an array row

41 vues (au cours des 30 derniers jours)
Ahmad Mahmoud
Ahmad Mahmoud le 3 Juil 2018
Modifié(e) : Jan le 1 Déc 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 commentaire
Stephen23
Stephen23 le 3 Juil 2018
Modifié(e) : Stephen23 le 4 Juil 2018
The syntax A{1,:} places the contents of the cell array into a comma separated list, so what you wrote is equivalent to writing this:
cellfun(@isempty,'apple','banana',[3x2 double],[])
and none of those inputs are cell arrays. See also:

Connectez-vous pour commenter.

Réponse acceptée

Hermes Suen
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
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
Peeyush Awasthi
Peeyush Awasthi le 1 Déc 2020
Hi Jan, Thanks that was the best answer even using unique.

Connectez-vous pour commenter.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by