【发布时间】:2018-01-26 11:07:11
【问题描述】:
我正在尝试在 Excel 中将计算作为回归模型的一部分。
我需要计算((X^T)WX)^(-1)(X^T)WY。其中X、W、Y是矩阵,^T和^-1表示矩阵转置和求逆运算。
现在,当X、W、Y 尺寸较小时,我只需运行我的宏,它会非常非常快速地计算这些值。
但有时我在处理这种情况时说,X、W、Y 的尺寸分别为5000 X 5、5000 X 1 和5000 X 1,那么宏可能需要更长的时间运行。
我有两个问题:
将,而不是使用我的宏在 Excel 工作表上生成矩阵,然后使用 Excel 公式(如
MMULT和MINVERSE等)来计算输出,如果我使用更大维度的矩阵,它会更快VBA 中的数组来做所有的计算? (我不太清楚数组在 VBA 中是如何工作的,所以我实际上不知道它是否会做得更好,因此它是否会更快/计算量更少。)如果上述问题的答案是否定的,那就不会更快了。那么有人知道如何加快这样的计算吗?还是我只需要忍受它并等待。
感谢您的宝贵时间。
【问题讨论】:
-
如果您必须处理大量矩阵,那么 Matlab 可能值得一看。它非常强大,具有巨大的矩阵。对于您的用例,它可能有点过分(我无法确定,因为我不知道您的确切用例)。
-
我不知道如何解释它,除了我是怎么做的。对不起。
-
我的意思是您决定哪种工具适合您的情况。 Matlab 是一个非常强大的工具,但不如 Excel 好用。如果 Excel 需要一天或更长时间来计算,我只会切换。
-
这通常需要几分钟,所以在我看来还不错,不值得使用 matlab。我正在考虑使用 VBA,但我不确定它是否值得。也就是说,如果在 excel 中需要 5 分钟,在 VBA 中需要 4 分钟,那么这是不值得的。但是,如果在 excel 中需要 5 分钟,在 VBA 中需要 30 秒,那么我会尝试做 VBA,你能用你的最佳猜测评论相应的时间范围吗?
-
这在很大程度上取决于您的源数据的外观。您无法猜测使用 VBA 会获得多大的时间收益。您可以在 VBA 中对该解决方案进行编码并测量获得差异的时间。它还取决于您的 VBA 代码。如果它好它会更快,如果它坏它可能会比 Excel 更慢。您会看到:变量太多,无法准确猜测。