フィルターのクリア

how to find maximum and minimum in a matrix

1 回表示 (過去 30 日間)
Maryam Hamrahi
Maryam Hamrahi 2016 年 8 月 4 日
コメント済み: Maryam Hamrahi 2016 年 8 月 4 日
I have matrix A with n rows and 2 columns. I would like to find rows which has the maximum and/or minimum of X and/or Y. Then, replace zero in these rows.
For instance: I have matrix A and I would like to produce matrix B.
A= [0.1 0.5
0.3 0.9
0.4 0.8
0.4 0.2
1 0.7
0.2 0.6
0.7 1
0.2 0.9]
Here, max. X=1 min. X=0.1 max. Y=1 min. Y=0.2
B= [0 0
0.3 0.9
0.4 0.8
0 0
0 0
0.2 0.6
0 0
0.2 0.9]

採用された回答

Thorsten
Thorsten 2016 年 8 月 4 日
A= [0.1 0.5
0.3 0.9
0.4 0.8
0.4 0.2
1 0.7
0.2 0.6
0.7 1
0.2 0.9]
idx = A(:,1)==max(A(:,1)) | A(:,1)==min(A(:,1)) |...
A(:,2)==max(A(:,2)) | A(:,2)==min(A(:,2));
A(any(idx,2),:) = 0
  1 件のコメント
Maryam Hamrahi
Maryam Hamrahi 2016 年 8 月 4 日
I really appreciate your help Thorsten. Thank you very much.

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

その他の回答 (1 件)

Stephen23
Stephen23 2016 年 8 月 4 日
編集済み: Stephen23 2016 年 8 月 4 日
The simplest way would be to use logical indexing:
>> idx = A==max(A(:)) | A==min(A(:));
>> A(any(idx,2),:) = 0
A =
0.0 0.0
0.3 0.9
0.4 0.8
0.0 0.0
0.0 0.0
0.2 0.6
0.0 0.0
0.2 0.9
  3 件のコメント
Stephen23
Stephen23 2016 年 8 月 4 日
編集済み: Stephen23 2016 年 8 月 4 日
@Maryam Hamrahi: you are right, I made a mistake, and have now corrected my answer. It should work for you now.
Maryam Hamrahi
Maryam Hamrahi 2016 年 8 月 4 日
Thank you very much Stephen Cobeldick.
your code is working, but it gives me the wrong answer.
I want to have the following:
A =
0.0 0.0
0.3 0.9
0.4 0.8
0.0 0.0
0.0 0.0
0.2 0.6
0.0 0.0
0.2 0.9
but it gives me this:
A =
0 0
0.3000 0.9000
0.4000 0.8000
0.4000 0.2000
0 0
0.2000 0.6000
0 0
0.2000 0.9000

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

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by