我如何在矢量[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
答案 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的三对角矩阵。