How to substitute some elements from a vector

2 vues (au cours des 30 derniers jours)
Viridiana  Torres
Viridiana Torres le 10 Mai 2016
Hello everyone!
If i have the next vector Z=[10;10;10;11;11;13;13] which is associated to another vector: X=[1;6;65;34;21;73;14] a nd I want to create a third vector, Y, with almost all the elements in X, but just replacing a 0 in X BEFORE the element (i,j) from Z changes. How can I do this? In this example my desire outcome would be the next vector Y=[1;6;0;34;0;73;14]
Thanks a lot for your help!

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 10 Mai 2016
Y = X;
Y([diff(Z(:))~=0;false]) = 0

Plus de réponses (1)

Star Strider
Star Strider le 10 Mai 2016
Modifié(e) : Star Strider le 10 Mai 2016
This works:
Z=[10;10;10;11;11;13;13];
X=[1;6;65;34;21;73;14];
idx = diff([Z; 0]) > 0; % Logical Vector Detecting Transitions
Y = zeros(size(X));
Y(~idx) = X(~idx)
Y =
1
6
0
34
0
73
14
EDIT — Added output result for Y.

Catégories

En savoir plus sur Performance and Memory dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by