Solve Ax = b
。真正的双。A
是超定的 Mx2,其中 M >> 2。b
是MX1。我运行了大量的数据mldivide
,并且结果非常好。我用 MKL 写了一个 mex 例程LAPACKE_dgels
但它远没有那么好。结果有大量噪音,并且基本信号几乎不存在。我首先根据 MKL 示例结果检查了例程。我已经搜索过mldivide
doc(流程图)和SO问题。我发现Matlab 对超定矩形使用QR 分解。
接下来我应该尝试什么?我是否使用了错误的 LAPACK 例程?请帮助引导我走向正确的方向。
Update:对于解向量上的 E-15 浮点差,对于真正的双超定(矩形)问题,英特尔 MKL LAPACKE_dgels 具有与 Matlab mldivide 相同的结果。据我所知,这是使用的QR方法。
请注意从该 dgels 返回的残留物。它们不等于 b - Ax。其中许多接近该值,而有些则远离该值。
问题不是解决方案x
,而是返回的残差DGELS
。该例程的输出是在输入数组指针上就地修改的。这MKL doc https://software.intel.com/en-us/node/521112表示输入数组b
被输出向量覆盖x
为了第一N
行,然后是残差N+1
to M
。我用我的代码确认了这一点。
错误在于对齐b[N+1]
原始输入的残差b[1]
,并据此做出进一步的算法决策。残差与原始输入的正确对齐是b[1]
to b[1]
。首先N
残差不可用;你必须事后计算这些。
该文档并没有说它们本身是残差,而是具体地说
每列中解的剩余平方和由元素模的平方和给出n+1
to m
在那一栏里。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)