% idct2.m % inverse discrete cosine transform in 2d % (painfully slow) function f = idct2(F) [m,n] = size(F); f = zeros(m,n); % transform rows k=[0:n-1]*pi/n/2; w=[sqrt(0.5), ones(1,n-1)]*sqrt(2/n); for ml=1:m for nl=1:n f(ml,nl) = sum( w .* F(ml,:) .* cos(k.*(2*nl-1)) ); end end % transform columns F=f; k=[0:m-1]'*pi/m/2; w=[sqrt(0.5); ones(m-1,1)]*sqrt(2/m); for nl=1:n for ml=1:m f(ml,nl) = sum( w .* F(:,nl) .* cos(k.*(2*ml-1)) ); end end