Repeat values in a vector

3 次查看(过去 30 天)
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 个评论
Kevin Chng
Kevin Chng 2018-10-16
Have you tried it?
KSSV
KSSV 2018-10-16
编辑:KSSV 2018-10-16
Whats the logic behind b2? If it is a mere repeating...read about repelem and repmat.

请先登录,再进行评论。

采纳的回答

Andrei Bobrov
Andrei Bobrov 2018-10-16
b2 = b1(cumsum(ismember(a2,a1)));
  1 个评论
Florian
Florian 2018-10-16
Many thanks Andrei, also for answering my other question!

请先登录,再进行评论。

更多回答(1 个)

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

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by