Функция DCT, которую я написал в Octave, иногда возвращает неопределенные значения - PullRequest
0 голосов
/ 15 июня 2019

Я беру кусок 8x8 полученного изображения в градациях серого, и мне нужно использовать matlab или октаву, чтобы применить к нему 2D-DCT.Я написал простую функцию 1D-DCT, которую я планирую просто дважды применить, чтобы получить ответ, но когда я пытаюсь запустить функцию, я получаю неопределенные значения.

Я попытался сбросить переменные и просмотрел коди в главе моего учебника, посвященной DCT, но я не могу понять, что я делаю неправильно.

function C=dct(xb, n)
   for i=1:n
      for j=1:n
        xb(i,j)=cos((i-1)*(2*j-1)*pi/(2*n));
      endfor
   endfor
 xb=sqrt(2/n)*xb;
 xb(1,:)=xb(1,:)/sqrt(2);
endfunction

Я ожидал получить массив DCT вектора 8x8 для вектора, который я подал,но вместо этого я получил предупреждение

xb = dct (xb, 8): dct: некоторые элементы в списке возвращаемых значений имеют неопределенное предупреждение: вызывается из dct в строке 9 столбца 9 xb =

...