制作多对角矩阵的有效方法

Ric*_*ard 2 matlab matrix diagonal

是否有一种有效的方法来生成方形多对角矩阵,例如:

[[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]]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的努力产生了以下结果:

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)
Run Code Online (Sandbox Code Playgroud)

And*_*ein 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
Run Code Online (Sandbox Code Playgroud)


ryr*_*ich 5

您正在寻找的称为对称(厄米)托普利兹矩阵。

我对 matlab 不熟悉,但我在 mathworks 上找到了这个文档: