fork download
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3.  
  4. def signum(t):
  5. return np.sign(t)
  6.  
  7. def fourier_transform(t, f):
  8. dt = t[1] - t[0]
  9. N = len(t)
  10. return np.fft.fft(f) * dt, np.fft.fftfreq(N, dt)
  11.  
  12. t = np.linspace(-10, 10, 500, endpoint=False)
  13. f = signum(t)
  14. F, freq = fourier_transform(t, f)
  15.  
  16. plt.figure(figsize=(10, 6))
  17. plt.subplot(2, 1, 1)
  18. plt.plot(t, f)
  19. plt.title('Signum Function')
  20. plt.xlabel('Time')
  21. plt.ylabel('Amplitude')
  22. plt.grid(True)
  23.  
  24. plt.subplot(2, 1, 2)
  25. plt.plot(freq, np.abs(F))
  26. plt.title('Fourier Transform of Signum Function')
  27. plt.xlabel('Frequency')
  28. plt.ylabel('Magnitude')
  29. plt.grid(True)
  30.  
  31. plt.tight_layout()
  32. plt.show()
Success #stdin #stdout 0.03s 25548KB
stdin
Standard input is empty
stdout
import numpy as np
import matplotlib.pyplot as plt

def signum(t):
    return np.sign(t)

def fourier_transform(t, f):
    dt = t[1] - t[0]
    N = len(t)
    return np.fft.fft(f) * dt, np.fft.fftfreq(N, dt)

t = np.linspace(-10, 10, 500, endpoint=False)
f = signum(t)
F, freq = fourier_transform(t, f)

plt.figure(figsize=(10, 6))
plt.subplot(2, 1, 1)
plt.plot(t, f)
plt.title('Signum Function')
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.grid(True)

plt.subplot(2, 1, 2)
plt.plot(freq, np.abs(F))
plt.title('Fourier Transform of Signum Function')
plt.xlabel('Frequency')
plt.ylabel('Magnitude')
plt.grid(True)

plt.tight_layout()
plt.show()