I have a matrix with n rows and 1 column. I would like to find rows which has the maximum number of rows. Then, replace zero in the other rows.
For instance: I have matrix A and I would like to produce matrix B.
A=
5
2
2
4
3
2
B=
0
2
2
0
0
2

 채택된 답변

Star Strider
Star Strider 2016년 8월 7일

1 개 추천

This works:
A = [5
2
2
4
3
2];
[Au,ia,ic] = unique(A, 'stable');
h = accumarray(ic, 1);
B = A;
B(ic~=Au(h==max(h))) = 0
B =
0
2
2
0
0
2

댓글 수: 6

Maryam Hamrahi
Maryam Hamrahi 2016년 8월 7일
Thanks a lot for the help Star Strider.
It is really appreciated.
Star Strider
Star Strider 2016년 8월 7일
As always, my pleasure.
Many thanks for your help Star Strider.
Why your code gives me error for the following matrix:
A =
5
0
0
4
3
0
your code gives me this:
B =
0
0
0
0
0
0
Thank you.
Star Strider
Star Strider 2016년 8월 7일
It does that because zeros are the most frequent, and it sets the other elements to zero, producing a zero vector here. The impression I got from your original Question is that you wanted that result.
What result do you want from this vector?
Maryam Hamrahi
Maryam Hamrahi 2016년 8월 7일
Sorry, it was my mistake. I have to correct it myself. I am thankful for your help.
Star Strider
Star Strider 2016년 8월 7일
My pleasure.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

질문:

2016년 8월 7일

댓글:

2016년 8월 7일

Community Treasure Hunt

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

Start Hunting!

Translated by