网友告知有个傅立叶变换这么个东西, 于是写了个Python程序来玩玩。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/usr/bin/python import math def main(): hello = [ 0 ] * 100000 for i in range ( 0 , 100000 ): hello[i] = 100 * math.sin(i * 2 * math.pi / 1000 ) + 222 * math.sin(i * 2 * math.pi / 5000 ) print abs (FT(hello, 0.001 )) / len (hello) * 2 print abs (FT(hello, 0.0002 )) / len (hello) * 2 #print math.atan2() def FT(data, f): sum = 0 + 0j ; for i in range ( 0 , len (data)): sum + = data[i] * (math.e * * ( - 1j * 2 * math.pi * f * i)) return sum if __name__ = = '__main__' : main() |
傅立叶变换的快速算法叫FFT (Fast Fourier Transform)