【问题标题】:How to make tridiagonal matrix in matlab?如何在matlab中制作三对角矩阵?
【发布时间】:2011-05-07 07:47:33
【问题描述】:

我如何从向量 [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

【问题讨论】:

    标签: matlab vector


    【解决方案1】:

    这不是三对角矩阵,而是五对角矩阵的变体。您可以使用 diag、sparse 或 spdiags,所有这些都可以构建它。您可以阅读我在File Exchange 上找到的blktridiag 代码,了解我如何有效地构建这样的矩阵。

    但也许最简单的解决方案是识别出您的矩阵是一种特殊形式,即托普利茨矩阵。

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

    【讨论】:

      【解决方案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
      

      【讨论】:

        【解决方案3】:

        看这里: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 阶的三对角矩阵。

        【讨论】:

          猜你喜欢
          • 2014-05-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-03
          • 2021-12-18
          • 2015-05-21
          相关资源
          最近更新 更多