set some values to zero in a matrix
3 ビュー (過去 30 日間)
古いコメントを表示
Hello, I have a 6x20000 matrix. I would like make the 3 smalest values on each row equal to zero. For example if I have:
[ 1, 1, 1, 1.5, 1.5, 1.5 = [ 0, 0, 0, 1.5, 1.5, 1.5
1, 1.5, 1, 1, 1.5, 1.5 0, 1.5, 0, 0, 1.5, 1.5
1, 1.5, 1, 1, 1.5, 1.5] 0, 1.5, 0, 0, 1.5, 1.5]
Does anyone know how to do this?
2 件のコメント
Walter Roberson
2019 年 4 月 14 日
What do you want to do if there are four or more copies of the same minimum value?
What do you want to do if there is a distinct minumum value, but then there is a tie for second or third place such that the total number of values no greater than the third smallest, is more than 3? Such as [1 1.5 1 1.5 1.5 1.5]: here the two 1's are smallest, but there is a tie of 1.5's for third.
回答 (1 件)
madhan ravi
2019 年 4 月 14 日
編集済み: madhan ravi
2019 年 4 月 14 日
Note: Have the same doubt as sir Walter but see if the below answer does what you want.
[~,I]=mink(a,3,2); % requires 2017 b and later if prior sort each row and pick first three values in each row, a is your matrix
idx=sub2ind(size(a), repmat((1:size(a,1)).',1,size(I,2)) ,I);
a(idx)=0
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!