Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

# Anyone who can help a Matlab program that perform the following matrix problem

조회 수: 1(최근 30일)
Keyre 2018년 3월 2일
마감: MATLAB Answer Bot 2021년 8월 20일
I have n by m matrix.I want to find the maximum values for each columns starting from the first column to the last column. However, there is a restriction that only two maximum values are allowed in each rows.
##### 댓글 수: 1표시숨기기 없음
David Fletcher 2018년 3월 2일
I'm not really sure I fully understand your intended aim. An example may be useful to clarify the true nature of the problem.

### 답변(1개)

John BG 2018년 3월 2일
Hi Keyre
1.
Let A be your matrix, for instance
m=5;n=8;A=randi([-10 10],n,m)
A
=
7 10 -2 4 -5
9 10 9 5 -10
-8 -7 6 5 -8
9 10 10 -2 7
3 10 3 3 4
-8 0 -10 -7 -4
-5 6 7 4 9
1 -8 9 -10 -10
2.
Combining command sort and flip the columns are arranged top to bottom, max of each column on each top.
B=flip(sort(A))
=
9 10 10 5 9
9 10 9 5 7
7 10 9 4 4
3 10 7 4 -4
1 6 6 3 -5
-5 0 3 -2 -8
-8 -7 -2 -7 -10
-8 -8 -10 -10 -10
3.
Now let's say you want the 3 max elements of each column.
Simply indexing the following way:
B([1:3],:)
=
9 10 10 5 9
9 10 9 5 7
7 10 9 4 4
You get the 3 largest elements of each column
Keyre
John BG
##### 댓글 수: 3표시숨기기 이전 댓글 수: 2
Jan 2018년 3월 8일
@Keyre: If this solves your needs, a hint for a good programming practice: The square brackets waste time here:
B([1:trim_top], :)
This is slightly faster:
B(1:trim_top, :)
[] is the Matlab operator for concatenation, but 1:trim_top is a vector already and there is noting to concatenate. There are further benefits, see Answers: Why not use square brackets.

### Community Treasure Hunt

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

Start Hunting!

Translated by