Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import matplotlib.pyplot as plt
- def fourier_transform(data):
- N = len(data)
- n = np.arange(N)
- k = n.reshape((N, 1))
- e = np.exp(-2j * np.pi * k * n / N)
- return np.dot(e, data)
- def inverse_fourier_transform(result):
- N = len(result)
- n = np.arange(N)
- k = n.reshape((N, 1))
- e = np.exp(2j * np.pi * k * n / N)
- return np.dot(e, result)
- data = np.array([1,1,1,0])
- result = fourier_transform(data)
- inverse_result = (inverse_fourier_transform(result)) / len(data)
- # print(result)
- fig, (ax1, ax2) = plt.subplots(1, 2)
- ax1.plot(np.abs(result), marker='o', linestyle='', color='b')
- print(np.angle(result))
- ax1.set_xlabel('Frequency')
- ax1.set_ylabel('Magnitude')
- ax1.set_title('Discrete Fourier Transform')
- ax2.plot(np.abs(inverse_result), marker='o', linestyle='', color='b')
- ax2.set_xlabel('Time')
- ax2.set_ylabel('Magnitude')
- ax2.set_title('Discrete Time Signal')
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment