Azzera filtri
Azzera filtri

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

2 visualizzazioni (ultimi 30 giorni)
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.

Risposte (1)

Walter Roberson
Walter Roberson il 25 Gen 2017
Modificato: Walter Roberson il 25 Gen 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 Commenti
Vishal Sharma
Vishal Sharma il 25 Gen 2017
Modificato: Vishal Sharma il 25 Gen 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 il 25 Gen 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.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by