Traitement du signal en Python (1): transformée de Fourier

introduction

Matériel d'étude pour le traitement du signal réalisé en Python.

Bibliothèque à utiliser

numpy, matplotlib scipy fftpack

Contenu d'exécution

  1. Générez une onde sinusoïdale d'une fréquence spécifique. (numpy)
  2. Exécutez FFT. (scipy)
  3. Tracez le résultat de l'exécution. (matplotlib)

Code programme

1. Partie de génération d'onde sinusoïdale

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) 

2. Partie transformée de Fourier

#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()

3. Résultat de l'exécution

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. Figure_2.png

Résumé

  1. J'ai exécuté FFT en Python.

Impressions

Jusqu'à présent, j'ai utilisé matlab pour le traitement du signal, mais le scipy de python est également plus facile.

Matériel de référence

Recommended Posts

Traitement du signal en Python (1): transformée de Fourier
Traitement de fichiers en Python
Traitement multithread en python
Traitement de texte avec Python
Traitement des requêtes en Python
Traitement d'image à partir de zéro avec python (5) Transformation de Fourier
Traitement de texte UTF8 avec python
Traitement du signal acoustique avec Python (2)
Traitement du signal acoustique avec Python
Traitement asynchrone (threading) en python
Collection de traitement d'image en Python
Utilisation du mode Python dans le traitement
100 Language Processing Knock Chapitre 1 en Python
Code de vérification de la série Fourier écrit en Python
Traitez facilement des images en Python avec Pillow
Traitement des interdictions en double dans la banque de données GAE / Python
Statut de chaque système de traitement Python en 2020
Quadtree en Python --2
Python en optimisation
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
traitement d'image python
Méta-analyse en Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
Traitement de fichiers Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python