从向量中获取向量矩阵

red*_*Fur 2 arrays matlab matrix

我有一个向量x = [1,3,5,6,7],我想生成一个矩阵y,其中行y(k)= x(k:k + 2).因此,在这种情况下得到的矩阵将是

1 3 5
3 5 6
5 6 7
Run Code Online (Sandbox Code Playgroud)

如何在使用循环的情况下实现此目的?有没有一种聪明的方法来做索引?

cha*_*pjc 5

这是Hankel矩阵的顶部非零平方.只需使用hankel:

>> X = hankel(x)
X =
     1     3     5     6     7
     3     5     6     7     0
     5     6     7     0     0
     6     7     0     0     0
     7     0     0     0     0
>> X = X(1:3,1:3)
X =
     1     3     5
     3     5     6
     5     6     7
Run Code Online (Sandbox Code Playgroud)

hankel指定的广义输出:

w = floor(numel(x)/2);
X = hankel(x(1:end-w),x(w+1:end))
Run Code Online (Sandbox Code Playgroud)