是的,确实有一个该矩阵的名称.它被称为
Hankel matrix.
在MATLAB中使用hankel函数:
out = hankel(1:n,n:2*n-1);
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
或者,您可能倾向于想要基于bsxfun的方法.这肯定是可能的:
out = bsxfun(@plus, (1:n), (0:n-1).');
我之所以想要向您展示这种方法的原因是因为在您的回答中,您使用了repmat生成两个矩阵来相加以创建正确的结果.您可以使用bsxfun替换两个repmat调用,因为它在引擎盖下进行复制.