问题标签 [matrix-decomposition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
214 浏览

c++ - Eigen3 稀疏求解器不可复制

我正在研究数字代码,并希望评估稀疏和密集矩阵-LU 分解(以及后来的其他分解)对于代码的用例有何不同。Eigens Dense Decomposition Objects 可以是可复制的,用于缓存这些,使用 boost::variant,以便以后获得更大的灵活性。

我想用稀疏求解器达到同样的效果,但这样做有困难。下面的最小示例应该说明我的方法。

问题是,为什么稀疏求解器不可复制?我可以只编写自己的复制操作,还是它们绝对不正确。我该如何解决这个问题?

谢谢 :)

0 投票
1 回答
935 浏览

numerical-methods - 带有部分旋转的 LU 分解如何工作?

我正在使用最初将 L 的主对角线上的元素设置为 1 的方法(认为这是 Doolittle 的方法,但不确定,因为我看到它的名称不同)。我知道有大量的文档、论文和书籍,但我找不到不使用高斯消元法寻找 L 的简单示例。

0 投票
2 回答
272 浏览

matlab - 将矩阵对角线转换为列

我正在寻找以下形式的矩阵运算:B = M*A*N哪里A是一些一般的方阵,M并且N是我想要找到的矩阵。使得 的列B是 的对角线A。第一列是主对角线,第二列是从主对角线偏移 1 的对角线,依此类推。

例如在 MATLAB 语法中:

编辑:似乎不存在纯线性代数解决方案。所以我会更准确地说明我想要做什么:

v对于一些大小的向量1 x m。然后定义C = repmat(v,m,1). 我的矩阵是A = C-C.';. 因此,A本质上是所有值的差异,v但我只对值之间的差异感兴趣。这些是 的对角线A;但是m太大了,这样的m x m矩阵的构造会导致内存不足的问题。我正在寻找一种以尽可能高效的方式提取这些对角线的方法(在 MATLAB 中)。

谢谢!

0 投票
1 回答
1530 浏览

python - R和Python中的LU分解结果不一致

A我在 R 中有以下矩阵:

我计算它的LU分解如下:

另一方面,这是同一工作的 Python 代码:

我想知道为什么 R 和 Python 中的两个Clu矩阵(分别)不一样。关键是我必须得到与 Python 版本(即矩阵lu)相同的结果。你知道我做错了什么吗?

0 投票
1 回答
568 浏览

python - Verilog综合实现cholesky分解

我正在按照下面的python代码在verilog中实现Cholesky分解

我尝试用 3x3 输入大小做一个简单的。由于它需要除法和平方根,我还使用标准方法(从互联网复制并进行了一些修改)编写了一个除法,并使用巴比伦方法(牛顿方法的一种变体)编写了一个 sqrt。他们来了:

分配

平方

这是我的 3x3 cholesky 分解代码:

对代码的一些解释:我没有使用 for 循环,所以我将它们展开为tmp_A10_minus_sum = A[1][0] - tmp_sum;. 映射到 python 代码应该相当容易。之前插入 8 个零的原因A是我会尝试将代码“升级”为使用 24 位,以便它可以更准确。这不是问题。

三态总线警告

问题是当我使用 Synopsys DC 编译它时,它会输出如下警告:

“警告:在设计‘cholesky_template’中,三态总线‘tmp_A00_minus_sum[23]’具有非三态驱动程序‘tmp_A00_minus_sum_reg[23]/Q’。(LINT-34)”

这是 DC 对 LINT-34 的描述:

NAME LINT-34(警告)在设计“%s”中,三态总线“%s”具有非三态驱动程序“%s”。

描述 Synopsys 库包含对组件上的三态驱动引脚的描述。如果网络由至少一个具有三态属性的引脚驱动,则 Synopsys 工具将其分类为三态网络。通常,如果此类网络上有多个驱动器,则假定所有驱动引脚都应为三态驱动器,以正确操作三态总线。此警告消息指示至少一个非三态驱动程序出现在三态网络上的情况。

