【问题标题】:How do I divide matrix elements by *non-zero* column sums in MATLAB?如何在 MATLAB 中将矩阵元素除以*非零*列和?
【发布时间】:2016-11-01 17:25:30
【问题描述】:

我看到这个问题:How do I divide matrix elements by column sums in MATLAB?

但另外,我只想在列总和 (sum(A)) 不为零时进行除法。
那里列出的任何方法都可以工作,除了循环方法,因为它对于我的矩阵大小来说非常慢?

【问题讨论】:

    标签: matlab matrix column-sum


    【解决方案1】:

    您只需要通过中间步骤从sum(A) 中删除零元素:

    col_sum = sum(A);
    col_sum( col_sum == 0 ) = 1; % no zeros
    

    现在您可以使用the linked post 中的任何方法,例如使用bsxfun:

    B = bsxfun(@rdivide, A, col_sum);    
    

    从数值的角度来看,当A 是浮点类型时,仅删除完全为零的元素并不是一个很好的做法。相反,您可能希望消除所有 接近零 元素:

    col_sum( abs(col_sum) < 1e-10 ) = 1; 
    

    【讨论】:

      猜你喜欢
      • 2010-12-18
      • 1970-01-01
      • 2014-04-30
      • 2016-08-08
      • 1970-01-01
      • 2016-05-26
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多