Info

此问题已关闭。 请重新打开它进行编辑或回答。

3 demension matrix coding - find largest NN elements

1 次查看(过去 30 天)
I have (M X N X sample) 3-demension matrix, and i want to change all elements to '0' except the largest 'NN' elements
for example;
when the matrix is (4 X 4 X 2) and NN=2
there are two matrix
1 2 3 4
1 2 1 2
2 1 1 2
and
4 1 2 3
1 2 1 2
1 2 2 1
and i want to change into
0 0 3 4
0 0 0 0
0 0 0 0
and
4 0 0 3
0 0 0 0
0 0 0 0
these two matrix
plz let me know how to change it....
  2 个评论
Walter Roberson
Walter Roberson 2019-8-8
What do you want to do in the case of duplicates? For example if the original matrix were
1 2 3 4
1 2 1 2
3 1 1 2
then what would you want the output to be for NN=2 ?
Hakjoon Yoon
Hakjoon Yoon 2019-8-9
i want
0 0 3 4
0 0 0 0
0 0 0 0
or
0 0 0 4
0 0 0 0
3 0 0 0
only 'NN' elements are needed

回答(1 个)

Rik
Rik 2019-8-9
You will probably need to loop through the pages. The second output of max should be what you need.
A=rand(4,4,5);
out=A;
element_per_page=size(A, 1)*size(A,2);
for p=1:size(A,3)
[~,order]=sort(A(:,:,p));
ind=order(3:end)+element_per_page*(p-1);
out(ind)=0;
end
(untested code, written on mobile)

标签

Community Treasure Hunt

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

Start Hunting!

Translated by