是否有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)
它有名字吗?
谢谢.
是的,确实有一个该矩阵的名称.它被称为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.