I was writing MATLAB code to compute 1D DCT of sample y.
On computing DCT for y=[0,1,2]
, code generates coefficient [3.0000 -2.2304 0 -0.1585]
which was consistent to coefficient generated by Matlab default dct([0,1,2])
.
When sample y=[1,2,3]
was chosen the same code didn't work well.
Looking forward to modification and clarification in my custom DCT code.
Eq DCT:
$$C(u) = \alpha(u)\sum_{x=0}^{N-1}f(x)\cos\left[\dfrac{\pi(2x+1)u}{2N} \right] \qquad\text{for}\qquad u=0,1,2,\ldots,N-1$$
Custom code
y=[0,1,2];
[M,N]=size(y);
sum=0;
dct1d=zeros(1,N);
u=[0:N-1] ;
for j=1:N
for i=1:N
sum=sum+y(i).*(cos((pi.*(2.*y(i)+1).*u(j))/(2*N)));
end
if j==1
K=sqrt(1/N);
else
K=sqrt(2/N);
end
dct1d(j)=K.*sum;
sum=0;
end
dct1d