是否有一种有效的方法来生成方形多对角矩阵,例如:
[[1,2,3],
[2,1,2],
[3,2,1]]
[[1,2,3,4,5],
[2,1,2,3,4],
[3,2,1,2,3],
[4,3,2,1,2],
[5,4,3,2,1]]
到目前为止,我的努力产生了以下结果:
t=10
sum=zeros(t,t)
for i=1:t
sum+=diag(ones(1,i)*(t-i)+1,t-i);
end
sum
sum+sum'-diag(ones(1,10),0)
答案 0 :(得分:6)
命令toeplitz
完全符合您的要求:
toeplitz([1,2,3,4,5,6])
ans =
1 2 3 4 5 6
2 1 2 3 4 5
3 2 1 2 3 4
4 3 2 1 2 3
5 4 3 2 1 2
6 5 4 3 2 1
答案 1 :(得分:4)
您正在寻找的是一种对称(厄米特)托普利兹矩阵。
我不熟悉matlab,但我在mathworks上找到了this文档: