私は行列distance = [d11,d12,d13,d14;d15;...;dn1,dn2,dn3,dn4,dn5];
とベクトルindex(n,1)
を持っています。インデックスの値は1から5の間です。ループなしのMatlab演算
ベクトルR(1,5)の場合、インデックスにしたがって距離の合計を求めます。
例:場合は、実行の時間を最小限にするために、もし条件で5:
distance = [1,2,4,1,2 ; 4,5,6,1,6 ; 7,8,9,5,8] and index = [1;1;3]
だから、私が欲しいR(1) = 1+4 = 5, R(2) = 0, R(3) = 9, and R(4) = R(5) = 0
条件は1をループを使用しないことです数十億のポイントがあります。
arrayfunで可能かもしれませんが、成功しません。そうでない場合は
値が関連している場合は、1
を含むマトリックスを作成するために
bsxfun
を使用することができます
敬具
ありがとうございます。 今、私はRの各値を正規化したいと思います。 ループなしで作業するのが難しいです... – gpbdr13
'R'の長さを1にすると、' R(1)= 5/14'と 'R(3)= 9/14'で正規化しますか?あなたの例? – hbaderts
私は解を見つける: A = bsxfun(@ eq、index、1:5) R =合計(bsxfun(@eq、index、1:5)。*距離、1)./合計(A 1:5)); – gpbdr13