How can I repeat each element of a vector different times and store them in a new vector

2 vues (au cours des 30 derniers jours)
Dear all,
I am a Matlab novice. I am sorry that my question may be silly.
Does anyone know that how I can repeat each element of a vector different times and then store them in a new vector?
Thank you in advance for the answers
Cheers!
  1 commentaire
mahmoud osama
mahmoud osama le 28 Mar 2020
vector=[1 2 3]
vector = repele(vector,3)
this will repeat every element 3 times
output:
vector=[1 1 1 2 2 2 3 3 3]

Connectez-vous pour commenter.

Réponse acceptée

Wayne King
Wayne King le 19 Fév 2013

Plus de réponses (2)

Andrei Bobrov
Andrei Bobrov le 20 Fév 2013
Modifié(e) : Andrei Bobrov le 21 Fév 2013
r = [1 3 3 4 0 5];
x = 1:6;
t = r > 0;
a = cumsum(r(t));
b = zeros(1,a(end));
b(a - r(t) + 1) = 1;
x1 = x(t);
out = x1(cumsum(b));

Jos (10584)
Jos (10584) le 19 Fév 2013
Wayne pointed you to a run-length decoder/encoder.
Things become more simple if every element is to be repeated the same number of times:
% repeat all elements of A N times
A = [1 2 3]
N = 3 ;
B1 = reshape(repmat(A(:).',N,1),1,[])
% or
nA = numel(A) ;
B2 = A(ceil((1:nA*N)/nA))

Catégories

En savoir plus sur Startup and Shutdown dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by