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

1 Ansicht (letzte 30 Tage)
Vishal Sharma
Vishal Sharma am 25 Jan. 2017
Kommentiert: Walter Roberson am 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.

Antworten (1)

Walter Roberson
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
Vishal Sharma
Vishal Sharma am 25 Jan. 2017
Bearbeitet: Vishal Sharma am 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 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.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by