離散フーリエ変換を1の原始N乗根による表現で計算する
1の原始N乗根の定義:
N=8の場合
import numpy as np from pylab import * import pdb f = np.matrix([0,1,1,2,3,2,3,2]).transpose() plot(f) show() w8 = e**(pi/4*1j) A = 1/8.0 * np.matrix([ [1,1,1,1,1,1,1,1], [1,w8**(-1),w8**(-2),w8**(-3),w8**(-4),w8**(-5),w8**(-6),w8**(-7)], [1,w8**(-2),w8**(-4),w8**(-6),w8**(-8),w8**(-10),w8**(-12),w8**(-14)], [1,w8**(-3),w8**(-6),w8**(-9),w8**(-12),w8**(-15),w8**(-18),w8**(-21)], [1,w8**(-4),w8**(-8),w8**(-12),w8**(-16),w8**(-20),w8**(-24),w8**(-28)], [1,w8**(-5),w8**(-10),w8**(-15),w8**(-20),w8**(-25),w8**(-30),w8**(-35)], [1,w8**(-6),w8**(-12),w8**(-18),w8**(-24),w8**(-30),w8**(-36),w8**(-42)], [1,w8**(-7),w8**(-14),w8**(-21),w8**(-28),w8**(-35),w8**(-42),w8**(-49)], ]) F = A*f print F plot(F.real,F.imag,'bo') show() P = np.array(F)*np.conj(np.array(F)) print P plot(P) show()