- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
R具有qr()
函数,该函数使用LINPACK或LAPACK执行QR分解(以我的经验,后者快5%)。返回的主要对象是一个矩阵“ qr”,该矩阵包含在上三角矩阵R中(即R=qr[upper.tri(qr)]
)。到目前为止,一切都很好。 qr的下部三角形部分包含“紧凑形式”的Q。可以使用qr.Q()
从qr分解中提取Q。我想找到qr.Q()
的反函数。换句话说,我确实有Q和R,并希望将它们放在“ qr”对象中。 R是微不足道的,但Q不是。目标是将其应用于qr.solve()
,它在大型系统上比solve()
快得多。
最佳答案
介绍
R默认情况下使用LINPACK dqrdc
例程,或在指定时使用LAPACK DGEQP3
例程来计算QR分解。这两个例程都使用Householder反射来计算分解。将mxn矩阵A分解为mxn经济规模正交矩阵(Q)和nxn上三角矩阵(R),如A = QR,其中Q可以通过t家用反射矩阵的乘积来计算,t较小m-1和n的乘积:Q = H1H2 ... Ht。
每个反射矩阵Hi可以由长度-(m-i + 1)向量表示。例如,H1需要长度为m的向量以进行紧凑存储。此向量中除一个外的所有条目都放置在输入矩阵下三角的第一列中(R因子使用对角线)。因此,每个反射都需要一个以上的标量存储,这由一个辅助矢量(在R的$qraux
结果中称为qr
)提供。
LINPACK和LAPACK例程之间使用的紧凑表示形式有所不同。
LINPACK方式
根据Hi = I-viviT / pi来计算Householder反射,其中I是单位矩阵,pi是$qraux
中的相应条目,vi如下所示:
vi [1..i-1] = 0,
vi [i] = pi
vi [i + 1:m] = A [i + 1..m,i](即,调用qr
后A的下三角的列)
LINPACK示例
让我们研究R中的Wikipedia中的example from the QR decomposition article。
分解的矩阵是
> A <- matrix(c(12, 6, -4, -51, 167, 24, 4, -68, -41), nrow=3)
> A
[,1] [,2] [,3]
[1,] 12 -51 4
[2,] 6 167 -68
[3,] -4 24 -41
> Aqr = qr(A)
> Aqr
$qr
[,1] [,2] [,3]
[1,] -14.0000000 -21.0000000 14
[2,] 0.4285714 -175.0000000 70
[3,] -0.2857143 0.1107692 -35
[snip...]
$qraux
[1] 1.857143 1.993846 35.000000
[snip...]
$qr
中的信息重新创建反射。
> p = Aqr$qraux # for convenience
> v1 <- matrix(c(p[1], Aqr$qr[2:3,1]))
> v1
[,1]
[1,] 1.8571429
[2,] 0.4285714
[3,] -0.2857143
> v2 <- matrix(c(0, p[2], Aqr$qr[3,2]))
> v2
[,1]
[1,] 0.0000000
[2,] 1.9938462
[3,] 0.1107692
> I = diag(3) # identity matrix
> H1 = I - v1 %*% t(v1)/p[1] # I - v1*v1^T/p[1]
> H2 = I - v2 %*% t(v2)/p[2] # I - v2*v2^T/p[2]
> Q = H1 %*% H2
> Q
[,1] [,2] [,3]
[1,] -0.8571429 0.3942857 0.33142857
[2,] -0.4285714 -0.9028571 -0.03428571
[3,] 0.2857143 -0.1714286 0.94285714
> qr.Q(Aqr)
[,1] [,2] [,3]
[1,] -0.8571429 0.3942857 0.33142857
[2,] -0.4285714 -0.9028571 -0.03428571
[3,] 0.2857143 -0.1714286 0.94285714
> R = qr.R(Aqr) # extract R from Aqr$qr
> Q %*% R
[,1] [,2] [,3]
[1,] 12 -51 4
[2,] 6 167 -68
[3,] -4 24 -41
$qraux
中的相应条目,vi如下所示:
qr
后A的下三角的列)
> A <- matrix(c(12, 6, -4, -51, 167, 24, 4, -68, -41), nrow=3)
> Bqr = qr(A, LAPACK=TRUE)
> Bqr
$qr
[,1] [,2] [,3]
[1,] 176.2554964 -71.1694118 1.668033
[2,] -0.7348557 35.4388886 -2.180855
[3,] -0.1056080 0.6859203 -13.728129
[snip...]
$qraux
[1] 1.289353 1.360094 0.000000
$pivot
[1] 2 3 1
attr(,"useLAPACK")
[1] TRUE
[snip...]
$pivot
字段;我们将回到这一点。现在,我们从
Aqr
信息生成Q。
> p = Bqr$qraux # for convenience
> v1 = matrix(c(1, Bqr$qr[2:3,1]))
> v1
[,1]
[1,] 1.0000000
[2,] -0.7348557
[3,] -0.1056080
> v2 = matrix(c(0, 1, Bqr$qr[3,2]))
> v2
[,1]
[1,] 0.0000000
[2,] 1.0000000
[3,] 0.6859203
> H1 = I - p[1]*v1 %*% t(v1) # I - p[1]*v1*v1^T
> H2 = I - p[2]*v2 %*% t(v2) # I - p[2]*v2*v2^T
> Q = H1 %*% H2
[,1] [,2] [,3]
[1,] -0.2893527 -0.46821615 -0.8348944
[2,] 0.9474882 -0.01602261 -0.3193891
[3,] 0.1361660 -0.88346868 0.4482655
> qr.Q(Bqr)
[,1] [,2] [,3]
[1,] -0.2893527 -0.46821615 -0.8348944
[2,] 0.9474882 -0.01602261 -0.3193891
[3,] 0.1361660 -0.88346868 0.4482655
> R = qr.R(Bqr)
> Q %*% R
[,1] [,2] [,3]
[1,] -51 4 12
[2,] 167 -68 6
[3,] 24 -41 -4
Bqr$pivot
中的顺序排列其列。
关于r - 由qr.Q()迷惑:什么是“紧凑”形式的正交矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3031215/
我了解到 QRCODES 的字符数限制约为 4,290 个(约 4kb)。 这是真的吗?有什么方法可以增加它们的内存大小吗? 如果可能的话,我希望有更多空间:P 最佳答案 规范摘要如下: * ht
我越来越多地考虑使用 QR 码来传输二进制信息,例如图像,因为每当我演示我的应用程序时,它都会发生在 WiFi 或 3G/4G 无法工作的情况下。 我想知道是否可以将一个二进制文件分成多个部分,以便通
谁知道如何生成二维码?以及如何像这里一样装饰http://mojiq.kazina.com/ ? 最佳答案 试试这个教程 http://www.thonky.com/qr-code-tutorial/
我有以下 ZPL 代码,它打印带有字段数据 X50X-8091X-11111 的 QR 代码。 ^XA^PON^FWN^FO30,10^BQN,2,6^FDx50x-8091x-12345^FS^XZ
查找 Q 的其他正交列的最佳方法是什么?我已经计算了简化的 QR 分解,但需要完整的 QR 分解。 我认为有一个标准方法,但我一直找不到它。 您可能想知道为什么我需要完整的 Q 矩阵。我用它来将“自然
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我使用 2 个不同的生成器工具生成了 2 个二维码,但输入数据相同。他们生成了完全不同的二维码。如果我扫描代码我得到相同的数据,所以看起来没问题,但我不确定这种现象的原因。 任何的想法? 编辑: 例子
我正面临一个我想不太熟悉的问题(因为,在谷歌上搜索,我没有发现任何提示)。我正在尝试使用 TCPDF 提供的类生成 QR 码。几乎一切正常。我能够生成任何类型的网站链接等。 但是当我尝试为“发送电子邮
我正面临一个我想不太熟悉的问题(因为,在谷歌上搜索,我没有发现任何提示)。我正在尝试使用 TCPDF 提供的类生成 QR 码。几乎一切正常。我能够生成任何类型的网站链接等。 但是当我尝试为“发送电子邮
我正在制作一个二维码阅读器,我遇到了 zxing lib。我能够成功地将它合并到我的项目中。但是,在使用该应用程序时,我注意到它需要另一个应用程序(即 qr droid 应用程序)才能使用它,否则应用
根据wiki ,Google 2 因素身份验证 key 应该是 16 个字符的 Base32 字符串。当我解码谷歌发给我的二维码时,我发现它符合 Key format specified by goo
为什么使用相同的网址时某些二维码看起来会有所不同? 最佳答案 QR 码有 40 种版本(大小)、4 个纠错级别和 8 种屏蔽可能性,为任何给定输入提供总共 1280 个可能的 QR 码。 通常根据要存
我正在开发 iOS 上的 QR 码扫描仪应用程序,我得到了输出 AVCaptureOutput关于委托(delegate)方法captureOutput:didOutputMetadataObject
我有一个可以扫描二维码的应用。 场景: 前往应用 点击“扫描”按钮 打开相机扫描二维码 我的问题是:我可以使用 Appium“模拟”QR 吗? 最佳答案 如果您有 QR code. Scenario
我们已使用 Unity 5.3.4f1 中的 ZXing.dll 和 Vuforia Unity SDK 5.5.9 实现了 QR 检测功能。我们在 GameObject 上有一个 QR 检测脚本,该
Warning: sharing your TOTP seed with third-parties breaks the very basic assumption of multi-factor
我正在使用 PHP QR 码 ( http://phpqrcode.sourceforge.net/ ) 创建 QR 码。它运行良好,但现在我需要一个自由空间来放置其中心的自定义图形或 Logo 。我
QR 二维码中插入图片 二维码终于火了,现在大街小巷大小商品广告上的二维码标签都随处可见,而且大都不是简单的纯二维码,而是中间有个性图标的二维码。 我之前做了一个使用google开源项目zxin
我对二维码字符表有点疑惑。规范摘要如下: Numeric only Max. 7,089 characters (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) Alphanumer
我正在尝试为每个客户生成二维码。每个二维码都会给我创建一封电子邮件。我已经研究过并且我非常确定我了解如何最好地创建包含特定主题和正文的电子邮件。 创建用于创建电子邮件的 mailto 代码/脚本/行。
我是一名优秀的程序员,十分优秀!