问题标签 [qr-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 投票
2 回答
10889 浏览

javascript - 求矩阵变换的旋转和偏斜

我在 CSS 中有以下变换矩阵

我可以使用这个找到旋转...

同样对于偏斜如果...

然而,一旦我同时使用倾斜和旋转,一切都会变得很奇怪,尤其是因为旋转的公式与倾斜的公式相同......所以公式不可能是正确的。

我如何确定两个属性都已应用的旋转和倾斜,我只知道矩阵变换。

比例也弄乱了我的偏斜值,我认为它不应该。

0 投票
2 回答
4322 浏览

c++ - c ++中的薄QR分解

是否有一个易于使用的 c++ 库用于矩形矩阵的“薄”QR 分解?
Eigen 似乎只支持完整的 Q 矩阵。我可以取一个完整的 Q 并丢弃一些列,但是不计算它们会更有效吗?

0 投票
1 回答
4772 浏览

r - 通过 QR 分解、SVD(和 Cholesky 分解?)计算投影/帽子矩阵

我试图在 R 中计算P任意 N x J 矩阵的投影矩阵S

我一直在尝试使用以下功能执行此操作:

但是当我使用它时,我会得到如下所示的错误:

我认为这是数字下溢和/或不稳定的结果,正如r-helphere等许多地方所讨论的那样,但我没有足够的经验使用 SVD 或 QR 分解来解决问题,或者将这个现有代码放入行动。我还尝试了建议的代码,即将解决方案编写为系统:

但它仍然不起作用。任何建议,将不胜感激。

我很确定我的矩阵应该是可逆的并且没有任何共线性,只是因为我尝试使用正交虚拟变量矩阵来测试它,但它仍然不起作用。

另外,我想将此应用于相当大的矩阵,因此我正在寻找一个简洁的通用解决方案。

0 投票
1 回答
1092 浏览

r - lm和biglm中的QR分解不同?

我正在尝试从 biglm 中使用的 QR 分解中恢复 R 矩阵。为此,我使用了 vcov.biglm 中的一部分代码并将其放入如下函数中:

更具体地说,我试图从基本包中获得与使用 qr.R 相同的结果,该包用于类“qr”的 QR 分解,例如 lm 类 (lm$qr) 中包含的那些。基本函数的代码如下:

除了符号之外,我设法为样本回归获得了相同的结果。

比较两者,很明显绝对值匹配,但符号不匹配。

我不太明白为什么会这样。我希望能够从 biglm 获得与 lm 相同的 R 矩阵结果。

0 投票
1 回答
27968 浏览

matlab - 使用 Givens 旋转的 QR 分解算法

我在 MATLAB 中编写了一个 QR 分解算法,只是为了确保我的机制是正确的。这是主要功能的代码:

下面给出了子函数 GivensRotation:

我已经完成了研究,我很确定这是实现这种分解的最直接的方法之一,尤其是在 MATLAB 中。但是当我在矩阵 A 上测试它时,产生的 R 并不是应有的直角三角形。Q 是正交的,并且 Q*R = A,所以该算法在做一些正确的事情,但它并没有产生完全正确的分解。也许我只是盯着这个问题太久了,但是任何关于我忽略了什么的见解都会受到赞赏。

0 投票
1 回答
913 浏览

mathnet-numerics - Math.NET Numerics 中的 QR 分解

Math.NET Numerics 中如何实现 QR 分解?

是使用 Gram-Schimdt 还是使用 Givens 旋转?我感觉它是用 Gram-Schimdt 实现的,但我不确定。我找不到实现。

就结果而言,使用 Gram-Schimdt 的 QR 分解与使用 Givens 旋转的不同吗?

我使用Givens旋转矩阵生成(手动)QR分解,然后使用MathNet.Numerics.LinearAlgebra.Generic.Factorization.QRMethod(我相信它实现了Gram-Schimdt)生成QR分解,结果略有不同。数字之间的差异大约为 1E-16(不是那么大),并且某些行具有相反的符号 (*-1)(这是真正的问题 - 我认为这是因为 MathNet.Numerics 实现了不同的 QR 算法)。

你能推荐一些使用 Givens 旋转执行 QR 分解的库吗?

0 投票
3 回答
2129 浏览

opencv - OpenCV中的QR分解

OpenCV 提供 SVD 分解,但我在它的库中找不到一般的 QR 分解。有没有其他方法可以实现这一目标?

0 投票
1 回答
827 浏览

opencv - 从视频中的单应性中提取人脸旋转

我正在尝试确定视频中人脸的方向。

视频从脸部的正面图像开始,因此没有旋转。在以下帧中,头部旋转,我试图确定旋转,这将引导我根据相机位置确定面部方向。

我正在使用 OpenCV 和 C++ 来完成这项工作。我正在使用 SURF 描述符来查找脸上的点,我用这些点来计算两个图像之间的单应性。由于两帧彼此非常接近,因此在该间隔内头部旋转将最小,并且我的单应矩阵将接近单位矩阵。

这是我的单应矩阵:

其中 k1 和 k2 是使用 SURF 提取的关键点。

我正在使用decomposeProjectionMatrix来提取旋转矩阵,但现在我不确定如何解释 rotMatrix。这个也基本上是 (1 0 0; 0 1 0; 0 0 1) (其中 0 是从 e-10 到 e-16 范围内的数字)。

理论上,试图做的是找到每帧的旋转角度并将其存储在某个地方,这样如果我在每帧中得到 1° 的变化,在 10 帧之后我知道我的头已经改变了它的方向10°。

我花了一些时间阅读我能找到的关于 QR 分解、单应矩阵等的所有内容,但我无法解决这个问题。因此,任何帮助将不胜感激。

谢谢!

0 投票
1 回答
2784 浏览

c - 如何在 C 和 CUDA 中通过改进的 Gram-Schmidt 方法进行 QR 分解

任何人都知道如何通过 C 和 CUDA 中修改的 Gram-Schmidt 方法进行 QR 分解。一些例子/来源/论文或其他?非常感谢。

编辑:我无法回答我的问题,因为有人已经关闭它,所以我决定更新我的问题。

当我用 cuda-memcheck 运行程序时,我得到了这个结果:

[mcrociara@tesla project_CUDA]$ cuda-memcheck ./qr_gpu -r 4 -c 4 ========= CUDA-MEMCHECK optarg: 4 optarg: 4 GPUassert: unspecified launch failure src/qr_gpu.cu 99 == =======大小为 4 的全局读取无效 ========= xTA 中的 0x000000c8 ========== 块 (0,0) 中的线程 (0,0,0) ,0)

