set some values to zero in a matrix

9 views (last 30 days)
Nikolaos Zafirakis
Nikolaos Zafirakis on 13 Apr 2019
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 Comments
Nikolaos Zafirakis
Nikolaos Zafirakis on 14 Apr 2019
Hello well I actually took the code supplied by madhan below. The matrix is coordinates x-y-z and -x -y -z. I split the matrix into 3 sections making x and -x one matrix y and -y another ...etc. Then I applied the code by madhan to the 2x20000 matrix and took the largest value from this. Then I combined the matrix back together and have one value for each plane.

Sign in to comment.

Answers (1)

madhan ravi
madhan ravi on 14 Apr 2019
Edited: madhan ravi on 14 Apr 2019
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
  1 Comment
Nikolaos Zafirakis
Nikolaos Zafirakis on 14 Apr 2019
Thanks that was very helpful! (See above i solved the issue).

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by