【问题标题】:Octave division returning zero八度除法归零
【发布时间】:2015-03-18 17:40:42
【问题描述】:

我正在编写一个简单的 octave 程序来计算两个图像之间的相似度。

这个问题的相关部分可以在这里找到:

http://pastebin.com/gBxN7VbP

struct_comp 函数应该返回介于 0 和 1 之间的某个数字。但是命令

ec = (corr + C) / (dp1 * dp2 + C);

将 ec 设置为 0,即使它不应该为零。

disp 命令显示该除法中涉及的所有变量的值。输出是:

C:

6.5536

dp1

97.663

dp2

47.686

修正

-290

(corr + C)

-283

(dp1 * dp2 + C)

4663.7

(corr + C) / (dp1 * dp2 + C)

0

结构组合:

0

如您所见,部分值(分子和分母)是正确的,但除法返回零。

有人知道这里发生了什么吗?

谢谢。

编辑:

用于生成此输出的两个图像是:

http://lasca.ic.unicamp.br/~hilder/tux.jpg

http://lasca.ic.unicamp.br/~hilder/monalisa.jpg

但是你可以用任何灰度图来测试,只要在代码里改个名字就行了。

【问题讨论】:

  • 没有 tux.jpg 和 monalisa.jpg 你的代码在这里不起作用。显示相同问题的较小代码会更好...一些提示:在“struct_comp”函数的末尾插入keyboard。这对于调试目的非常方便。并避免global。
  • 我编辑了问题并添加了我使用的两张图片。我不知道这个keyboard 函数。我会搜索有关它的更多信息。

标签: octave division


【解决方案1】:

我换了行

ec = (corr + C) / (dp1 * dp2 + C);

通过

ec = double(corr + C) / double(dp1 * dp2 + C);

它成功了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 2020-10-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多