Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # signaalin frekvenssien laskeminen FFT:lla
- # testinä 3 sinimuotoista signaalia
- # Juhani Kaukoranta 17.3.2021
- import numpy as np
- import matplotlib.pyplot as plt
- f1, f2, f3 = 100, 200, 500 # sini-signaalien taajuudet Hz
- n = 1024 # näytteen koko
- time = 1.0 # näytteen kesto sekunteina
- sample_rate = n/time # näytteenottotaajuus Hz
- A1, A2, A3 = 5, 3, 2 # signaalien amplitudit
- t = np.linspace(0,time,n) #aika[s]
- # signaaliin tulee n näytettä aikana time
- # sinimuotoiset signaalit
- signal1 = A1*np.sin(2*np.pi*f1*t)
- signal2 = A2*np.sin(2*np.pi*f2*t)
- signal3 = A3*np.sin(2*np.pi*f3*t)
- signal = signal1 + signal2 + signal3 # summasignaali
- # piirretään summasignaali
- plt.figure(1)
- plt.subplot(211)
- t2 = np.linspace(0,0.01,50)
- 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))
- plt.title('kolmen sinikäyrän summasignaalin näyte')
- plt.xlabel('t aika[s] ')
- plt.xlabel('signal = A1*sin(2pi*f1*t)+A2*sin(2*pi*f2*t)+A3*sin(2*pi*f2*t')
- # fourier
- sp = np.fft.rfft(signal)
- freq = np.fft.rfftfreq(n, d = 1.0/sample_rate)
- plt.figure(2)
- plt.plot(freq,np.abs(sp))
- plt.title('signaalin fourier-muunnos paljastaa frekvenssit')
- plt.xlabel('frekvenssit Hz')
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement