How to find row and column of a value in cell array
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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.
0 Kommentare
Antworten (1)
Walter Roberson
am 25 Jan. 2017
Bearbeitet: Walter Roberson
am 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 Kommentare
Walter Roberson
am 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.
Siehe auch
Kategorien
Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!