-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 回答