构造下三角矩阵
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(尽管它可能不会为你节省任何内存,因为你的矩阵将是一半-满)。
【讨论】:
以上是关于构造下三角矩阵的主要内容,如果未能解决你的问题,请参考以下文章