MATLAB Answers

repelem substitute for older matlab version

27 views (last 30 days)
MiauMiau
MiauMiau on 24 Jun 2017
Commented: KSSV on 24 Jun 2017
Hi,
I want to do the following (what usually repelem does, however an older version of Matlab does not seem to have it):
Given vector a = [3 45 6 ];
I would want for instance its first element to be repeated 2 times, the second 4 times, the third element once (just as an example). So we would end up with:
aNew = [3 3 4 45 45 45 6 6];
How can that be done in a systematic way without repelem?
Thanks
  1 Comment
Stephen
Stephen on 24 Jun 2017
You say that you want "the third element once", but it appears twice in your example. Which is correct? Where does that 4 come from?

Sign in to comment.

Answers (2)

Stephen
Stephen on 24 Jun 2017
>> A = [3,45,6];
>> R = [2,4,1];
>> cell2mat(arrayfun(@(a,r)repmat(a,1,r),A,R,'uni',0))
ans =
3 3 45 45 45 45 6

KSSV
KSSV on 24 Jun 2017
a = [3 45 6 ];
aNew = [3 3 45 45 45 45 6 6];
R = [2 4 3] ;
iwant = [] ;
for i = 1:length(R)
iwant = [iwant ones(1,R(i))*a(i)] ;
end
  2 Comments
KSSV
KSSV on 24 Jun 2017
a = [3 45 6 ];
aNew = [3 3 45 45 45 45 6 6];
R = [2 4 3] ;
iwant = cell(1,length(R)) ;
for i = 1:length(R)
iwant{i} = ones(1,R(i))*a(i) ;
end
iwant = [iwant{:}]

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!