You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效计算两个矩阵各列向量间所有外积的总和?

高效计算矩阵所有列向量对的外积之和

你要的运算完全可以通过矩阵求和+外积的方式实现,不需要嵌套循环,效率会比循环实现高得多,尤其是当矩阵维度较大时。

数学推导

假设A是p×n矩阵,B是p×m矩阵,它们的列向量分别为$a_1,a_2,...,a_n$和$b_1,b_2,...,b_m$(均为p×1列向量)。所有列向量对的外积之和可以利用加法分配律简化为:
$$\sum_{i=1}^n \sum_{j=1}^m a_i b_j^T = \left(\sum_{i=1}^n a_i\right) \left(\sum_{j=1}^m b_j\right)^T$$
本质是先分别求出A、B所有列向量的和,再对这两个和向量做一次外积运算。

实现代码(以MATLAB为例)

针对你的示例矩阵:

A = [1,2,3; 3,1,4; 4,1,3];
B = [2,1,3; 4,1,2; 3,2,1];

% 对A、B按列求和,得到列向量
sum_A = sum(A, 2);
sum_B = sum(B, 2);

% 计算外积,得到最终结果U
U = sum_A * sum_B';

注意事项

你提供的示例代码中,A[:,n]'*B[:,m]是行向量×列向量,得到的是标量,这属于内积运算,和你描述的“外积”需求不符。如果确实要计算外积(得到矩阵),应该写成A[:,n] * B[:,m]',而上面的求和外积方法,正好对应修正后的循环逻辑。

效率对比

循环实现的时间复杂度是$O(nmp^2)$,而这个方法的时间复杂度是$O(p*(n+m))$,矩阵维度越大,效率差距越明显。

内容的提问来源于stack exchange,提问作者user48826

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 19:30:34