WHAT_NEXT 验证这是您对给定网络的预期。如果消息中指定的非三态驱动引脚确实在您的 ASIC 技术中的三态驱动上,请验证技术库描述是否正确。

为什么设计中有三态属性?我该如何纠正它们?


目标库不包含寄存器的替代品

这是我收到的另一个警告,例如:

警告:目标库不包含寄存器“A_reg[1][0][7]”(FFGEN)的替代品。(TRANS-4)

这是我的库代码,我想知道这是否与三态总线警告有关?如果是这样,是否有任何参考来设计适当的细胞?

抱歉发了很长的帖子。我希望我清楚地问了我的问题。

0 投票
1 回答
1493 浏览

r - 我的相关矩阵的 Cholesky 分解失败

我试图用它chol()来找到下面相关矩阵的 Cholesky 分解。我可以使用该功能的最大尺寸吗?我问是因为我得到以下信息:

但是,我可以毫无问题地将其分解为少于 60 个元素(即使它包含原始元素的第 61 个元素):

这是矩阵:

https://drive.google.com/open?id=0B0F1yWDNKi2vNkJHMDVHLWh4WjA

0 投票
1 回答
1334 浏览

r - 半正定矩阵 Cholesky 分解中枢轴的正确使用

我不明白如何使用cholR 中的函数来分解正半定矩阵。(或者我这样做,并且有一个错误。)文档指出:

如果 pivot = TRUE,则可以计算半正定 x 的 Choleski 分解。x 的排名以 attr(Q, "rank") 形式返回,但会出现数值错误。枢轴作为 attr(Q, "pivot") 返回。t(Q) %*% Q 不再等于 x。但是,设置 pivot <- attr(Q, "pivot") 和 oo <- order(pivot),确实 t(Q[, oo]) %*% Q[, oo] 等于 x ...

以下示例似乎与此描述不符。

结果不是x。我是否错误地使用了枢轴?

0 投票
1 回答
701 浏览

opencv - 重构 OpenCV RQDecomp3x3 的结果

RQDecomp3x3在 OpenCV中运行后,您将获得:

如何从三个旋转矩阵 ( Qx, Qy, Qz) 回到原始输入矩阵?

或者在输入矩阵是旋转矩阵的情况下,mtxR将是单位矩阵,那么如何从三个旋转矩阵转到mtxQ

尽管我不明白为什么需要转置,但已更新答案

0 投票
1 回答
162 浏览

machine-learning - 协同过滤器中用户和项目矩阵的潜在特征模型的值代表什么?

在分解推荐系统的评分矩阵时,评分矩阵可以写为 P* t(Q),其中 P 表示用户因子矩阵,Q 表示项目因子矩阵。Q的维度可以写成等级*项目数。我想知道 Q 矩阵中的值是否真的代表任何东西,例如物品的重量?还有,有没有办法找出 Q 矩阵中的一些隐藏模式?

0 投票
1 回答
373 浏览

matlab - 当我只有一个始终应用旋转的 LU 求解器时,如何进行 LDL 分解?

我希望我只是错过了一个简单的矩阵算术技巧,但我遇到的问题是我只能使用一个 LU 求解器(Matlab LU* 或 SuperLU),我需要一个对称的 LDL 分解矩阵 A. 所以我认为“没问题”,因为 LU 分解是唯一的,而 LDL 分解是唯一的,所以 D 只是 U 的对角线。

但问题是它永远不会 A = LU,而是 PA = LU 并且 PA 不是对称的!所以我不知道如何从 PA = LU 确定 A = LDL

我可以做一些简单的事情来解决这个问题吗?任何帮助是极大的赞赏。

PS先发制人:是的,我真的,真的,真的,真的需要分解低密度脂蛋白。不是没有其他选择。是,我确定。不,您不需要我为您列出确切的问题来确认我确实需要进行 LDL 分解。

*我知道 Matlab 有它自己的 LDL 函数,但我只是用它来制作原型,而我在 C++(主要是 SuperLU)中可用的库似乎没有任何这样的函数。