Я беру кусок 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 =