有没有一种有效的方法来产生方形多对角矩阵,例如:
[[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)
该命令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
您正在寻找的东西称为对称(Hermitian)toeplitz 矩阵。
我不熟悉matlab,但我在mathworks上找到了这个文档: