Effacer les filtres
Effacer les filtres

Replace some values of a vector with another vector which has a different size

1 vue (au cours des 30 derniers jours)
Hello
I've got the vector: source = [ 0 0 1 0 1]
and the vector a = [2 3],
which has a different size to source.
I'd like to replace in the source vector the elements that are equal to 1, with those of vector a.
The final vector b should be: b = [0 0 2 0 3]
Any thoughts on this?
Thank you!

Réponse acceptée

Thorsten
Thorsten le 29 Avr 2015
Modifié(e) : Thorsten le 29 Avr 2015
source(source == 1) = a
  2 commentaires
pfb
pfb le 29 Avr 2015
However, that changes "source" instead of creating "b", as asked in the question.

Connectez-vous pour commenter.

Plus de réponses (2)

pfb
pfb le 29 Avr 2015
b=zeros(size(source));
b(find(source))=a;
of course this works only if the number of nonzero elements in source are the same as the elements in a.

Stephen23
Stephen23 le 29 Avr 2015
Modifié(e) : Stephen23 le 29 Avr 2015
This can be achieved very simply using basic logical indexing:
>> A = [ 0 0 1 0 1];
>> B = [ 2 3];
>> A(A==1) = B
A = 0 0 2 0 3
On my computer this was almost twice as fast compared to using find and zeros.
  3 commentaires
James Tursa
James Tursa le 29 Avr 2015
Stephen switched nomenclature. His starting "A" is your "source" his "B" is your "a", and his resulting "A" is your "b".

Connectez-vous pour commenter.

Catégories

En savoir plus sur Get Started with MATLAB 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