如何在matlab中生成三对角矩阵?
如何从向量[1 2 3 4 5]创建下面的矩阵如何在matlab中生成三对角矩阵?,matlab,vector,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 请看这里: 例如: 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 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
请看这里:
例如:
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,所有这些都可以构建它。您可以阅读我在上找到的代码,了解我如何高效地构建这样一个矩阵 但也许最简单的解决办法是认识到你的矩阵是一种特殊的形式,一种托普利兹矩阵
>> 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