Replicate vector and shift each copy by 1 row down without for-loop

前端 未结 2 1222
無奈伤痛
無奈伤痛 2020-12-12 00:03

I would like replicate a vector N times to create a matrix with each copy shifted 1 row down. See image (first column is the vector 1 to 5). It would be great i

2条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-12 00:48

    You can do it with toeplitz and tril;

    a = [1 2 3 4 5]
    out = tril( toeplitz(a) )
    

    or

    out = toeplitz(a, a*0)
    %// out = toeplitz(a, zeros(size(a)) )  %// for large arrays
    

    or if you don't mind some happy flipping:

    out = flipud( hankel( flipud(a(:)) ) )
    

提交回复
热议问题