OpenCores
URL https://opencores.org/ocsvn/mdct/mdct/trunk

Subversion Repositories mdct

[/] [mdct/] [tags/] [MDCT_REL_B1_2/] [MATLAB/] [dctm.m] - Blame information for rev 9

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 mikel262
 
2
Q = [ 16,11,10,16,24,40,51,61;
3
   12,12,14,19,26,58,60,55;
4
   14,13,16,24,40,57,69,56;
5
   14,17,22,29,51,87,80,62;
6
   18,22,37,56,68,109,103,77;
7
   24,35,55,64,81,104,113,92;
8
   49,64,78,87,103,121,120,101;
9
   72,92,95,98,112,100,103,99
10
];
11
N = 8;
12
K = 8;
13
x = [
14
   139,144,149,153,155,155,155,155;
15
   144,151,153,156,159,156,156,156;
16
   150,155,160,163,158,156,156,156;
17
   159,161,162,160,160,159,159,159;
18
   159,160,161,162,162,155,155,155;
19
   161,161,161,161,160,157,157,157;
20
   162,162,161,163,162,157,157,157;
21
   162,162,161,161,163,158,158,158;
22
 
23
];
24
xn=x-128;
25
X = [ zeros(1,N);zeros(1,N);zeros(1,N);zeros(1,N);zeros(1,N);zeros(1,N);zeros(1,N);zeros(1,N)];
26
Xq=X;
27
xi=X;
28
 
29
% 2D dct
30
for v = 0:N-1
31
   if v == 0
32
      Cv = 1/sqrt(2);
33
   else
34
      Cv = 1;
35
   end
36
   for u = 0:N-1
37
      if u == 0
38
         Cu = 1/sqrt(2);
39
      else
40
         Cu = 1;
41
      end
42
      for j = 0:N-1,
43
         for i = 0:N-1
44
            X(u+1,v+1) = X(u+1,v+1) + (2/N)*Cu*Cv*xn(i+1,j+1)*cos( ((2*i+1)*u*pi)/(2*N))*cos( ((2*j+1)*v*pi)/(2*N));
45
         end
46
      end
47
   end
48
end
49
 
50
X;
51
 
52
% idct
53
for i = 0:N-1
54
   for j = 0:N-1
55
      for u = 0:N-1
56
         if u == 0
57
            Cu = 1/sqrt(2);
58
         else
59
            Cu = 1;
60
         end
61
         for v = 0:N-1
62
            if v == 0
63
               Cv = 1/sqrt(2);
64
            else
65
               Cv = 1;
66
            end
67
            xi(i+1,j+1) = xi(i+1,j+1) + (2/N)*Cu*Cv*X(u+1,v+1)*cos( ((2*i+1)*u*pi)/(2*N))*cos( ((2*j+1)*v*pi)/(2*N));
68
         end
69
      end
70
   end
71
end
72
 
73
xi+128
74
 
75
% quantization
76
for i = 0:N-1
77
   for j = 0:N-1
78
      Xq(i+1,j+1) = round( X(i+1, j+1)/Q(i+1,j+1));
79
   end
80
end
81
 
82
Xq;
83
 
84
 
85
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.