2011-05-07 25 views

Répondre

2

Vous ne savez pas exactement ce que vous essayez de faire, mais vous pouvez trouver diag(v,n) et convmtx(v) utile. Dans votre cas

convmtx([1,2,3,4,5],5) 

Produit:

1  2  3  4  5  0  0  0  0 
0  1  2  3  4  5  0  0  0 
0  0  1  2  3  4  5  0  0 
0  0  0  1  2  3  4  5  0 
0  0  0  0  1  2  3  4  5 
4

Ce n'est pas tridiagonal, mais une variante de la matrice pentadiagonale. Vous pouvez utiliser diag, ou sparse, ou spdiags, qui pourraient tous le construire. Vous pouvez lire mon code blktridiag, comme sur le File Exchange, pour apprendre comment je construis une telle matrice efficacement.

Mais peut-être la solution la plus simple est de reconnaître que votre matrice est d'une forme spéciale, une matrice toeplitz.

>> toeplitz([1:5,zeros(1,4)]',[1, zeros(1,4)]) 
ans = 
    1  0  0  0  0 
    2  1  0  0  0 
    3  2  1  0  0 
    4  3  2  1  0 
    5  4  3  2  1 
    0  5  4  3  2 
    0  0  5  4  3 
    0  0  0  5  4 
    0  0  0  0  5 
Questions connexes