[1 2 3 4 5]如何在MATLAB中創建三對角矩陣?
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
[1 2 3 4 5]如何在MATLAB中創建三對角矩陣?
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
如何創建下面矩陣從矢量看一看這裏:http://www.mathworks.com/help/techdoc/ref/diag.html
實施例:
diag(-m:m)+diag(ones(2*m,1),1)+diag(ones(2*m,1),-1)
產生的順序2的三對角矩陣* m + 1個。
不確定你正在嘗試做什麼,但你可能會發現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
這不是三對角,而五對角矩陣的一個變種。您可以使用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