Select and remove/replace values in matrix

1 visualizzazione (ultimi 30 giorni)
JL
JL il 23 Lug 2019
Commentato: JL il 8 Ago 2019
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;]

Risposta accettata

Guillaume
Guillaume il 23 Lug 2019
Modificato: Guillaume il 23 Lug 2019
One way:
nelems = 2; %number of elements to keep
X = (cumsum(Y>0, 2, 'reverse') < nelems+1) .* Y
  6 Commenti
JL
JL il 24 Lug 2019
Thank you, it is working!
JL
JL il 8 Ago 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

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by