如何用行的总和来划分矩阵元素

时间:2011-04-03 06:18:03

标签: matlab

我想将矩阵的每个元素除以元素所属的行的总和。例如:

[1 2      [1/3 2/3 
 3 4] ==>  3/7 4/7]

我该怎么办?谢谢。

2 个答案:

答案 0 :(得分:8)

  

A = [1 2; 3 4]

     

DIAG(1./sum(A,2))* A

答案 1 :(得分:2)

我建议使用bsxfun。应该更快,更有效地记忆:

bsxfun(@rdivide, A, sum(A,2))

请注意,vecor方向很重要。列将划分矩阵的每一行,行向量将划分每列。

这是一个小时间比较:

A = rand(100);

tic
for i = 1:1000    
   diag(1./sum(A,2))*A;
end
toc

tic
for i = 1:1000    
   bsxfun(@rdivide, A, sum(A,2));
end
toc

结果:

Elapsed time is 0.116672 seconds.
Elapsed time is 0.052448 seconds.