Effacer les filtres
Effacer les filtres

How to find row and column of a value in cell array

2 vues (au cours des 30 derniers jours)
Vishal Sharma
Vishal Sharma le 25 Jan 2017
Commenté : Walter Roberson le 25 Jan 2017
I have this Cell Array ‘A’ of size 3 by 7
A = {
3 4 [] [] [] [] []
2 6 -2 2 -2.1 2 2
-5 -5 25 1 [] [] []}
I want the result of max value of this cell array i.e. ‘25’ at row 3 and column 3 shall be displayed.

Réponses (1)

Walter Roberson
Walter Roberson le 25 Jan 2017
Modifié(e) : Walter Roberson le 25 Jan 2017
B = A;
B(cellfun(@isempty, B)) = {NaN};
[maxval, maxidx] = max( reshape(cell2mat(B), [], 1) );
[maxrow, maxcol] = ind2sub(size(B), maxidx);
[maxval, maxrow, maxcol]
Note: this treats empty and NaN the same. If the array happened to consist entirely of NaN and empty locations, the code would return location 1 1, which might in some sense be incorrect because that location might be empty. However in such a case it is difficult to argue that NaN is a valid maximum since by definition NaN is Not A Number.
  5 commentaires
Vishal Sharma
Vishal Sharma le 25 Jan 2017
Modifié(e) : Vishal Sharma le 25 Jan 2017
The index is '8'.... I want to get the solution in terms of rows (3rd) and column (3rd).... That's my main problem....
Walter Roberson
Walter Roberson le 25 Jan 2017
maxrow and maxcol give that information.
With your data
A = {
3 4 [] [] [] [] []
2 6 -2 2 -2.1 2 2
-5 -5 25 1 [] [] []}
then my code
B = A;
B(cellfun(@isempty, B)) = {NaN};
[maxval, maxidx] = max( reshape(cell2mat(B), [], 1) );
[maxrow, maxcol] = ind2sub(size(B), maxidx);
[maxval, maxrow, maxcol]
is going to create an answer
25 3 3
which is the maximum value then the row it is at and the column it is at.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by