how to create a vector of consecutive numbers that skip over certain elements
Afficher commentaires plus anciens
I have a vector K whose elements are either 1 or 0 and whose length may change depending on other inputs. I want code that will create a vector R with equal number of elements as K that equals consecutive numbers (1, 2, 3...) except where K=1. Where K=1 I want R to equal 0.
For instance
K might be:
K=[0; 0; 1; 0; 0; 1; 1; 0; 0; 1]
then I would like syntax that creates R as:
R=[1; 2; 0; 3; 4; 0; 0; 5; 6; 0]
Thanks for the help
1 commentaire
Meshooo
le 21 Oct 2013
You can do like that
K = [0; 0; 1; 0; 0; 1; 1; 0; 0; 1];
M = ~K;
L = (1:length(K))')
R = (immultiply(L, M))';
Réponse acceptée
Plus de réponses (2)
Andrei Bobrov
le 21 Oct 2013
R = cumsum(~K).*~K;
Walter Roberson
le 21 Oct 2013
Modifié(e) : Walter Roberson
le 21 Oct 2013
R = (1:length(K)).';
R(K==1) = 0;
Or
R = (1:length(K)).' .* (1-K);
2 commentaires
Jacob
le 21 Oct 2013
Walter Roberson
le 21 Oct 2013
n = nnz(K);
R = zeros(size(K,1),1);
R( K ~= 0 ) = 1:n;
Catégories
En savoir plus sur Simulink dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!