Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 矩阵沿对角线的向量投影_Matlab_Matrix - Fatal编程技术网

Matlab 矩阵沿对角线的向量投影

Matlab 矩阵沿对角线的向量投影,matlab,matrix,Matlab,Matrix,是否有一种简单的方法可以生成以下矩阵: a = 4 5 6 7 3 4 5 6 2 3 4 5 1 2 3 4 哪个是向量[1 2 3 4 5 6 7]沿对角线的投影 谢谢您可以使用以下功能和: 或使用功能和: 您还可以将这些解决方案推广到任意向量,在该向量中,您选择了打断向量的中心点。例如: >> vec = [6 3 45 1 1 2]; %# A sample vector >> centerIndex = 3; >> a = fl

是否有一种简单的方法可以生成以下矩阵:

a = 
  4 5 6 7
  3 4 5 6
  2 3 4 5
  1 2 3 4
哪个是向量[1 2 3 4 5 6 7]沿对角线的投影


谢谢

您可以使用以下功能和:

或使用功能和:

您还可以将这些解决方案推广到任意向量,在该向量中,您选择了打断向量的中心点。例如:

>> vec = [6 3 45 1 1 2];  %# A sample vector
>> centerIndex = 3;
>> a = flipud(hankel(vec(1:centerIndex),vec(centerIndex:end)))

a =

    45     1     1     2
     3    45     1     1
     6     3    45     1

上面的示例将向量的前三个元素放在第一列上,并将向量的最后四个元素放在第一行上。

考虑以下替代解决方案:

a = bsxfun(@plus, (4:-1:1)', 0:3)
接受任何向量和任何列长度的相应通解:

x = randi(50, [1 10])
num = 5;
idx = bsxfun(@plus, (num:-1:1)', 0:(numel(x)-num));
a = x(idx)
使用示例输出:

x =
    41    46     7    46    32     5    14    28    48    49

a =
    32     5    14    28    48    49
    46    32     5    14    28    48
     7    46    32     5    14    28
    46     7    46    32     5    14
    41    46     7    46    32     5
x = randi(50, [1 10])
num = 5;
idx = bsxfun(@plus, (num:-1:1)', 0:(numel(x)-num));
a = x(idx)
x =
    41    46     7    46    32     5    14    28    48    49

a =
    32     5    14    28    48    49
    46    32     5    14    28    48
     7    46    32     5    14    28
    46     7    46    32     5    14
    41    46     7    46    32     5