Relations between DCT_I and DST_II
Contents
Definitions
Result of transform is y=x*T, where y, x are row-vectors T is transform matrix
DCT_I matrix definition
N=8; DCT1=cos(pi/N*(0:N)'*(0:N))
DCT1 =
Columns 1 through 8
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 0.9239 0.7071 0.3827 0.0000 -0.3827 -0.7071 -0.9239
1.0000 0.7071 0.0000 -0.7071 -1.0000 -0.7071 -0.0000 0.7071
1.0000 0.3827 -0.7071 -0.9239 -0.0000 0.9239 0.7071 -0.3827
1.0000 0.0000 -1.0000 -0.0000 1.0000 0.0000 -1.0000 -0.0000
1.0000 -0.3827 -0.7071 0.9239 0.0000 -0.9239 0.7071 0.3827
1.0000 -0.7071 -0.0000 0.7071 -1.0000 0.7071 0.0000 -0.7071
1.0000 -0.9239 0.7071 -0.3827 -0.0000 0.3827 -0.7071 0.9239
1.0000 -1.0000 1.0000 -1.0000 1.0000 -1.0000 1.0000 -1.0000
Column 9
1.0000
-1.0000
1.0000
-1.0000
1.0000
-1.0000
1.0000
-1.0000
1.0000
DST_II matrix definition
DST2=sin(pi/N*((0:N-1)+1)'*((0:N-1)+1/2))
DST2 =
0.1951 0.5556 0.8315 0.9808 0.9808 0.8315 0.5556 0.1951
0.3827 0.9239 0.9239 0.3827 -0.3827 -0.9239 -0.9239 -0.3827
0.5556 0.9808 0.1951 -0.8315 -0.8315 0.1951 0.9808 0.5556
0.7071 0.7071 -0.7071 -0.7071 0.7071 0.7071 -0.7071 -0.7071
0.8315 0.1951 -0.9808 0.5556 0.5556 -0.9808 0.1951 0.8315
0.9239 -0.3827 -0.3827 0.9239 -0.9239 0.3827 0.3827 -0.9239
0.9808 -0.8315 0.5556 -0.1951 -0.1951 0.5556 -0.8315 0.9808
1.0000 -1.0000 1.0000 -1.0000 1.0000 -1.0000 1.0000 -1.0000
Finding relations
From [1] we know that DCTI matrix can be expressed in terms of Tschebyshev polynomials
where
are roots of polynomial
DSTII matrix can be analogously expressed as
where
are roots of polynomial
Because there exist relation
and
we can express DCTI through DSTII
where
B=diag(-ones(1,N+1))+diag(ones(1,N),-1); B(1,:)=2; B(2,1)=2; B(end,end)=-2; B=B/2; D=diag([1, sin(pi/2/N*((0:N-1)+1))]);
Check expression of DCT_I through DST_II
Check DCTII matrix
DST2a=eye(N+1);DST2a(2:end,2:end)=DST2; inv(D)*DST2a*B x=randn(1,N+1) y=x*DCT1 % true result y1=x*inv(D)*DST2a*B % compute DCTI using DSTII transform
ans =
Columns 1 through 8
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 0.9239 0.7071 0.3827 0 -0.3827 -0.7071 -0.9239
1.0000 0.7071 0 -0.7071 -1.0000 -0.7071 -0.0000 0.7071
1.0000 0.3827 -0.7071 -0.9239 -0.0000 0.9239 0.7071 -0.3827
1.0000 0.0000 -1.0000 -0.0000 1.0000 0.0000 -1.0000 -0.0000
1.0000 -0.3827 -0.7071 0.9239 0.0000 -0.9239 0.7071 0.3827
1.0000 -0.7071 -0.0000 0.7071 -1.0000 0.7071 0.0000 -0.7071
1.0000 -0.9239 0.7071 -0.3827 -0.0000 0.3827 -0.7071 0.9239
1.0000 -1.0000 1.0000 -1.0000 1.0000 -1.0000 1.0000 -1.0000
Column 9
1.0000
-1.0000
1.0000
-1.0000
1.0000
-1.0000
1.0000
-1.0000
1.0000
x =
Columns 1 through 8
-0.1821 1.5210 -0.0384 1.2274 -0.6962 0.0075 -0.7829 0.5869
Column 9
-0.2512
y =
Columns 1 through 8
1.3921 1.9254 0.8802 -1.2269 -0.3082 0.3123 -0.3544 -0.7343
Column 9
-5.2938
y1 =
Columns 1 through 8
1.3921 1.9254 0.8802 -1.2269 -0.3082 0.3123 -0.3544 -0.7343
Column 9
-5.2938
Check expression of DST_II through DCT_I
Check computation of DSTII matrix
D*DCT1*inv(B)
ans =
Columns 1 through 8
1.0000 0 0 0.0000 -0.0000 0 0 0
0 0.1951 0.5556 0.8315 0.9808 0.9808 0.8315 0.5556
-0.0000 0.3827 0.9239 0.9239 0.3827 -0.3827 -0.9239 -0.9239
-0.0000 0.5556 0.9808 0.1951 -0.8315 -0.8315 0.1951 0.9808
-0.0000 0.7071 0.7071 -0.7071 -0.7071 0.7071 0.7071 -0.7071
-0.0000 0.8315 0.1951 -0.9808 0.5556 0.5556 -0.9808 0.1951
-0.0000 0.9239 -0.3827 -0.3827 0.9239 -0.9239 0.3827 0.3827
0.0000 0.9808 -0.8315 0.5556 -0.1951 -0.1951 0.5556 -0.8315
0 1.0000 -1.0000 1.0000 -1.0000 1.0000 -1.0000 1.0000
Column 9
0
0.1951
-0.3827
0.5556
-0.7071
0.8315
-0.9239
0.9808
-1.0000
Check computation of DSTII transform
x=randn(1,N) y=x*DST2 % true result y1=[0 x]*D*DCT1*inv(B) % compute DSTII using DCTI transform
x =
0.4801 0.6682 -0.0783 0.8892 2.3093 0.5246 -0.0118 0.9131
y =
4.2410 0.7824 -1.1866 1.0198 2.6228 -2.5885 0.5181 -0.3236
y1 =
Columns 1 through 8
-0.0000 4.2410 0.7824 -1.1866 1.0198 2.6228 -2.5885 0.5181
Column 9
-0.3236
Reference
[1] Markus Pueschel, Jose M.F. Moura. The Algebraic Approach to the Discrete Cosine and Sine Transforms and their Fast Algorithms SIAM Journal of Computing 2003, Vol. 32, No. 5, pp. 1280-1316.