是否有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];
有名字吗?
感谢。
答案 0 :(得分:5)
是的确有这个矩阵的名称。它被称为Hankel matrix。
使用MATLAB中的hankel
函数:
SELECT SUM(
SELECT jogador.pont from jogador,usuarios WHERE email='like' and jogador.id=usuarios.j1
UNION
SELECT jogador.pont from jogador,usuarios WHERE email='like' and jogador.id=usuarios.j2
UNION
SELECT jogador.pont from jogador,usuarios WHERE email='like' and jogador.id=usuarios.j3
UNION
SELECT jogador.pont from jogador,usuarios WHERE email='like' and jogador.id=usuarios.j4
) AS totalpont
out = hankel(1:n,n:2*n-1);
的示例:
n=10
或者,您可能倾向于想要基于bsxfun
的方法。这当然是可能的:
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
我之所以想要向您展示这种方法,是因为在您的回答中,您使用out = bsxfun(@plus, (1:n), (0:n-1).');
生成了两个矩阵,以便一起添加以创建正确的结果。您可以使用repmat
替换两个repmat
来电,因为它会在引擎盖下进行复制。
答案 1 :(得分:2)
我的标准方法是
repmat(1:n,n,1)+repmat((1:n)',1,n)-1