Find index of first empty cell in an array row

21 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.

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!

Translated by