倍频程归零
Octave division returning zero
我正在编写一个简单的 Octave 程序来计算两个图像之间的相似度。
这个问题的相关部分可以在这里找到:
函数 struct_comp 应该 return 0 到 1 之间的某个数字。但是命令
ec = (corr + C) / (dp1 * dp2 + C);
将 ec 设置为 0,即使它不应该为零。
disp 命令显示了该除法中涉及的所有变量的值。输出为:
C:
6.5536
dp1
97.663
dp2
47.686
corr
-290
(corr + C)
-283
(dp1 * dp2 + C)
4663.7
(corr + C) / (dp1 * dp2 + C)
0
Struct comp:
0
如您所见,部分值(分子和分母)是正确的,但除法return为零。
有人知道这里发生了什么吗?
谢谢。
编辑:
用于生成此输出的两个图像是:
http://lasca.ic.unicamp.br/~hilder/tux.jpg
http://lasca.ic.unicamp.br/~hilder/monalisa.jpg
但是你可以使用任何灰度图来测试,只需要在代码中更改名称即可。
我替换了行
ec = (corr + C) / (dp1 * dp2 + C);
来自
ec = double(corr + C) / double(dp1 * dp2 + C);
成功了。
我正在编写一个简单的 Octave 程序来计算两个图像之间的相似度。
这个问题的相关部分可以在这里找到:
函数 struct_comp 应该 return 0 到 1 之间的某个数字。但是命令
ec = (corr + C) / (dp1 * dp2 + C);
将 ec 设置为 0,即使它不应该为零。
disp 命令显示了该除法中涉及的所有变量的值。输出为:
C:
6.5536
dp1
97.663
dp2
47.686
corr
-290
(corr + C)
-283
(dp1 * dp2 + C)
4663.7
(corr + C) / (dp1 * dp2 + C)
0
Struct comp:
0
如您所见,部分值(分子和分母)是正确的,但除法return为零。
有人知道这里发生了什么吗?
谢谢。
编辑:
用于生成此输出的两个图像是:
http://lasca.ic.unicamp.br/~hilder/tux.jpg
http://lasca.ic.unicamp.br/~hilder/monalisa.jpg
但是你可以使用任何灰度图来测试,只需要在代码中更改名称即可。
我替换了行
ec = (corr + C) / (dp1 * dp2 + C);
来自
ec = double(corr + C) / double(dp1 * dp2 + C);
成功了。