repeated value of a vector
7 views (last 30 days)
Show older comments
alessandro mutasci
on 7 Sep 2021
Commented: Chien Poon
on 7 Sep 2021
Good evening, I have a doubt that I can't solve... If I have a vector, like (1, 5, 15, 2), and I want to create another one that has every single value of the vector repeated for a certain number of times, for example 2, having as output (1, 1, 5, 5, 15, 15, 2, 2), what is the best way to do it?
I thougth of using a for cycle for each value of the vector but I don't know how.
1 Comment
Chien Poon
on 7 Sep 2021
a = [1, 5, 15, 2]; % Your vector
b = repmat(a,2,1); % This creates a copy of the vector in the 2nd dimension
c = reshape(b,[],1)'; % We then reshape the matrix back to a vector
Accepted Answer
Abolfazl Chaman Motlagh
on 7 Sep 2021
Edited: Abolfazl Chaman Motlagh
on 7 Sep 2021
a naive way is to use a loop for every index:
x = [1,5,15,2]; % for example
num = 2; % number of repeat you want
index=1;
for i=1:numel(x) % numel(x) means number of elements in x
for j=1:num
y(index) = x(i);
index = index + 1;
end
end
y
by simple loop you can just :
for i=1:num*numel(x)
y2(i) = x(ceil(i/num));
end
y2
so for example : for both i=1 and i=2, ceil(i/2) would be 1 .
Some easier way :
y3 = repmat(x,[num 1]);
y3 = y(:)'
the repmat, repeat your array in whatever direction you want. when i use [num 1] it repeats your array num-times in y derection and create a matrix. caling (:) for y will make the result linear in y-direction. finally by ' transpose it, so it would be a linear vector in x-direction.
See Also
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!