Repeat values in a vector

Assume
a1=[1 5 8];
b1=[6 4 5];
a2=[1 2 3 4 5 6 7 8];
Now I want to create a matching vector with values repeated as follows:
b2=[6 6 6 6 4 4 4 5];
Thanks in advance!

2 Commenti

Kevin Chng
Kevin Chng il 16 Ott 2018
Have you tried it?
KSSV
KSSV il 16 Ott 2018
Modificato: KSSV il 16 Ott 2018
Whats the logic behind b2? If it is a mere repeating...read about repelem and repmat.

Accedi per commentare.

 Risposta accettata

Andrei Bobrov
Andrei Bobrov il 16 Ott 2018
b2 = b1(cumsum(ismember(a2,a1)));

1 Commento

Florian
Florian il 16 Ott 2018
Many thanks Andrei, also for answering my other question!

Accedi per commentare.

Più risposte (1)

Bruno Luong
Bruno Luong il 16 Ott 2018
Modificato: Bruno Luong il 16 Ott 2018
Another method:
[~,loc] = histc(a2,a1);
b2 = b1(loc)
yet another one
b2 = b1(interp1(a1,1:length(a1),a2,'previous'))

Categorie

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by