Modulation et démodulation FM avec Python Partie 2

Aperçu

J'ai essayé la modulation et la démodulation FM avec Python. L'algorithme de démodition est Google Radio

Photo

figure_1.png

Exemple de code

import scipy.signal as sg
import numpy as np
import matplotlib.pyplot as plt

sample_rate = 48000.0
nsamples = 320
F_1 = 440.0
F_2 = 10000.0
F_3 = 10000.0
nyq_rate = sample_rate / 2.0
cutoff_hz = 5000.0
numtaps = 29
t = np.arange(nsamples) / sample_rate
vin = np.sin(2 * np.pi * F_1 * t) 
vfm = np.sin(2 * np.pi * F_2 * t + 6.0 * -np.cos(2 * np.pi * F_1 * t))
i1 = vfm * np.cos(2 * np.pi * F_3 * t)
q1 = vfm * np.sin(2 * np.pi * F_3 * t)
lpf = sg.firwin(numtaps, cutoff_hz / nyq_rate)
I2 = sg.lfilter(lpf, 1, i1)
Q2 = sg.lfilter(lpf, 1, q1)
pI = 0
pQ = 0
m = 0
vo = np.zeros(320)
for t in range(0, vfm.size):
   real = pI * I2[t] + pQ * Q2[t]
   imag = pI * Q2[t] - pQ * I2[t]
   sgn = 1
   circ = 0
   ang = 0
   div = 1
   if (real < 0):
      sgn = -sgn
      real = -real
      circ = np.pi
   if (imag < 0):
      sgn = -sgn
      imag = -imag
      circ = -circ
   if (real > imag):
      div = imag / real
   else:
      if (real != imag):
         ang = -np.pi / 2
         div = real / imag
         sgn = -sgn
   vo[t] = circ + sgn * (ang + div / (0.98419158358617365 + div * (0.093485702629671305 + div * 0.19556307900617517))) * 5
   pI = I2[t]
   pQ = Q2[t]
fig = plt.figure(1)
ax = fig.add_subplot(311)
ax.plot(vin[1:300])
ax = fig.add_subplot(312)
ax.plot(vfm[1:300])
ax = fig.add_subplot(313)
ax.plot(vo[1:300])
fig.set_tight_layout(True)
plt.show()



Recommended Posts

Modulation et démodulation FM avec Python Partie 3
Modulation et démodulation FM avec Python Partie 2
Modulation et démodulation FM avec Python
Modulation et démodulation AM avec python
Modulation et démodulation AM avec Python Partie 2
Traitement d'image avec Python (partie 2)
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Etudier Python avec freeCodeCamp part1
Images en bordure avec python Partie 1
Python et matériel - Utilisation de RS232C avec Python -
Grattage avec Selenium + Python Partie 1
Etudier Python avec freeCodeCamp part2
Traitement d'image avec Python (partie 1)
Résolution de Nampre avec Python (partie 2)
Traitement d'image avec Python (3)
Grattage avec Selenium + Python Partie 2
python avec pyenv et venv
Fonctionne avec Python et R
Communiquez avec FX-5204PS avec Python et PyUSB
Briller la vie avec Python et OpenCV
Jouez des nombres manuscrits avec Python Partie 1
Installez Python 2.7.9 et Python 3.4.x avec pip.
objet perl et classe python partie 2.
Réseau neuronal avec OpenCV 3 et Python 3
Scraping avec Node, Ruby et Python
[Automatisé avec python! ] Partie 1: fichier de configuration
Grattage avec Python et belle soupe
Encodage et décodage JSON avec python
Introduction à Hadoop et MapReduce avec Python
[GUI en Python] PyQt5-Glisser-déposer-
Lire et écrire NetCDF avec Python
J'ai joué avec PyQt5 et Python3
objet perl et classe python partie 1.
Lire et écrire du CSV avec Python
Automatisez des tâches simples avec Python Part0
Intégration multiple avec Python et Sympy
[Automatisé avec python! ] Partie 2: Fonctionnement des fichiers
Coexistence de Python2 et 3 avec CircleCI (1.0)
Jeu Sugoroku et jeu d'addition avec Python
Système de trading automatique FX réalisé avec python et algorithme génétique Partie 1
Communiquez entre Elixir et Python avec gRPC
Construction de pipeline de données avec Python et Luigi
Calculer et afficher le poids standard avec python
Surveiller les pannes de Mojo avec Python et Skype
Jouez des nombres manuscrits avec python, partie 2 (identifier)
[Automation] Manipulez la souris et le clavier avec Python
Traiter les données Pubmed .xml avec python [Partie 2]
Authentification sans mot de passe avec RDS et IAM (Python)
Automatisez des tâches simples avec Python Part1 Scraping
Installation de Python et gestion des packages avec pip
Utilisation de Python et MeCab avec Azure Databricks
POSTER diversement avec Python et recevoir avec Flask
Capturer des images avec Pupil, python et OpenCV
Fractal pour faire et jouer avec Python
Un mémo contenant Python2.7 et Python3 dans CentOS