Vous êtes sur la page 1sur 3

import numpy as np

dir(np);

from matplotlib import pyplot as plt


from math import pi

pi

#Signal parametres
A=1.0
f0=1000.0
phi=pi/6
# fs : frequence d'echantillonage (equivalent a fe dans le cours)
fs=8000.0

#plot parameters
#table est figée on peut pas le changer par contre list on peut la modifié
fsz=(7,5)
#le signal a besoin d'un signal analytique pour generrer le signal, vecteur de
temps et la longueuer du vecteur

#signal parameters (les proprietes du signal)


#premier propriété est vecteur du temps
tlen=1.0 #duree total du signal en seconde
#premiere methode de generation du vecteur temps tt
#tt=np.arange(0.0,tlen,1/fs) #vecteur temps (debut,fin,pas)
#2eme methode de generation du vecteur temps tt
tt=np.arange(round(fs*tlen))/fs

#notre signal xt (remaque: le sin de np appliqué sur tout le vecteur par contre sur
math est appliqué sur des scalaire)
xt = A * np.sin(2*pi*f0*tt+phi)
#xt[:12] #pour affichage des valeurs du signal xt
#time vector : axe des abssisses du temps // Signal vector : axe des ordonnees
#print(f"Time vector: {tt}\n Signal vector: {xt[0:12]}")#le f pour faire la
difference entre une chaine de caractere simple et formaté
#une autre façon d'afficher est :
print("Time vector: {}\n Signal vector:{}".format(tt[0:12],xt[0:12]))

#affichage de la figure (figsize pour configurer le size de la figure)


fig=plt.figure(figsize=fsz)
ax= fig.add_subplot(1,1,1) #add_subplot me permet de determiner combien de
graphe je veux imprimer sur la figure
ax.plot(tt[:24],xt[:24],label=fr"$x(t)={A}\times\sin(2\pi{f0} t+ {phi}) $",
ls="dashed" , marker='o', markerfacecolor='red') #2 parametre : 1: le
vecteur temps 2:le vecteur signal(les amplitudes) et l" \ " pour reconnaitre la
fonction sin
#definir le titre du graphe
title = f"Signal Sinusoidal $x(t)$"
title += f", $f_0={f0}$, $F_s={fs}$"
ax.set_title(title);
#definir lex_label et le y_label (y_label: x(t) et x_label: t (seconde)
y_label=f" $x(t)$"
x_label=f" t (s) "
ax.set_xlabel(x_label)
ax.set_ylabel(y_label)
ax.legend(loc=1) # loc=1 pour spécifier la positio de la légende
#affichage de la figure (figsize pour configurer le size de la figure)
fig=plt.figure(figsize=fsz)
ax= fig.add_subplot(1,1,1) #add_subplot me permet de determiner combien de
graphe je veux imprimer sur la figure
ax.stem(tt[:24],xt[:24],label=fr"$x(t)={A}\times\sin(2\pi{f0} t+ {phi}) $",
use_line_collection=True) #2 parametre : 1: le vecteur temps 2:le vecteur
signal(les amplitudes) et l" \ " pour reconnaitre la fonction sin
#definir le titre du graphe
title = fr"Stem plot for sinusoidal signal $x(t)$"
title += f", $f_0={f0}$, $F_s={fs}$"
ax.set_title(title);
#definir lex_label et le y_label (y_label: x(t) et x_label: t (seconde)
y_label=f" $x(t)$"
x_label=f" t (s) "
ax.set_xlabel(x_label)
ax.set_ylabel(y_label)
ax.legend(loc=1) # loc=1 pour spécifier la positio de la légende

#premierement on va inserer deux 0 entre chaque deux echantillons qui se suivent


pour augmente la taille du vecteur (car on a au total 8000*3)
#on a deja un echantillon et on va ajouter deux autres 0 pour que à la fin on aura
8000*3

tlen=1.0 #duree total du signal en seconde


tt=np.arange(round(fs*tlen))/fs
xt = A * np.sin(2*pi*f0*tt+phi)
#creation d'une mmatrice m de 3 ligne et fs=8000 colonne de zeros
tmp=np.zeros((3,int(fs)))
tmp[0,:]=xt
#xt3 est le signal xt étendu 3 fois (F: langage fortran)
xt3=tmp.reshape((tmp.size,),order='F')
print(xt3[:12])

#affichage de la figure (figsize pour configurer le size de la figure)


fs=8000*3
fig=plt.figure(figsize=fsz)
ax= fig.add_subplot(1,1,1) #add_subplot me permet de determiner combien de
graphe je veux imprimer sur la figure
ax.stem(tt[:50],xt3[:50],label=fr"$x3(t)={A}\times\sin(2\pi{f0} t+ {phi}) $",
use_line_collection=True) #2 parametre : 1: le vecteur temps 2:le vecteur
signal(les amplitudes) et l" \ " pour reconnaitre la fonction sin
#definir le titre du graphe
title = fr"Stem plot for sinusoidal signal $x3(t)$"
title += f", $f_0={f0}$, $F_s={fs}$"
ax.set_title(title);
#definir lex_label et le y_label (y_label: x(t) et x_label: t (seconde)
y_label=f" $x3(t)$"
x_label=f" t (s) "
ax.set_xlabel(x_label)
ax.set_ylabel(y_label)
ax.legend(loc=1) # loc=1 pour spécifier la positio de la légende

xt3=tmp.reshape((tmp.size,),order='F')
print(xt3[:12])
#Creation de la reponse impulsionnelle H(t)
import numpy as np
from matplotlib import pyplot as plt
import scipy.signal as signal

k=10
fc = 4000
phi = np.pi/6
A = 1
fs= 24000
def H(fs,fc,k):
t = np.arange(-k/(2*fc),k/(2*fc),1/fs)
return 2*fc*np.sinc(2*fc*t),t

ht,t = H(fs,fc,k)

fig = plt.figure(figsize = (7,5))


ax = fig.add_subplot(111)
ax.plot(t,ht)

y=np.convolve(xt3,H(fs,fc,k),"same")

Vous aimerez peut-être aussi