| > | restart;
C:=m->piecewise(m=0, 1/sqrt(2), m <> 0, 1): d:=(1/4)*C(u)*C(v)*sum( sum( z*cos((2*x+1)*u*Pi/16)*cos((2*y+1)*v*Pi/16) , y=0..7) , x=0..7): DCT:=unapply(d,u,v,z): |
| > |
A:=Matrix([[ 64 , 60 , 58 , 60 , 60 , 59 , 72 , 77 ], [ 63 , 58 , 138 , 61 , 59 , 58 , 50 , 116 ], [ 148 , 134 , 138 , 106 , 116 , 81 , 54 , 131 ], [ 92 , 61 , 126 , 97 , 100 , 106 , 72 , 72 ], [ 61 , 59 , 116 , 61 , 81 , 59 , 61 , 130 ], [ 61 , 111 , 81 , 58 , 58 , 58 , 80 , 38 ], [ 63 , 59 , 59 , 58 , 59 , 58 , 113 , 111 ], [ 63 , 61 , 60 , 60 , 60 , 59 , 58 , 144 ]]); |
![]() |
(1) |
| > | Z:=LinearAlgebra:-RandomMatrix(8,8): |
| > | for i from 1 by 1 to 8 do for j from 1 by 1 to 8 do Z[i,j] := DCT(i-1,j-1,A[i,j]): od: od: Z; |
![]() |
(2) |
| > |