find if one number is member of a column ,of cell array, that contains cell entries and if it is member, in which row, it appears

4 vues (au cours des 30 derniers jours)
I have a 23*6 cell array that is called cofPairs.
As you see, the 5th and 6th column contain cell entries, that contain numbers. For example, the first element of the 5th column ( cofPairs{1,5} )
So, what I want to do.
I want to check for several random numbers if they appear in any entry in the 5th column of the array. I want also to know in which rows of the 5th column appear (in any entry).
How can I achieve this?
Thank you!
  1 commentaire
Jan
Jan le 14 Nov 2021
It would be more efficient to store the numbers inb a numerical vector instead of a column cell, which contains scalars.

Connectez-vous pour commenter.

Réponse acceptée

Jan
Jan le 14 Nov 2021
Modifié(e) : Jan le 14 Nov 2021
Simplify the data representation at first:
for k = 1:size(C, 1)
C{k, 5} = [C{k, 5}{:}];
end
Then the searching is easy:
x = 17;
found = false(size(C, 1), 1);
for k = 1:size(C, 1)
found = any(C{k, 5} == x);
end
Now use found of find(found) as you want.
If you have a good reason to let the elements of the 5.th row be a cell (e.g. if the elements are vectors of different sizes in opposite of the shown example, in which they are scalars):
x = 17;
found = false(size(C, 1), 1);
for k = 1:size(C, 1)
found = any([C{k, 5}{:}] == x);
end

Plus de réponses (0)

Catégories

En savoir plus sur Operators and Elementary Operations 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