def dft2(points):
     complex_list = [Complex(p[0], p[1]) for p in points]
     N = len(complex_list)
     X = []
     for k in range(N):
         x = Complex(0, 0)
         for n in range(N):
             t = 2 * math.pi * k * n / N
             c = Complex(math.cos(t), -math.sin(t))
             x += c * complex_list[n]
         x.re = x.re / N
         x.im = x.im / N
         radius = x.length()
         phase = x.angle()
         if radius > 1:
             X.append((radius, k, phase))
     return X
Exemple #2
0
def test_complex():
	x, y = Complex(2, 1), Complex(5, 6)
	su, sub, mul, div, mod_x, mod_y, x_angle, y_angle, x_conjugate, y_conjugate, x_log, y_log = x+y, x-y, x*y, x/y, x.mod(), y.mod(), x.angle(), y.angle(), x.conjugate(), y.conjugate(), x.log(), y.log()
	assert su.__str__() == '7.00+7.00i'
	assert sub.__str__() == '-3.00-5.00i'
	assert mul.__str__() == '4.00+17.00i'
	assert div.__str__() == '0.26-0.11i'
	assert mod_x.__str__() == '2.24+0.00i'
	assert mod_y.__str__() == '7.81+0.00i'
	assert x_angle.__str__() == '0.4636476090008061'
	assert y_angle.__str__() == '0.8760580505981934'
	assert x_conjugate.__str__() == '2.00-1.00i'
	assert y_conjugate.__str__() == '5.00-6.00i'
	assert x_log.__str__() == '0.80+0.46i'
	assert y_log.__str__() == '2.06+0.88i'