Welcome, guest | Sign In | My Account | Store | Cart

Python implementation of DCT/DST.

Python, 58 lines
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58``` ```################################################################################## ## ## Author: Premshree Pillai ## Date: 27/10/03 ## File Name: dct-dst.py ## Description: -Discrete Cosine/Sine Transformations ## Website: http://www.qiksearch.com ## Category: Math ## ################################################################################## from math import * n = 4.0 a = [[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0]] alpha = [0.0,0.0,0.0,0.0] tempCount = 0 while(tempCount < 4): if(tempCount == 0): alpha[tempCount] = (1.0 / n)**0.5 else: alpha[tempCount] = (2.0 / n)**0.5 tempCount = tempCount + 1 i = 0 option = raw_input("Enter choice (DCT=0, DST=1): ") while(i < 4): j = 0 while(j < 4): a[i][j] = alpha[j] * cos(((2.0 * i + 1.0) * j * pi) / (2.0 * n)) if(option == 1): a[i][j] = (2.0 / (n + 1.0)) * sin((i + 1.0) * (j + 1.0) * pi/(n + 1.0))**0.5 j = j + 1 i = i + 1 i = 0 while(i < 4): j = 0 while(j < 4): u = 0 print "\nPattern[",i,",",j,"]\n" while(u < 4): v = 0 buf = [''] while(v < 4): buf.append(a[u][i] * a[v][j]) v = v + 1 continue print buf,"\t",buf,"\t",buf,"\t",buf u= u + 1 if(i == 3 and j == 3): break while(raw_input()): continue j = j + 1 print "\n" i = i + 1 ``` Noah Spurrier 19 years, 7 months ago

Needs a bit more explaination. This is interesting, but what's it do? It's hard to follow the inputs to the outputs. These input data should be labeled more clearly and you should explain what is going to happen to the input. Like any good recipe it's nice to give hints on when you would want to serve it. Dinu Gherman 19 years, 7 months ago

Needs some comments. This might be ultra-cool, but even then it would benefit from a couple of comments explaining some things for people to read before running the code, or they might not run it at all. Tim Chen 14 years, 5 months ago

Thanks for the recipe. There seems a unindented problem in the original script. I uploaded a indented version on http://toolsbytim.googlecode.com/files/dct.py The script can run in PythonWin Editor. Shan 13 years, 7 months ago

I tried using this function in C++ but the output is different from that of Matlab DC2 function. Is it possible that i have the equivalent C or C++ code? Created by Premshree Pillai on Mon, 27 Oct 2003 (PSF)