How to replace ones and zeros in a logical vector with vectors of corresponding length?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Edward Schreiner
le 10 Août 2021
Commenté : Edward Schreiner
le 10 Août 2021
I need to recombine two vectors which where seperatet by logical indexing:
idx = [1 0 0 1 1 0 0]; % appearance of logical index
a = [2 3 4]; % the values of a have to replace the ones in indx in the same order
b = [9 8 7 7]; % the values of b have to replace the zeros in indx in the same order
The solution should look like this:
c = [2 9 8 3 4 7 7]; % recombined vector
0 commentaires
Réponse acceptée
Scott MacKenzie
le 10 Août 2021
idx = [1 0 0 1 1 0 0]; % appearance of logical index
a = [2 3 4]; % the values of a have to replace the ones in indx in the same order
b = [9 8 7 7];
c = [a b];
idx = logical(idx);
c = [c(idx) c(~idx)]
Plus de réponses (1)
Yongjian Feng
le 10 Août 2021
Try this:
idx = [1 0 0 1 1 0 0]; % appearance of logical index
a = [2 3 4]; % the values of a have to replace the ones in indx in the same order
b = [9 8 7 7]; % the values of b have to replace the zeros in indx in the same order
c = [];
aIdx = 1;
bIdx = 1;
for i=1:length(idx)
if idx(i) == 1
c(end+1)=a(aIdx);
aIdx = aIdx + 1;
else
c(end+1) = b(bIdx);
bIdx = bIdx + 1;
end
end
c
Voir également
Catégories
En savoir plus sur Logical 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!