如何在MATLAB中按列总和划分矩阵元素?

dan*_*tel 20 matlab matrix column-sum

有没有一种简单的方法可以将每个矩阵元素除以列总和?例如:

input:

1  4

4  10

output:

1/5  4/14

4/5  10/14
Run Code Online (Sandbox Code Playgroud)

gno*_*ice 42

以下列出了执行此操作的不同方法......

更新:

从MATLAB R2016b及更高版本开始,大多数内置二进制函数(可在此处找到列表)支持隐式扩展,这意味着它们具有bsxfun默认行为.因此,在最新的MATLAB版本中,您所要做的就是:

B = A./sum(A);
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢你的帮助.我很好奇哪种方法最快.相对执行时间(应用于随机矩阵3000x3000;实验重复20次;持续时间总和)最快bsxfun(1.00),循环(1.09),1(1.99),repmat(2.06).我将使用循环方法:-). (3认同)
  • 为了完整性,你不能抛出循环吗?:) (2认同)
  • 你可以将它添加到列表中:`B = A ./(其中(大小(A,1),1)*sum(A,1))`.我认为它比*repmat*更快但比*bsxfun更慢* (2认同)