Advertisement
jukaukor

Fourier3sin.py

Mar 27th, 2021
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 KB | None | 0 0
  1. # signaalin frekvenssien laskeminen FFT:lla
  2. # testinä 3 sinimuotoista signaalia
  3. # Juhani Kaukoranta 17.3.2021
  4. import numpy as np
  5. import matplotlib.pyplot as plt
  6. f1, f2, f3 = 100, 200, 500 # sini-signaalien taajuudet Hz
  7. n = 1024 # näytteen koko
  8. time = 1.0 # näytteen kesto sekunteina
  9. sample_rate = n/time # näytteenottotaajuus Hz
  10. A1, A2, A3 = 5, 3, 2 # signaalien amplitudit
  11. t = np.linspace(0,time,n) #aika[s]
  12. # signaaliin tulee n näytettä aikana time
  13. # sinimuotoiset signaalit
  14. signal1 = A1*np.sin(2*np.pi*f1*t)
  15. signal2 = A2*np.sin(2*np.pi*f2*t)
  16. signal3 = A3*np.sin(2*np.pi*f3*t)
  17. signal = signal1 + signal2 + signal3 # summasignaali
  18. # piirretään summasignaali
  19. plt.figure(1)
  20. plt.subplot(211)
  21. t2 = np.linspace(0,0.01,50)
  22. plt.plot(t2,A1*np.sin(2*np.pi*f1*t2)+A2*np.sin(2*np.pi*f2*t2) +A3*np.sin(2*np.pi*f3*t2))
  23. plt.title('kolmen sinikäyrän summasignaalin näyte')
  24. plt.xlabel('t aika[s] ')
  25. plt.xlabel('signal = A1*sin(2pi*f1*t)+A2*sin(2*pi*f2*t)+A3*sin(2*pi*f2*t')
  26. # fourier
  27. sp = np.fft.rfft(signal)
  28. freq = np.fft.rfftfreq(n, d = 1.0/sample_rate)
  29. plt.figure(2)
  30. plt.plot(freq,np.abs(sp))
  31. plt.title('signaalin fourier-muunnos paljastaa frekvenssit')
  32. plt.xlabel('frekvenssit Hz')
  33. plt.show()
  34.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement