gpt4 book ai didi

excel - 使用 VBA 和 C++ DLL 的伪逆计算

转载 作者:行者123 更新时间:2023-12-04 21:57:58 25 4
gpt4 key购买 nike

我想在 Excel 中使用 VBA 伪逆一个大的退化矩阵(类似于众所周知的“pinv”函数)。据我了解,excel 工具无法处理退化矩阵。

我发现没有什么比尝试实现一个 C++ DLL 库并链接到 VBA 更好的了。我遇到了以下问题:

我的配置是:Windows 10 x64,Office 16 x64。我使用 VS 2015 创建 DLL 作为 x64 DLL。我已经设法创建和链接简单的 DLL,甚至传递到双数组并从中获取。但是当涉及到将诸如 Armadillo 之类的数学库与动态链接的 BLAS 一起使用时,就出现了困惑。

任何使用 BLAS x64 DLL 的工作和调试代码,以防被包装为 DLL 并从 VBA 调用会使 Excel 崩溃。我已经检查了依赖项并将 BLAS/LAPACK dll 放入几乎每个合适的文件夹中。即使我不使用任何传递的参数,它也会崩溃。 Proc 监视器显示依赖关系正常。看起来当 Excel 从 DLL 调用某些函数时会阻止来自该 DLL 的外部调用。

最佳答案

可能有点晚了,不完全符合您的要求,但我刚刚完成了一个 VBA 子程序,它计算矩阵的 Moore-Penrose 伪逆,这可能对您仍然有帮助。它遵循与 MATLAB 的“pinv”函数类似的过程并产生可比较的结果。您可以从下面的链接中获取代码。表格中还汇总了 VBA 和 MATLAB 函数的结果之间的比较。

http://www.nicksfinancetricks.com/index.php/2017/01/08/moore-penrose-pseudoinverse-calculation/

该算法有三个主要组成部分,包括通过 Gram-Schmidt 正交化的 QR 分解、奇异值分解 (SVD),以及最后去除任何奇异值以便可以制定伪逆。

关于excel - 使用 VBA 和 C++ DLL 的伪逆计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40663941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com