-4

matlabこの .matファイルがあります。セルの中を見て vlues のセルをダブルクリックすると1.000、表示される値が であることがわかります0.999999999259113 。それはいいです。しかし、たとえば次のコマンドを使用すると:

>> sel = find (u2 == 0.999999999259113 );

私が得る答えは次のとおりです。

>> sel

sel =

     5

私たちは複数の0.999999999259113価値を持っています。そうじゃない?彼らはどこにいる?あるべきものは何5ですか?

さて、.matファイルがこの画像に関連しているため、次の関数に到達すると:

function s = pixel(x, y)
        pixels = [];
        index = 1;
        for i=1:length(y)
                for j=1:length(y)
                    if y(i,j) == 0.999999999259113;
                        pixels(index) = x(i,j);
                        index = index+1;
                    end
                end
            end
            pixels
        end

関数を実行すると、次のようになります (I: 画像、u2: .mat ファイル)。

ピクセル (私は、u2);

ピクセル =

 []

空の?!これはどういう意味ですか?

コマンドは論理的に機能しているように見えますが、期待した結果が得られない理由はありますか?

ありがとう。

4

2 に答える 2

3

正確な浮動小数点数の等価性をチェックする代わりに、許容範囲を設定できますか? 次のように 1.0 に近い値を見つけます。

tolerance = 0.01;
sel = find(abs(u2 - 1.0) < tolerance);
于 2013-02-20T15:27:42.457 に答える
1

使ってみて

if abs(y(i,j)-)<1e-6

それ以外の

if y(i,j) == 0.999999999259113;
于 2013-02-20T15:28:12.680 に答える