按行自己的总和划分矩阵

时间:2017-05-23 06:31:24

标签: matlab matrix row

我有这个矩阵

K=
0 0 1
0 2 1
0 1 1

L= 
1
3
2

其中LK

的每一行的总和

我需要通过将K的每一行除以其总和来创建一个新矩阵,例如从第二行[0 2 1]开始,我应得到的输出是[0 2/3 1/3]或{{1 }}:

[0 0.67 0.33]

我尝试使用此代码,但只获得零:

Output=
0   0     1
0   0.67  0,33
0   0.5   0.5 

如何将for i=1:3; j=1:3; if K(i,j)>0 K(i,j)=(K(i,j))/L(i) else K(i,j)=0 end end 的每一行除以自己的总和?

4 个答案:

答案 0 :(得分:0)

K=[0 0 1
0 2 1
0 1 1 ];
L = sum(K,2) ;
iwant = bsxfun(@rdivide,K,L)  ;

答案 1 :(得分:0)

K=[0 0 1; 0 2 1; 0 1 1]; % your matrix
rowSum = sum(K, 2); % compute the sum
K_norm = K./repmat(rowSum, 1, size(K, 2));

repmat此处构建一个与K具有相同维度的矩阵,但每列都是K行的总和。

答案 2 :(得分:0)

你可以用两行写出来;首先计算总和,然后使用repmat制作与K大小相同的矩阵并按元素划分

L = sum(K,2);
iwant = K./repmat(L,1,size(K,2));

答案 3 :(得分:-1)

K=[0 0 1
0 2 1
0 1 1 ];
L = sum(K,2) ;
iwant = zeros(size(K)) ;
for i = 1:size(K,1)
    iwant(i,:) = K(i,:)/L(i) ;
end