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

Matlab sum(A,2)后面对应的LAPACK函数是什么,其中A是矩阵?,matlab,lapack,Matlab,Lapack,Matlab函数sum(A,2)后面对应的LAPACK函数是什么,其中A是矩阵?我刚刚看了一下。我也看了一下。事实证明,在给定的维度上,不存在计算矩阵和的本机LAPACK函数。因此,MATLAB可能编写了一些自定义的东西,以便以这种方式在给定的矩阵维数上求和 不过,有几种方法可以解决这个问题: 计算矩阵向量与所有1的向量的乘积。因为您正在执行sum(A,2),这意味着您要对每行的所有列进行求和。您可以通过执行y=A*x来封装此行为,其中A是有问题的矩阵,x是所有1的向量y将是一个输出,您可以在其

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

我刚刚看了一下。我也看了一下。事实证明,在给定的维度上,不存在计算矩阵和的本机LAPACK函数。因此,MATLAB可能编写了一些自定义的东西,以便以这种方式在给定的矩阵维数上求和

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

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

    祝你好运