Relations between DCTVII and DSTVIII

Contents

Definitions

Transform matrix is defined for operating on column-vectors y=T*x, where y, x are column-vectors, T is transform matrix

DCTVII matrix definition

$${\mathbf{DCTVII}}\mathrm{{=}}{\mathrm{\left\{{\cos\left({\frac{\mathrm{\pi}}{{n}{-}\frac{1}{2}}\left({{k}{+}\frac{1}{2}}\right){l}}\right)}\right\}}}_{k\mathrm{,}l}$$

N1=8; N=N1;
k=0:N1-1;  l=0:N1-1;
DCT7=cos(pi/(N-1/2)*(k+1/2)'*l)       % display DCTV matrix
DCT7 =
  Columns 1 through 7
    1.0000    0.9781    0.9135    0.8090    0.6691    0.5000    0.3090
    1.0000    0.8090    0.3090   -0.3090   -0.8090   -1.0000   -0.8090
    1.0000    0.5000   -0.5000   -1.0000   -0.5000    0.5000    1.0000
    1.0000    0.1045   -0.9781   -0.3090    0.9135    0.5000   -0.8090
    1.0000   -0.3090   -0.8090    0.8090    0.3090   -1.0000    0.3090
    1.0000   -0.6691   -0.1045    0.8090   -0.9781    0.5000    0.3090
    1.0000   -0.9135    0.6691   -0.3090   -0.1045    0.5000   -0.8090
    1.0000   -1.0000    1.0000   -1.0000    1.0000   -1.0000    1.0000
  Column 8
    0.1045
   -0.3090
    0.5000
   -0.6691
    0.8090
   -0.9135
    0.9781
   -1.0000

DCTVII in terms of Tschebyshev polynomials

The DCTVII matrix can be expressed in terms of Tschebyshev polynomials [1]

$${\mathbf {DCTVII}} = \left[ {T_l \left( {\alpha _k } \right)} \right]_{k,l} $$

where

$${\mathrm{\alpha}}_{k}\mathrm{{=}}\cos\left({\frac{\left({{k}\mathrm{{+}}\frac{1}{2}}\right)\mathit{\pi}}{{N}\mathrm{{-}}\frac{1}{2}}}\right){\mathrm{,}}{k}\mathrm{{=}}{0}\mathrm{\ldots}{N}\mathrm{{-}}{1}$$

are roots of polynomial

$${U}_{DCTVII}\mathrm{{=}}\mathrm{\left({{x}{+}{1}}\right)}{V}_{{n}\mathrm{{-}}{1}}$$

alpha=sort([roots(TschebyshevV(N-1)); -1],'descend');
DCT7t=zeros(N1);
for l=0:N1-1,
    DCT7t(:,l+1)=polyval(TschebyshevT(l),alpha)';
end
Da7=diag(cos(0*pi/(N-1/2)*(k+1/2)));
DCT7t=Da7*DCT7t                    % display DCTV matrix

% compare DCT7 and DCT7t matrices (show that both definitions above are equivalent)
max(max(abs(DCT7-DCT7t)))
DCT7t =
  Columns 1 through 7
    1.0000    0.9781    0.9135    0.8090    0.6691    0.5000    0.3090
    1.0000    0.8090    0.3090   -0.3090   -0.8090   -1.0000   -0.8090
    1.0000    0.5000   -0.5000   -1.0000   -0.5000    0.5000    1.0000
    1.0000    0.1045   -0.9781   -0.3090    0.9135    0.5000   -0.8090
    1.0000   -0.3090   -0.8090    0.8090    0.3090   -1.0000    0.3090
    1.0000   -0.6691   -0.1045    0.8090   -0.9781    0.5000    0.3090
    1.0000   -0.9135    0.6691   -0.3090   -0.1045    0.5000   -0.8090
    1.0000   -1.0000    1.0000   -1.0000    1.0000   -1.0000    1.0000
  Column 8
    0.1045
   -0.3090
    0.5000
   -0.6691
    0.8090
   -0.9135
    0.9781
   -1.0000
ans =
   7.0999e-14

DSTVIII matrix definition

$${\mathbf{DSTVII}}{\mathbf{I}}\mathrm{{=}}{\left\{{\sin\left({\frac{\mathit{\pi}}{{n}\mathrm{{-}}\frac{1}{2}}\left({{k}\mathrm{{+}}\frac{1}{2}}\right)\left({{l}\mathrm{{+}}\frac{1}{2}}\right)}\right)}\right\}}_{k\mathrm{,}l}$$

N2=8; N=N2;
k=0:N2-1;  l=0:N2-1;
DST8=sin(pi/(N-1/2)*(k+1/2)'*(l+1/2))       % display DCTV matrix
DST8 =
  Columns 1 through 7
    0.1045    0.3090    0.5000    0.6691    0.8090    0.9135    0.9781
    0.3090    0.8090    1.0000    0.8090    0.3090   -0.3090   -0.8090
    0.5000    1.0000    0.5000   -0.5000   -1.0000   -0.5000    0.5000
    0.6691    0.8090   -0.5000   -0.9135    0.3090    0.9781   -0.1045
    0.8090    0.3090   -1.0000    0.3090    0.8090   -0.8090   -0.3090
    0.9135   -0.3090   -0.5000    0.9781   -0.8090    0.1045    0.6691
    0.9781   -0.8090    0.5000   -0.1045   -0.3090    0.6691   -0.9135
    1.0000   -1.0000    1.0000   -1.0000    1.0000   -1.0000    1.0000
  Column 8
    1.0000
   -1.0000
    1.0000
   -1.0000
    1.0000
   -1.0000
    1.0000
   -1.0000

DSTVIII in terms of Tschebyshev polynomials

The DSTVIII matrix can be expressed in terms of Tschebyshev polynomials [1]

$${\mathbf{DSTVIII}}\mathrm{{=}}{\mathbf{D}}_{DSTVIII}\mathrm{\cdot}{\mathrm{\left[{{W}_{l}\left({{\mathrm{\beta}}_{k}}\right)}\right]}}_{k\mathrm{,}l}$$

where

$${\mathrm{\beta}}_{k}\mathrm{{=}}\cos\left({\frac{\left({{k}\mathrm{{+}}\frac{1}{2}}\right)\mathit{\pi}}{{N}\mathrm{{-}}\frac{1}{2}}}\right){\mathrm{,}}{k}\mathrm{{=}}{0}\mathrm{\ldots}{N}\mathrm{{-}}{1}$$

are roots of polynomial

$${U}_{DSTVIII}\mathrm{{=}}\mathrm{\left({{x}{+}{1}}\right)}{V}_{{n}\mathrm{{-}}{1}}$$

$${\mathbf{D}}_{DSTVIII}\mathrm{{=}}{diag}{\mathrm{\left\{{\sin\left({\left({{k}{+}\frac{1}{2}}\right)\frac{\mathrm{\pi}}{\left({{N}{-}\frac{1}{2}}\right)}}\right)}\right\}}}_{k}$$

beta=sort([roots(TschebyshevV(N-1)); -1],'descend');
DST8t=zeros(N);
for l=0:N2-1,
    DST8t(:,l+1)=polyval(TschebyshevW(l),beta)';
end
Db8=diag(sin(1/2*pi/(N-1/2)*(k+1/2)));
DST8t=Db8*DST8t                    % display DCTV matrix

% compare DST8 and DST8t matrices (show that both definitions above are equivalent)
max(max(abs(DST8-DST8t)))
DST8t =
  Columns 1 through 7
    0.1045    0.3090    0.5000    0.6691    0.8090    0.9135    0.9781
    0.3090    0.8090    1.0000    0.8090    0.3090   -0.3090   -0.8090
    0.5000    1.0000    0.5000   -0.5000   -1.0000   -0.5000    0.5000
    0.6691    0.8090   -0.5000   -0.9135    0.3090    0.9781   -0.1045
    0.8090    0.3090   -1.0000    0.3090    0.8090   -0.8090   -0.3090
    0.9135   -0.3090   -0.5000    0.9781   -0.8090    0.1045    0.6691
    0.9781   -0.8090    0.5000   -0.1045   -0.3090    0.6691   -0.9135
    1.0000   -1.0000    1.0000   -1.0000    1.0000   -1.0000    1.0000
  Column 8
    1.0000
   -1.0000
    1.0000
   -1.0000
    1.0000
   -1.0000
    1.0000
   -1.0000
ans =
   5.1736e-14

Finding relations

Because there exist relation

$$ T_l  = \frac{{W_l  - W_{l - 1} }}{2} $$

and

$$\begin{array}{l}
{{\mathrm{\alpha}}_{k}\mathrm{{=}}{\mathrm{\beta}}_{k}{\mathrm{,}}{k}\mathrm{{=}}{0}\mathrm{\ldots}{N}\mathrm{{-}}{1}}\\
{{\mathrm{\alpha}}_{N}\mathrm{{=}}\mathrm{{-}}{1}}
\end{array}$$

we can express DCTVII through DSTVIII

$$\begin{array}{l}
{{\mathbf{DCTVII}}\mathrm{{=}}{\mathrm{\left[{{T}_{l}\left({{\mathrm{\alpha}}_{k}}\right)}\right]}}_{k\mathrm{,}l}\mathrm{{=}}{\mathrm{\left[{{W}_{l}\left({{\mathrm{\beta}}_{k}}\right)}\right]}}_{k\mathrm{,}l}\mathit{\cdot}{\mathbf{B}}\mathrm{{=}}\left[{{\left({{\mathbf{D}}_{DSTVIII}}\right)}^{\mathrm{{-}}{1}}\mathit{\cdot}{\mathbf{D}}_{DSTVIII}\mathit{\cdot}{\left[{{W}_{l}\left({{\mathit{\beta}}_{k}}\right)}\right]}_{k\mathrm{,}l}}\right]\mathit{\cdot}{\mathbf{B}}\mathrm{{=}}}\\
{\mathrm{{=}}{\left({{\mathbf{D}}_{DSTVIII}}\right)}^{\mathrm{{-}}{1}}\mathrm{\cdot}{\mathbf{DSTVII}}{\mathbf{I}}\mathrm{\cdot}{\mathbf{B}}}
\end{array} $$

where

$${\mathbf{B}}\mathrm{{=}}\mathrm{\frac{1}{2}}\mathrm{\left[{\begin{array}{cccccc}{2}&{{-}{1}}&{}&{}&{}&{}\\{}&{1}&{{-}{1}}&{}&{}&{}\\{}&{}&{1}&{\ddots}&{}&{}\\{}&{}&{}&{\ddots}&{{-}{1}}&{}\\{}&{}&{}&{}&{1}&{{-}{1}}\\{}&{}&{}&{\cdots}&{}&{1}\end{array}}\right]}$$

B=toeplitz([0.5 zeros(1,N-1)]',[0.5        -0.5 zeros(1,N-length([0.5        -0.5]))]);
B(1,1)=1;

Check expression of DCTVII through DSTVIII

$${\mathbf{DCTVII}}\mathrm{{=}}{\mathrm{\left({{\mathbf{D}}_{DSTVIII}}\right)}}^{\mathrm{{-}}{1}}\mathrm{\cdot}{\mathbf{DSTVIII}}\mathrm{\cdot}{\mathbf{B}}$$

DCT7a=Da7*inv(Db8)*DST8*B
% compare DCT7 and DCT7a matrices (show correctness of representation of DCTVII through DSTVIII)
max(max(abs(DCT7-DCT7a)))
DCT7a =
  Columns 1 through 7
    1.0000    0.9781    0.9135    0.8090    0.6691    0.5000    0.3090
    1.0000    0.8090    0.3090   -0.3090   -0.8090   -1.0000   -0.8090
    1.0000    0.5000   -0.5000   -1.0000   -0.5000    0.5000    1.0000
    1.0000    0.1045   -0.9781   -0.3090    0.9135    0.5000   -0.8090
    1.0000   -0.3090   -0.8090    0.8090    0.3090   -1.0000    0.3090
    1.0000   -0.6691   -0.1045    0.8090   -0.9781    0.5000    0.3090
    1.0000   -0.9135    0.6691   -0.3090   -0.1045    0.5000   -0.8090
    1.0000   -1.0000    1.0000   -1.0000    1.0000   -1.0000    1.0000
  Column 8
    0.1045
   -0.3090
    0.5000
   -0.6691
    0.8090
   -0.9135
    0.9781
   -1.0000
ans =
   8.8818e-16

Check expression of DSTVIII through DCTVII

$${\mathbf{DSTVIII}}\mathrm{{=}}{\mathbf{D}}_{DSTVIII}\mathrm{\cdot}{\mathbf{DCTVII}}\mathrm{\cdot}{\mathbf{B}}^{\mathrm{{-}}{1}}$$

DST8a=Db8*inv(Da7)*DCT7*inv(B);
DST8a=DST8a(:,:)
% compare DST8 and DST8a matrices (show correctness of representation of DSTVIII through DCTVII)
max(max(abs(DST8-DST8a)))
DST8a =
  Columns 1 through 7
    0.1045    0.3090    0.5000    0.6691    0.8090    0.9135    0.9781
    0.3090    0.8090    1.0000    0.8090    0.3090   -0.3090   -0.8090
    0.5000    1.0000    0.5000   -0.5000   -1.0000   -0.5000    0.5000
    0.6691    0.8090   -0.5000   -0.9135    0.3090    0.9781   -0.1045
    0.8090    0.3090   -1.0000    0.3090    0.8090   -0.8090   -0.3090
    0.9135   -0.3090   -0.5000    0.9781   -0.8090    0.1045    0.6691
    0.9781   -0.8090    0.5000   -0.1045   -0.3090    0.6691   -0.9135
    1.0000   -1.0000    1.0000   -1.0000    1.0000   -1.0000    1.0000
  Column 8
    1.0000
   -1.0000
    1.0000
   -1.0000
    1.0000
   -1.0000
    1.0000
   -1.0000
ans =
   1.9429e-15

Check computation of DCTVII transform

x=randn(N1,1);
disp('x''=');disp(x');
y=DCT7*x;                      % true result
disp('y''=');disp(y');
y1=Da7*inv(Db8)*DST8*B*x;            % compute DCTVII using DSTVIII transform
disp('y1''=');disp(y1');
x'=
  Columns 1 through 7
   -0.8880    0.1001   -0.5445    0.3035   -0.6003    0.4900    0.7394
  Column 8
    1.7119
y'=
  Columns 1 through 7
   -0.7913   -2.2006    1.2712   -2.4858    0.7051   -1.1558   -0.0536
  Column 8
   -3.8990
y1'=
  Columns 1 through 7
   -0.7913   -2.2006    1.2712   -2.4858    0.7051   -1.1558   -0.0536
  Column 8
   -3.8990

Check computation of DSTVIII transform

x=randn(N2,1);
disp('x''=');disp(x');
y=DST8*x;                      % true result
disp('y''=');disp(y');
y1=Db8*inv(Da7)*DCT7*inv(B)*x;            % compute DSTVIII using DCTVII transform
disp('y1''=');disp(y1');
% Reference
x'=
  Columns 1 through 7
   -0.1941   -2.1384   -0.8396    1.3546   -1.0722    0.9610    0.1240
  Column 8
    1.4367
y'=
  Columns 1 through 7
    1.3740   -3.6990   -1.2421   -3.5186    0.1939    1.8424    3.2764
  Column 8
   -3.5957
y1'=
  Columns 1 through 7
    1.3740   -3.6990   -1.2421   -3.5186    0.1939    1.8424    3.2764
  Column 8
   -3.5957