Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

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

from __future__ import print_function, division 

 

from sympy.matrices.expressions import MatrixExpr 

from sympy import S, I, sqrt, exp 

 

class DFT(MatrixExpr): 

    """ Discrete Fourier Transform """ 

    n = property(lambda self: self.args[0]) 

    shape = property(lambda self: (self.n, self.n)) 

 

    def _entry(self, i, j): 

        w = exp(-2*S.Pi*I/self.n) 

        return w**(i*j) / sqrt(self.n) 

 

    def _eval_inverse(self): 

        return IDFT(self.n) 

 

class IDFT(DFT): 

    """ Inverse Discrete Fourier Transform """ 

    def _entry(self, i, j): 

        w = exp(-2*S.Pi*I/self.n) 

        return w**(-i*j) / sqrt(self.n) 

 

    def _eval_inverse(self): 

        return DFT(self.n)