2011-05-07 235 views

回答

2

不確定你正在嘗試做什麼,但你可能會發現diag(v,n)convmtx(v)有用。在你的情況

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

產地:

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

這不是三對角,而五對角矩陣的一個變種。您可以使用diag或sparse或spdiags,所有這些都可以構建它。您可以閱讀我的blktridiag代碼(如File Exchange中的代碼),以瞭解如何有效地構建這樣的矩陣。

但也許最簡單的解決方案是認識到你的矩陣是一個特殊的形式,一個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