Repeat values in a vector

1 view (last 30 days)
Florian
Florian on 16 Oct 2018
Commented: Florian on 17 Oct 2018
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 Comments
Kevin Chng
Kevin Chng on 16 Oct 2018
Have you tried it?
KSSV
KSSV on 16 Oct 2018
Edited: KSSV on 16 Oct 2018
Whats the logic behind b2? If it is a mere repeating...read about repelem and repmat.

Sign in to comment.

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 16 Oct 2018
b2 = b1(cumsum(ismember(a2,a1)));
  1 Comment
Florian
Florian on 16 Oct 2018
Many thanks Andrei, also for answering my other question!

Sign in to comment.

More Answers (1)

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

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!