【问题标题】:Efficient way to make a multi-diagonal matrix制作多对角矩阵的有效方法
【发布时间】:2013-02-19 00:40:18
【问题描述】:

有没有一种有效的方法来产生诸如这些的方形多对角矩阵:

[[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)

【问题讨论】:

标签: matlab matrix diagonal


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您要查找的内容称为对称(厄米特)托普利兹矩阵。

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

    【讨论】:

      猜你喜欢
      • 2017-12-23
      • 2022-08-21
      • 1970-01-01
      • 2011-12-18
      • 2019-05-25
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      相关资源
      最近更新 更多