如何在不使用'for loops'的情况下总结矩阵相等行的权重

时间:2014-12-09 10:10:26

标签: matlab

我有一个m x n矩阵' A'使用m x 1对应于A的权重向量。我使用了'&unique;'找到独特的矩阵并找到IA和IC。如何以比使用两个for循环更快的方式总结A中相等行的权重?到目前为止,我有

[Dis_Good_path,IA,IC]=unique(Good_path,'rows','stable'); 
for i=1:length(IA) % Summing up the weights corresponding to equal paths 
   Dis_R2(i)=0;
   for j=1:length(IC) 
      if IA(i)==IC(j) 
         Dis_R2(i)= Dis_R2(i)+R2(j); 
      end 
   end 
end

1 个答案:

答案 0 :(得分:0)

少一个循环的答案看起来像这样:)

[Dis_Good_path,ia,ic]=unique(Good_path,'rows','stable');
Dis_R2 = R2(ia);
rIA = setxor(ia,1:size(Good_path,1));
rIC = ic(rIA);
for i = 1:numel(rIC)
   Dis_R2(rIC(i)) = Dis_R2(rIC(i)) + R2(rIA(i));
end