# Calculation of DST_IV using DST_II (alternative)

## Definitions

Result of transform is y=x*T, where y, x are row-vectors T is transform matrix

## DST_IV matrix definition

N=8;
DST4=sin(pi/N*[(0:N-1)+1/2]'*[(0:N-1)+1/2])

DST4 =
0.0980    0.2903    0.4714    0.6344    0.7730    0.8819    0.9569    0.9952
0.2903    0.7730    0.9952    0.8819    0.4714   -0.0980   -0.6344   -0.9569
0.4714    0.9952    0.6344   -0.2903   -0.9569   -0.7730    0.0980    0.8819
0.6344    0.8819   -0.2903   -0.9952   -0.0980    0.9569    0.4714   -0.7730
0.7730    0.4714   -0.9569   -0.0980    0.9952   -0.2903   -0.8819    0.6344
0.8819   -0.0980   -0.7730    0.9569   -0.2903   -0.6344    0.9952   -0.4714
0.9569   -0.6344    0.0980    0.4714   -0.8819    0.9952   -0.7730    0.2903
0.9952   -0.9569    0.8819   -0.7730    0.6344   -0.4714    0.2903   -0.0980


## 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

We will base our derivation on already existing alternative relations between DST_IV and DST_III transforms

where

Applying relation between DST_III and DST_II matrix

we will get

B=diag(ones(1,N))+diag(ones(1,N-1),1);
B(1,1)=2; B=B/2;
D=diag(cos(pi/2/N*([0:N-1]+1/2)));
% K=diag((-1).^(0:N-1));
J=rot90(eye(N));


## Check expression of DST_II through DST_IV

Check DSTII matrix

J*B'*J*DST4*inv(D)

ans =
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


Check computation of DSTII transform

x=randn(1,N)
y=x*DST2                 % true result
y1=x*J*B'*J*DST4*inv(D)  % compute DSTII using DSTIV transform

x =
-1.6041    0.2573   -1.0565    1.4151   -0.8051    0.5287    0.2193   -0.9219
y =
-0.6885   -0.3088   -2.5156   -0.6767   -1.6931    1.2588   -4.2247   -2.0199
y1 =
-0.6885   -0.3088   -2.5156   -0.6767   -1.6931    1.2588   -4.2247   -2.0199


## Check expression of DST_IV through DST_II

J*inv(B')*J*DST2*D

ans =
0.0980    0.2903    0.4714    0.6344    0.7730    0.8819    0.9569    0.9952
0.2903    0.7730    0.9952    0.8819    0.4714   -0.0980   -0.6344   -0.9569
0.4714    0.9952    0.6344   -0.2903   -0.9569   -0.7730    0.0980    0.8819
0.6344    0.8819   -0.2903   -0.9952   -0.0980    0.9569    0.4714   -0.7730
0.7730    0.4714   -0.9569   -0.0980    0.9952   -0.2903   -0.8819    0.6344
0.8819   -0.0980   -0.7730    0.9569   -0.2903   -0.6344    0.9952   -0.4714
0.9569   -0.6344    0.0980    0.4714   -0.8819    0.9952   -0.7730    0.2903
0.9952   -0.9569    0.8819   -0.7730    0.6344   -0.4714    0.2903   -0.0980


Check computation of DSTIV transform

y=x*DST4                 % true result
y1=x*J*inv(B')*J*DST2*D  % compute DSTIV using DSTII transform

y =
-0.5464    0.2416   -2.0110   -0.4914   -1.9794    1.2821   -0.3356   -4.4742
y1 =
-0.5464    0.2416   -2.0110   -0.4914   -1.9794    1.2821   -0.3356   -4.4742


## 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.