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

1 回表示 (過去 30 日間)
Vishal Sharma
Vishal Sharma 2017 年 1 月 25 日
コメント済み: Walter Roberson 2017 年 1 月 25 日
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.

回答 (1 件)

Walter Roberson
Walter Roberson 2017 年 1 月 25 日
編集済み: Walter Roberson 2017 年 1 月 25 日
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 件のコメント
Vishal Sharma
Vishal Sharma 2017 年 1 月 25 日
編集済み: Vishal Sharma 2017 年 1 月 25 日
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 2017 年 1 月 25 日
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by