Octave / Matlab: Extend a vector making it repeat itself?

55,123

Solution 1

The function you're looking for is repmat().

v10 = repmat(v, 1, 5)

Solution 2

Obviously repmat is the way to go if you know in which direction you want to expand the vector.

However, if you want a general solution that always repeats the vector in the longest direction, this combination of repmat and indexing should do the trick:

 v10=v(repmat(1:length(v),1,5))
Share:
55,123
Tom
Author by

Tom

Updated on July 08, 2022

Comments

  • Tom
    Tom almost 2 years

    Is there a way to extend a vector by making it repeat itself?

    >v = [1 2];
    >v10 = v x 5; %x represents some function. Something like "1 2" x 5 in perl
    

    Then v10 would be:

    >v10
         1 2 1 2 1 2 1 2 1 2
    

    This should work for the general case, not just for [1 2]

  • EIIPII
    EIIPII over 10 years
  • Cris Luengo
    Cris Luengo over 2 years
    Please don’t duplicate answers. Instead, leave a comment under the question pointing to this answer. Also, as per my comment there from 3 years ago, this method was no longer faster then.