Matlab sum(A,2)背后的相应LAPACK函数是什么,其中A是矩阵?

时间:2014-11-05 20:48:03

标签: matlab lapack

Matlab函数sum(A,2)背后的对应LAPACK函数是什么,其中A是矩阵?

1 个答案:

答案 0 :(得分:2)

我刚看了LAPACK documentation。我也看过this post on Computational Science beta。事实证明,没有本机LAPACK函数可以计算给定维度中矩阵的总和。因此,MATLAB可能会编写一些自定义内容,以便以这种方式促进矩阵的给定维度的总和。

有几种方法可以解决这个问题:

  1. 使用全1的向量计算矩阵向量乘法。因为您正在执行sum(A,2),这意味着您要对每一行的所有列求和。您可以通过执行y = A*x来封装此行为,其中A是有问题的矩阵,x是所有1的向量。 y将是输出,您将在矩阵的每一行的所有列中检索总和。因此,您可以使用sgemv并仔细选择正确的输入,以便向量x由所有1组成,矩阵A是所讨论的矩阵。您需要将beta常量设置为0,并将y向量提供为全零。您还需要将alpha设置为1。
  2. 您可以选择编写自己的代码,遍历矩阵中每行的所有列,并将所有元素添加到一起。如果您尝试执行选项#1,则此操作不允许任何缓存重用。因此,当您编写自己的循环时,大多数编译器应该能够优化代码以获得最佳性能。
  3. 另一种方法是将矩阵的每一行提取为矢量,并使用所有1的向量计算此行的点积。也许使用类似sdsdot之类的东西就可以了。
  4. 但是,如果您的代码没有花太多时间做总和,那么您可以选择选项#1。如果您反复进行sum(A,2)计算,那么最好编写自己的循环(即选项#2或#3)。

    祝你好运!