问题标签 [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.
c++ - Eigen3 稀疏求解器不可复制
我正在研究数字代码,并希望评估稀疏和密集矩阵-LU 分解(以及后来的其他分解)对于代码的用例有何不同。Eigens Dense Decomposition Objects 可以是可复制的,用于缓存这些,使用 boost::variant,以便以后获得更大的灵活性。
我想用稀疏求解器达到同样的效果,但这样做有困难。下面的最小示例应该说明我的方法。
问题是,为什么稀疏求解器不可复制?我可以只编写自己的复制操作,还是它们绝对不正确。我该如何解决这个问题?
谢谢 :)
numerical-methods - 带有部分旋转的 LU 分解如何工作?
我正在使用最初将 L 的主对角线上的元素设置为 1 的方法(认为这是 Doolittle 的方法,但不确定,因为我看到它的名称不同)。我知道有大量的文档、论文和书籍,但我找不到不使用高斯消元法寻找 L 的简单示例。
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 中)。
谢谢!
python - R和Python中的LU分解结果不一致
A
我在 R 中有以下矩阵:
我计算它的LU分解如下:
另一方面,这是同一工作的 Python 代码:
我想知道为什么 R 和 Python 中的两个C
和lu
矩阵(分别)不一样。关键是我必须得到与 Python 版本(即矩阵lu
)相同的结果。你知道我做错了什么吗?
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)
这是我的库代码,我想知道这是否与三态总线警告有关?如果是这样,是否有任何参考来设计适当的细胞?
抱歉发了很长的帖子。我希望我清楚地问了我的问题。
r - 我的相关矩阵的 Cholesky 分解失败
我试图用它chol()
来找到下面相关矩阵的 Cholesky 分解。我可以使用该功能的最大尺寸吗?我问是因为我得到以下信息:
但是,我可以毫无问题地将其分解为少于 60 个元素(即使它包含原始元素的第 61 个元素):
这是矩阵:
https://drive.google.com/open?id=0B0F1yWDNKi2vNkJHMDVHLWh4WjA
r - 半正定矩阵 Cholesky 分解中枢轴的正确使用
我不明白如何使用chol
R 中的函数来分解正半定矩阵。(或者我这样做,并且有一个错误。)文档指出:
如果 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
。我是否错误地使用了枢轴?
opencv - 重构 OpenCV RQDecomp3x3 的结果
RQDecomp3x3
在 OpenCV中运行后,您将获得:
如何从三个旋转矩阵 ( Qx
, Qy
, Qz
) 回到原始输入矩阵?
或者在输入矩阵是旋转矩阵的情况下,mtxR
将是单位矩阵,那么如何从三个旋转矩阵转到mtxQ
?
尽管我不明白为什么需要转置,但已更新答案。
machine-learning - 协同过滤器中用户和项目矩阵的潜在特征模型的值代表什么?
在分解推荐系统的评分矩阵时,评分矩阵可以写为 P* t(Q),其中 P 表示用户因子矩阵,Q 表示项目因子矩阵。Q的维度可以写成等级*项目数。我想知道 Q 矩阵中的值是否真的代表任何东西,例如物品的重量?还有,有没有办法找出 Q 矩阵中的一些隐藏模式?
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)中可用的库似乎没有任何这样的函数。