【问题标题】:Vectorize column wise operation in octave or matlab在 octave 或 matlab 中矢量化列操作
【发布时间】:2014-07-08 00:26:11
【问题描述】:

如何矢量化以下代码?它基本上是计算每一列的平均值。

mu(1) = sum(X(:,1))/C
mu(2) = sum(X(:,2))/C

还有这个(标准化每个元素,每列有不同的平均值和标准):(X 是 47x2.mu,sigma 都是 1x2)

X_norm(:,1) = (X(:,1)-mu(1))/sigma(1)
X_norm(:,2) = (X(:,2)-mu(2))/sigma(2)

【问题讨论】:

    标签: matlab octave vectorization


    【解决方案1】:

    很简单:

    mu = sum(X) ./ C
    

    sum 默认沿第一个维度(在列上)运行。


    编辑:

    对于问题的第二部分:

    X_norm = bsxfun(@rdivide, bsxfun(@minus, X, mu), sigma)
    

    这类似于 repmat 的操作,但没有内存开销。

    【讨论】:

    • 是的。该解决方案有效。我还有一个简单的问题。它类似于这个,所以我不想创建重复的线程。我放入了新的编辑。之后我会接受你的回答。非常感谢您的帮助!
    【解决方案2】:

    你甚至可以使用mu = mean(X)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 2011-07-08
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多