如何在matlab中制作三对角矩阵?

时间:2011-05-07 07:47:33

标签: matlab vector

我如何在矢量[1 2 3 4 5]

下面创建矩阵
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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:0)

看看这里: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的三对角矩阵。