Почему эта функция выдает значение «Inf»? - PullRequest
0 голосов
/ 04 мая 2018

У меня есть следующая функция, которую мне нужно перевести в код MATLAB, я уверен, что функция переведена правильно. Однако у меня есть небольшая проблема с кодом.

Функция для перевода:

equation

Когда я пытаюсь запустить эту функцию, значение 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...