复制矢量并将每个副本向下移1行而不进行for循环

clo*_*viz 2 matlab matrix vectorization

我想复制一个向量N时间来创建一个矩阵,每个副本向下移动1行.见图像(第一列是向量1到5).如果不使用for循环就能实现这一点会很棒.

在此输入图像描述

到目前为止,能够做到这一点repmat(my_vector, 1, 5)来创建一个N×5矩阵.

the*_*alk 6

你可以用toeplitztril;

a = [1 2 3 4 5]
out = tril( toeplitz(a) )
Run Code Online (Sandbox Code Playgroud)

要么

out = toeplitz(a, a*0)
%// out = toeplitz(a, zeros(size(a)) )  %// for large arrays
Run Code Online (Sandbox Code Playgroud)

或者如果你不介意一些快乐的翻转:

out = flipud( hankel( flipud(a(:)) ) )
Run Code Online (Sandbox Code Playgroud)