Matériel d'étude pour le traitement du signal réalisé en Python.
numpy, matplotlib scipy fftpack
N = 2**20 # data number
dt = 0.0001 # data step [s]
f1 = 5 # frequency[Hz]
A1 = 1 # Amplitude
p1 = 90*pi/180 # phase [rad]
#Formation de forme d'onde
t = np.arange(0, N*dt, dt) # time
freq = np.linspace(0, 1.0/dt, N) # frequency step
y = A1*np.sin(2*np.pi*f1*t + p1)
#Transformée de Fourier discrète&Standardisation
yf = fft(y)/(N/2)
# y :tableau numpy
# N :Nombre d'échantillons
Code entier
fft.py
import numpy as np
from scipy.fftpack import fft
import matplotlib.pyplot as plt
#Rapport circonférentiel π
pi = np.pi
# parameters
N = 2**20 # data number
dt = 0.0001 # data step [s]
f1 = 5 # frequency[Hz]
A1 = 1 # Amplitude
p1 = 90*pi/180 # phase
#Formation de forme d'onde
t = np.arange(0, N*dt, dt) # time
freq = np.linspace(0, 1.0/dt, N) # frequency step
y = A1*np.sin(2*np.pi*f1*t + p1)
#Transformée de Fourier
yf = fft(y)/(N/2) #Transformée de Fourier discrète&Standardisation
#terrain
plt.figure(2)
plt.subplot(211)
plt.plot(t, y)
plt.xlim(0, 1)
plt.xlabel("time")
plt.ylabel("amplitude")
plt.subplot(212)
plt.plot(freq, np.abs(yf))
plt.xlim(0, 10)
plt.xlabel("frequency")
plt.ylabel("amplitude")
plt.tight_layout()
plt.savefig("01")
plt.show()
En haut: graphique de zone temporelle: confirmez que la phase est déphasée de 90 degrés. En bas: graphique de la zone de fréquence: la fréquence de 5 Hz est confirmée.
Jusqu'à présent, j'ai utilisé matlab pour le traitement du signal, mais le scipy de python est également plus facile.
Recommended Posts