我看到了这个问题:如何在 MATLAB 中将矩阵元素除以列和?
但另外,我只想在列总和 ( sum(A)
) 非零时进行除法。
那里列出的任何方法都可以工作,除了循环方法,因为它对我的矩阵大小来说非常慢?
我看到了这个问题:如何在 MATLAB 中将矩阵元素除以列和?
但另外,我只想在列总和 ( sum(A)
) 非零时进行除法。
那里列出的任何方法都可以工作,除了循环方法,因为它对我的矩阵大小来说非常慢?
您只需要sum(A)
通过中间步骤删除零元素:
col_sum = sum(A);
col_sum( col_sum == 0 ) = 1; % no zeros
现在您可以在链接的帖子中使用任何方法,例如使用bsxfun
:
B = bsxfun(@rdivide, A, col_sum);
从数值的角度来看,仅消除浮点类型时恰好为零的元素并不是一个很好的做法。A
相反,您可能希望消除所有接近零的元素:
col_sum( abs(col_sum) < 1e-10 ) = 1;