Получение ошибки при использовании abs (), связанной с индексами - PullRequest
0 голосов
/ 23 мая 2019

У меня есть следующее для цикла:

for i = 1:3000
    disp(DCT(key(i, 1), key(i, 2)));

    %Apply formula to HL3 in key location i
    x = sign(DCT(key(i, 1), key(i, 2)));
    y = abs(DCT(key(i, 1), key(i, 2)))^(C-1);
    z = w(1, i);

    %Add result to phi
    phi = phi + (x*y*z);

end

Я получаю сообщение об ошибке:

y = abs(DCT(key(i, 1), key(i, 2)))^(C-1);

Говоря:

    Array indices must be positive integers or logical values.

Error in CosineWatermarkDetector (line 25)
    y = abs(DCT(key(i, 1), key(i, 2)))^(C-1);

Тем не менее следующееКод возвращает значение -48.6990:

disp(DCT(key(i, 1), key(i, 2)));

Кто-нибудь может понять, почему?

РЕДАКТИРОВАТЬ: Вот весь код

load Key.mat
load watermark.mat

%Select image
[filename, pathname] = uigetfile({'*.tif;*.ppm;*.bmp','Picture files (*.tif,*.ppm,*.bmp)'}, 'Pick a image');
path=[pathname,filename];

%Load image from selected path
image = imread(path);

%DWT image
DCT = dct2(image);
figure; imshow(DCT);

%Set value of C
C = 1.7;

%Set values of phi to 0
phi = 0;

for i = 1:3000

    %Apply formula to HL3 in key location i
    x = sign(DCT(key(i, 1), key(i, 2)));
    y = abs(DCT(key(i, 1), key(i, 2)))^(C-1);
    z = w(1, i);

    %Add result to phi
    phi = phi + (x*z);

end
disp(phi);
%If all values of phi are greater than 0 then watermark exists
if (phi > 0)
   disp('Watermark detected');
else
    disp('No watermark detected');
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...