Pythoneon02

Sinus

Il y a au moins deux sortes de sinus :

Dans les deux cas on utilise les modules et fonctions de l'extension Numpy

Sinus mathématique

C'est le plus évident : on calcule les valeurs d'une onde sinusoïdale par une formule :

y = sin(2 * pi * freq * t

où t prend les valeurs de la liste (ou vecteur) T données par :

T = numpy.arange(0.0, duree, 1./sr) 

Nous sommes dans un monde réversible - celui que les physiciens aiment bien : on pourrait calculer les valeurs de l'onde sinusoïdale dans n'importe quel ordre et les trier ensuite selon les valeurs du temps et on obtiendrait la même onde. Ce serait évidemment plus lent. Mais dans le monde physico-mathématique tout est - tout le temps - déjà là.

Sinus algorithmique

Il y a une autre construction, qui n'est pas intemporelle : le calcul de chaque valeur résulte des deux valeurs qui l'ont précédé. On n'accède pas à la valeur de n'import quel temps : il faut d'abord calculer toutes les valeurs antérieures. Voici l'algorithme :

y[i] = k * y[i-1] - y[i-2]

où k dépend de la fréquence que nous voulons obtenir par la relation :

k =  2 * numpy.cos(2 * numpy.pi * freq/sr)

Si on veut faire varier la fréquence, continûment ou discontinûment, il faut aussi varier les valeurs de k

C'est simple, non ?

... la suite ... (bruit, impulsions, ...)


Sommaire

Pythoneon 01, 02, 03, 04, 05, 06, 07
Imprimer du code Python
Évolution du projet pythoneon
Utiliser l'Analyse de Fourier
'A Primer on Scientific Programming with Python' de H.P. Langtangen

Copyright 2011 (c) René Bastian - rbastian (arrobe) free.fr