0

コードpdist2hereである場合、次の関数があります。

function m = pixel_minimize_distance(x,y)

maximum = (sum(sum(pdist2(x,y))));
[r c] = size(y);
initialValue = y(1,1);
for i=1:r
    for j=1:c
        o = y(i,j);
        y(i,j) = 0;
        sum2 = (sum(sum(pdist2(x,y))));


        if sum2 >= maximum
            if o ~= 0
                maximum = sum2;
                m = o;
            end
        maximum = maximum;
        m = initialValue;
        end
        y(i,j)=o;
    end
    end
end

ここで、関数を実行しようとすると、以下に示すような出力が得られません。

>> A=[0 0 0; 0 0 0];
>> B=[1 1 1; 1 1 1];
>> pixel_minimize_distance(A,B)

この問題を解決するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

2

maximumMatlab関数(実際にはSimulinkの関数)であるため、変数を呼び出さないでください。

それでも、あなたはそれを知っていますか

maximum=maximum

何もしていませんか?

また、あなたはその行を知っていますか

if sum2 >= maximum

何もしていませんか?sum2更新されることはありません。同じ値で数回更新されます。あなたのコードをチェックしてください、それは今ではほとんど意味がありません。

編集:多分いくつかの異なるマトリックスで何かをするでしょう....しかしあなたが提供するものではそうではありません。

于 2013-02-11T14:01:05.290 に答える
1

ここで読んだ後、 yの (i,j) 要素を 0 に置き換えるため:

o = y(i,j); y(i,j) = 0;

テストケースではyのすべてのエントリが正であるため、条件は次のとおりです。

if sum2 >= maximum

trueと評価されることはありません。続いて、出力変数mは初期化されないため、関数は何も返しません。

関数の開始時にmを空または意味のある他のデフォルト値に初期化してみてください。

于 2013-02-11T22:16:03.153 に答える