how to find maximum and minimum in a matrix

1 次查看(过去 30 天)
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 个)

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 CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by