Matlab特殊矩阵

时间:2015-11-01 05:16:07

标签: 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];

有名字吗?

感谢。

2 个答案:

答案 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