【问题标题】:Why is sum(X, 1) the sum of the columns in MATLAB?为什么 sum(X, 1) 是 MATLAB 中列的总和?
【发布时间】:2011-02-08 17:24:30
【问题描述】:
>> X = [0 1 2
        3 4 5]

>> sum(X, 1)

ans =

     3     5     7

sum(X, 1) 应该按照文档中的说明在1st 维度(row) 上求和:

S = SUM(X,DIM) 沿 尺寸 DIM。

但为什么它实际上是沿2nd 维度()求和?

【问题讨论】:

    标签: matlab dimensions


    【解决方案1】:

    http://www.mathworks.com/access/helpdesk/help/techdoc/ref/sum.html

    B = sum(A,dim) 沿 由标量指定的 A 的维度 暗淡。暗淡输入是一个整数值 从 1 到 N,其中 N 是 A 中的尺寸。将 dim 设置为 1 以 计算每列的总和,2 到 总和行等。

    你的猜测和我的一样好。

    【讨论】:

    • 但是第一维是行,第二列,为什么sum不是这样?
    • 因此我的“你的猜测和我的猜测一样好”——没有真正的逻辑原因,所以它可能只是一些随机的 MATLAB 开发人员深夜编码会话的结果。 ;)
    【解决方案2】:

    1 表示列, 根据http://www.mathworks.com/access/helpdesk/help/techdoc/ref/sum.html

    B = sum(A,dim) 沿 由标量指定的 A 的维度 暗淡。 dim 输入是一个从 1 到 N 的整数值,其中 N 是 A中的尺寸。 将 dim 设置为 1 以计算每列的总和,将 2 设置为对行求和,等等。

    【讨论】:

    • 为什么和其他上下文矛盾?
    • 它实际上可能是在指示发生主要迭代的轴。 (有时这些东西很难用低维的例子来理解。)
    【解决方案3】:

    我认为这方面的 Matlab 文档非常清楚。它指出:

    B = sum(A,dim) 沿标量 dim 指定的 A 维度求和。 dim 输入是一个从 1 到 N 的整数值,其中 N 是 A 中的维数。将 dim 设置为 1 可计算每列的总和,2 可计算行的总和,等等。

    欢迎您认为 Matlab 是错误的,但它不会改变!

    【讨论】:

    • 离线版只提到:S = SUM(X,DIM) sums along the dimension DIM. 仅此而已!
    【解决方案4】:

    在我看来,它与其他一切都完全一致。

    sum(A,dim) 求和沿维度暗淡的方向

    行被“向下”计数,所以sum(A,1) 总和为“向下”。列数“向右”,因此sum(A,2) 和“向右”相加。

    另一种看法是sum(A,dim) 通过求和将维度dim 折叠为1。因此,沿维度 1 求和的 4x3 数组会折叠第一个维度,从而生成 1x3 数组。

    【讨论】:

    • 我还使用“dim is the dimension to squash”方法将其直接记在脑海中。还要考虑 3 维或更多维的数组;对我来说,当您摆脱 2D 外壳时,更容易理解为什么会这样。
    • +1 不仅仅是复制粘贴文档(Gtker 已经阅读但不理解),而是解释如何解释它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多