我要拍摄一张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 =