import numpy as np
from numpy.fft import fft, ifft
N = 200
u = np.random.randn(N)
fu = fft(u)
fu[0]
(0.8517385332146983+0j)
N*np.mean(u)
0.8517385332146965
u = np.random.randn(N) + 1j * np.random.randn(N)
fu = fft(u)
v = ifft(fu)
np.linalg.norm(u-v)
6.515061194998592e-15
def f(x):
if x < 3*np.pi/5:
return 1
else:
return 0
u = np.zeros(N)
for n in range(N):
u[n] = f(2*n*np.pi/N)
import matplotlib.pyplot as plt
plt.figure(0)
plt.plot(u,'.')
plt.show()
fu = fft(u)
mod_fu = np.abs(fu)
plt.figure(1)
plt.plot(mod_fu)
plt.show()
fu = fft(u)
arg_fu = np.angle(fu)
plt.figure(2)
plt.plot(arg_fu)
plt.show()
v = ifft(fu)
plt.figure(3)
plt.plot(np.real(v))
plt.show()
k = 25
u = np.sin(2*np.arange(N)*k*np.pi/N)
plt.figure(4)
plt.plot(u)
plt.show()
fu = fft(u)
mod_fu = np.abs(fu)
plt.figure(4)
plt.plot(mod_fu)
plt.show()
k = 5
u = np.sin(2*np.arange(N)*k*np.pi/N)
k = 25
u += np.sin(2*np.arange(N)*k*np.pi/N)
plt.figure(4)
plt.plot(u)
plt.show()
fu = fft(u)
mod_fu = np.abs(fu)
plt.figure(4)
plt.plot(np.fft.fftshift(mod_fu))
plt.show()