========= 地址 0x3b5273104 超出范围

========= 大小为 4 的全局读取无效========== xTA 中的 0x000000c8 ========= 块 (0) 中的线程 (1,0,0) ,0,0)

========= 地址 0x3b5273108 超出范围

========= 大小为 4 的全局读取无效========== xTA 中的 0x000000c8 ========= 块 (0) 中的线程 (2,0,0) ,0,0)

========= 地址 0x3b527310c 超出范围

========= 错误摘要:3 个错误

有人可以帮助理解为什么?我在这个算法上实现了似乎工作正常的串行版本:

提前致谢!

0 投票
1 回答
6916 浏览

matlab - MatLab中的QR分解

我有以下问题。

我的任务是为数据拟合多项式。我想使用 Gram-Schimdt 正交化过程来实现 QR 算法。它内置在这个函数中:

矩阵 Q,R 与在 MatLab 函数中实现的这些 Q,R 几乎相同。唯一的区别是符号。如果我用 MatLab 函数求解我的方程组 R*x=Q*y,我会得到精确解。但是如果我使用我自己的矩阵 Q 和 R,那么我会得到错误的结果。谁能告诉我我的方法的问题在哪里?我还附上了我的脚本代码。

你认为这么大的错误会是计算错误造成的吗?我真的很绝望,因为我似乎有两个相同的线性方程组并且解决方案不同。