repeated value of a vector
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
alessandro mutasci
am 7 Sep. 2021
Kommentiert: Chien Poon
am 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 Kommentar
Chien Poon
am 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
Akzeptierte Antwort
Abolfazl Chaman Motlagh
am 7 Sep. 2021
Bearbeitet: Abolfazl Chaman Motlagh
am 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.
Siehe auch
Kategorien
Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!