我有这个矩阵
K=
0 0 1
0 2 1
0 1 1
L=
1
3
2
其中L
是K
我需要通过将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
的每一行除以自己的总和?
答案 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