У меня есть следующая функция, которую мне нужно перевести в код MATLAB, я уверен, что функция переведена правильно. Однако у меня есть небольшая проблема с кодом.
Функция для перевода:
![equation](https://i.imgur.com/34EUzei.png)
Когда я пытаюсь запустить эту функцию, значение phi выглядит как inf
Я действительно не уверен, почему это происходит?
Кроме того, кто-то может сказать мне, правильно ли я поступаю с частью суммы этой функции? По-моему, это говорит мне о том, чтобы применить эту функцию к каждому значению, а затем взять это значение и добавить его к фи, но я не уверен, что именно это я и делаю.
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
Edit:
numerator = (sum(sum(watermark.*(sign(watermarkedCoefs)))));
numerator = power(numerator, 2);
denomanator = sum(sum(watermark.^2));
phi = numerator / denomanator