matlab - 为什么这个函数会产生“Inf”的值?
问题描述
我有以下函数,我需要将其翻译成 MATLAB 代码,我很确定我已经正确翻译了函数。但是我对代码有一个小问题。
翻译功能:
当我尝试运行此函数时, phi 的值显示为inf
我真的不确定为什么会这样?
另外,有人能告诉我这个函数的 sum 部分是否正确吗?在我看来,这告诉我将此函数应用于每个值,然后将该值添加到 phi 中,但我不确定这是否是我实际在做的事情。
function [exists] = detectHaarWatermark(watermarkedCoefs, watermark)
coefsSize = size(watermarkedCoefs,1);
phi = 0;
numeratorTotal = 0;
denomanatorTotal = 0;
for i = 1 : coefsSize
for j = 1 : coefsSize
y = watermarkedCoefs(i,j) %Watermarked coefficient
w = watermark(i,j) %Watermark
% val = ((w * sign(y))^2) / (w^2)
numerator = (w * sign(y))
numeratorTotal = numeratorTotal + numerator;
numeratorTotal = numeratorTotal^2;
denomanator = (w^2)
denomanatorTotal = denomanatorTotal + denomanator;
val = numeratorTotal / denomanatorTotal;
phi = val;
end
end
phi
stdDev = std2(watermarkedCoefs)
if phi > (10*stdDev)
exists = true;
else
exists = false;
end
end %end function
编辑:
numerator = (sum(sum(watermark.*(sign(watermarkedCoefs)))));
numerator = power(numerator, 2);
denomanator = sum(sum(watermark.^2));
phi = numerator / denomanator
解决方案
推荐阅读
- rcpp - 将对 int-double 写入磁盘上的二进制文件的快速方法
- scala - Spark scala:根据条件将字符串附加到Dataframe的现有列
- pandas - 通过 Pandas Dataframe 中的分隔符将列拆分为未知数量的列
- javascript - 无法清除Interval(),变量显示未定义
- python - 在python中更改数组的内容
- android - 如何在登录屏幕出现时阻止用户返回,而不是终止活动(Firebase 身份验证)
- python - Pytorch“NCCL 错误”:未处理的系统错误,NCCL 版本 2.4.8”
- flutter - 检查 popUntil 是否可能/检查导航堆栈中是否命名路由
- apache-kafka - 为什么从 v0.6.0 升级到 v0.8.1 时 ksqldb-server 崩溃?
- selenium-webdriver - 如何知道量角器中哪个元素是陈旧的?