【问题标题】:Vectorizing loop in MATLABMATLAB中的向量化循环
【发布时间】:2014-07-02 23:40:12
【问题描述】:

有没有办法在 MATLAB 中对以下循环进行矢量化?

for j = 1:length(cursor_bin)
    cursor_bin(j) = mean(cursor(bin == j));
end

cursor_bincursorbin 都是向量。

【问题讨论】:

    标签: performance matlab for-loop vector vectorization


    【解决方案1】:

    bsxfun 非零 cursor 数组的方法 -

    t1 = bsxfun(@eq,bin(:),1:numel(cursor_bin))
    t2 = bsxfun(@times,t1,cursor(:))
    t2(t2==0)=NaN
    cursor_bin = nanmean(t2)
    

    【讨论】:

    • 我只是在更新我的问题... +1
    • 也许使用bin(:) 而不是bin 来确保它是一个列? cursor 也一样:cursor(:).'
    • @LuisMendo 谢谢!!差点错过了!
    • @LuisMendo 和 Divakar,感谢你们俩。我已经使用 MATLAB 很长时间了,但我才刚刚开始了解矢量化的速度有多快!
    • @vman049 祝你好运,探索更多关于bsxfunhere的信息
    【解决方案2】:

    accumarray 就是这样做的:

    cursor_bin = accumarray(bin(:), cursor(:), [], @mean);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 2013-02-18
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      相关资源
      最近更新 更多