构造下三角矩阵

Posted

技术标签:

【中文标题】构造下三角矩阵【英文标题】:Constructing lower triangular matrix 【发布时间】:2018-02-12 22:20:36 【问题描述】:

我正在尝试构造一个特定形式的下三角矩阵,截至目前,我正在使用以下 for 循环:

M = sparse(eye(DIM));
for k = 1 : DIM - 1
    ak = -z*(1-z)^(k-1);
    M = M + sparse(diag(ak * ones(1, DIM - k), -k));
end

基本上,从主对角线向下的每条对角线都是恒定的。我没有包括我对 DIM 和 z 的定义,因为它们与矩阵的构造无关。

有人知道更快的方法吗?也许是矢量化版本?

【问题讨论】:

看起来像一个Toeplitz 矩阵,只是稀疏的。如果你的一半矩阵是满的,我不确定保持它稀疏是否有意义。 啊,托普利茨矩阵!谢谢!这有帮助。关于稀疏性,我明白你的意思。 :) 【参考方案1】:

As Andras mentioned in a comment,您可以使用toeplitz 帮助您生成此文件,而无需循环。您可以使用双输入形式(提供第一列和第一行的内容)来创建一个非对称矩阵,如下所示:

M = toeplitz([1 -z.*(1-z).^(0:DIM-2)], [1 zeros(1, DIM-1)]);

这将是一个full 矩阵,所以如果你需要它,你必须将它转换为sparse(尽管它可能不会为你节省任何内存,因为你的矩阵将是一半-满)。

【讨论】:

以上是关于构造下三角矩阵的主要内容,如果未能解决你的问题,请参考以下文章

如何构造householder矩阵

(专题二)矩阵变换

232 constructor构造函数,构造函数实例原型对象的三角关系

项目1-三角形类的构造函数

如何构造一个 128x32 的置乱矩阵?

R:如何在给定行和列标签以及二元运算符的情况下构造数据框/矩阵