Matlab特殊矩阵

Bre*_*sze 4 matlab matrix

是否有MATLAB函数来生成此矩阵?:

[1 2 3 4 5 6 7 ... n;
 2 3 4 5 6 7 8 ... n+1;
 3 4 5 6 7 8 9 ... n+2;
 ...;
 n n+1 n+2     ... 2*n-1];
Run Code Online (Sandbox Code Playgroud)

它有名字吗?

谢谢.

ray*_*ica 5

是的,确实有一个该矩阵的名称.它被称为Hankel矩阵.

使用hankelMATLAB中的函数:

out = hankel(1:n,n:2*n-1);
Run Code Online (Sandbox Code Playgroud)

示例n=10:

out = 

     1     2     3     4     5     6     7     8     9    10
     2     3     4     5     6     7     8     9    10    11
     3     4     5     6     7     8     9    10    11    12
     4     5     6     7     8     9    10    11    12    13
     5     6     7     8     9    10    11    12    13    14
     6     7     8     9    10    11    12    13    14    15
     7     8     9    10    11    12    13    14    15    16
     8     9    10    11    12    13    14    15    16    17
     9    10    11    12    13    14    15    16    17    18
    10    11    12    13    14    15    16    17    18    19
Run Code Online (Sandbox Code Playgroud)

或者,您可能倾向于想要一种bsxfun基础方法.这肯定是可能的:

out = bsxfun(@plus, (1:n), (0:n-1).');
Run Code Online (Sandbox Code Playgroud)

我之所以想要向您展示这种方法,是因为在您的回答中,您曾经repmat生成两个矩阵来加在一起以创建正确的结果.您可以使用引擎下的复制来替换这两个repmat调用bsxfun.