次のことを行うはずの関数を作成しました。
- 入力として2セットを取る
- ここ
pdist2
に示されているコードを使用して、2 つのセット間の距離を取得します。 - 最初は2セット間の距離を取ります。次に、2 番目のセットでは、反復ごとに (i,j) 位置が設定され、
0
この変更で距離が計算されます。次の繰り返しに進むとき、次の位置の値を「0」に変更すると同時に、「0」に設定されていた前の値を元の値に戻す必要があります。 - からの結果はもともと行列として返されることに注意してください。ただし
pdist2
、比較のために、行列の値を合計して比較に使用します。
それに基づいて、次の関数を作成しました (ここpdist2.m
のリンクから関数を使用できることに注意してください)。
function m = pixel_minimize_distance(x,y)
sum1=0;
sum2=0;
[r c] = size(y);
d1 = pdist2(x,y);
[r1 c1] = size(d1);
for i=1:r1
for j=1:c1
sum1=sum1+d1(i,j);
end
end
maximum = sum1;
for i=1:r
for j=1:c
o = y(i,j)
y(i,j) = 0;
d2 = pdist2(x,y);
[r2 c2] = size(d2);
for i=1:r2
for j=1:c2
sum2=sum2+d2(i,j);
end
end
if sum2 >= maximum
if o ~= 0
maximum = sum2;
m = o;
end
end
if sum2 <= maximum
maximum = maximum;
end
y(i,j)=o;
end
end
end
さて、これは私がテストとして実行したものです:
>> A=[1 2 3; 6 5 4];
>> B=[4 5 3; 7 8 1];
>> pixel_minimize_distance(A,B)
o =
4
o =
4
o =
1
o =
7
o =
7
o =
0
ans =
7
ここの答えを7
見てください(見えない場合は下にスクロールしてください)が、これを手動で計算したときの期待値は、距離の合計に3
設定すると になるため、0
142
コードで何が間違っている可能性がありますか? o = y(i,j)
設定のコードの場所にあると思いますが、元の値o
を示しますが、実際にはそれを解決する方法を理解できませんでした。
ありがとう。