How to determine which indices in a row cell array contains the value 1, even when there are null vectors [ ] in the cell array?

1 vue (au cours des 30 derniers jours)
Hello,
If I have a row cell array,
C = {[], [], [], [], 1, 1, 1, 1, 1, 1, 4, 4, 5, 5, 5, [], [], []}
and I would like to know where in the cell array (i.e. which column) the 1 values are located. How do I grab the indices of where 1 is located because when I use the following,
d = find([b{:}] == 1)
I get the following output.
d = [1, 2, 3, 4, 5, 6]
which is not what I want because it ignores the null vector, []...Ideally, I would like the following output, or something like that.
d = [5, 6, 7, 8, 9, 10]
I'm using MATLAB 2015a btw. Any help or advice would be appreciated. Thanks.

Réponse acceptée

Walter Roberson
Walter Roberson le 25 Juil 2015
find(cellfun(@(x) isequal(x,1), C))
  1 commentaire
George Vuong
George Vuong le 27 Juil 2015
Modifié(e) : George Vuong le 27 Juil 2015
Hey Walter, thanks for your response. The output was just what I was looking for. I understand that cellfun applies a function to each cell of a cell array. But can you provide a little explanation as to what @(x) isequal(x,1) does and means?
UPDATE: I think I figured it out. @x creates an anonymous function. And isequal(x,1) inspects each column to see if the value is 1.

Connectez-vous pour commenter.

Plus de réponses (2)

Andrei Bobrov
Andrei Bobrov le 25 Juil 2015
Modifié(e) : Andrei Bobrov le 25 Juil 2015
C = {[], [], [], [], 1, 1, 1, 1, 1, 1, 4, 4, 5, 5, 5, [], [], []};
b = C;
b(cellfun(@isempty,b))={nan};
d = find([b{:}]==1);
  1 commentaire
George Vuong
George Vuong le 27 Juil 2015
Hey Andrei, thank you for your input. It's interesting how in order for
d = find([b{:}]==1);
to recognize that the null vectors, [], is a column, you have to input nan within [].

Connectez-vous pour commenter.


Cedric
Cedric le 25 Juil 2015
Modifié(e) : Cedric le 25 Juil 2015
find( cellfun( @(x) ~isempty(x) && x==1, C ))
ans =
5 6 7 8 9 10
  2 commentaires
Cedric
Cedric le 25 Juil 2015
Modifié(e) : Cedric le 25 Juil 2015
@Walter: I vote for your solution if you post it as an answer!

Connectez-vous pour commenter.

Catégories

En savoir plus sur Creating and Concatenating Matrices 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