Clear Filters
Clear Filters

Select and remove/replace values in matrix

2 views (last 30 days)
My question is to check each row for the same numbers (in this case 1 or 0, we leave the 0s unchanged in the matrix), and replace any 1 in the row with 0 except the last value of 1
Y = [0 1 1 0 1 0;
0 0 0 1 0 1;
1 0 1 0 1 0; ]
The end result I should get is
X = [0 0 0 0 1 0;
0 0 0 0 0 1;
0 0 0 0 1 0;]
Another similar question would be to remover the first/second (sometimes even third) number in the row leaving the last 2 numbers unchanged.
Y = [1 2 4 0 0 0;
2 5 0 0 0 0;
3 4 5 6 0 0;]
The end result I should get is
X = [0 2 4 0 0 0;
2 5 0 0 0 0;
0 0 5 6 0 0;]

Accepted Answer

Guillaume
Guillaume on 23 Jul 2019
Edited: Guillaume on 23 Jul 2019
One way:
nelems = 2; %number of elements to keep
X = (cumsum(Y>0, 2, 'reverse') < nelems+1) .* Y
  6 Comments
JL
JL on 8 Aug 2019
Hi Guillaumen, I have another intetesting problem, was wondering if you are interested to take a look - here is the link to the question https://uk.mathworks.com/matlabcentral/answers/475460-sharing-values-of-elements-in-a-matrix

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!