簡體   English   中英

如何在MATLAB中將矩陣元素除以*非零*列總和?

[英]How do I divide matrix elements by *non-zero* column sums in MATLAB?

我看到一個問題: 如何在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; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM