Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Différents signaux seront régulièrement utilisés dans le cours : ils sont définis ici. La plupart peuvent être définis à temps continu ou à temps discret.

Sinusoïde

En temps continu, la sinusoïde a pour expression :

x(t)=Asin(2πft+φ)x(t) = A \sin(2 \pi f t + \varphi)

dont les paramètres sont :

  • AA est l’amplitude,

  • ff est la fréquence,

  • φ\varphi est la phase. Remarquez que si φ=0\varphi=0, alors x(t)x(t) est un sinus, et si φ=π/2\varphi=\pi/2, alors x(t)x(t) est un cosinus.

La sinusoïde en temps continu est périodique de période 1/f1/f ou, de manière équivalente, de fréquence ff.

En temps discret, la sinusoïde a la même expression :

x[n]=Asin(2πfn+φ)x[n] = A \sin(2 \pi f n + \varphi)

Le sinus est créé en Python avec la fonction numpy.sin.

Exponentielle complexe

En temps continu, l’exponentielle complexe a pour expression :

x(t)=exp(j2πft+φ)=cos(2πft+φ)+jsin(2πft+φ)x(t) = \exp(j 2 \pi f t + \varphi) = \cos(2 \pi f t + \varphi) + j \sin(2 \pi f t + \varphi)

En temps discret, c’est la même expression (en remplaçant les parenthèses dans x(t)x(t) par des crochets). L’exponentielle est créée en Python avec la fonction numpy.exp, et le nombre complexe jj est obtenu avec 1j.

À cause du nombre complexe jj, le signal est à valeurs complexes. Pour le représenter, il faut être dans un espace à trois dimensions (la variable, la partie réelle et la partie imaginaire). De cette manière, l’exponentielle complexe ressemble à une queue de cochon, ou un tire-bouchon. Remarquez que la variable ff, souvent appelée fréquence, peut tout à fait être négative : dans ce cas, l’exponentielle complexe tourne dans le sens inverse.

Sinus cardinal

Le sinus cardinal, noté sinc\mathrm{sinc}, a pour définition (le cas où t=0t=0 est à considérer à part puisque la division par t=0t=0 n’est pas possible) :

sinc(t)={sin(πt)πtsit01sit=0\mathrm{sinc}(t) = \begin{cases} \displaystyle \frac{\sin(\pi t)}{\pi t} &\text{si}\quad t \neq 0 \\ 1 &\text{si}\quad t = 0 \end{cases}

Un sinus cardinal ressemble à un cosinus donc l’amplitude décroît lorsqu’on s’éloigne de t=0t=0.

Encore une fois, le sinus cardinal à temps discret a la même expression (avec des crochets à la place des parenthèses). Le sinus cardinal est obtenu en Python avec la fonction numpy.sinc.

Échelon

L’échelon (également appelé fonction de Heaviside) a pour définition :

u(t)={0sit<01sit0u(t) = \begin{cases} 0 &\text{si}\quad t < 0 \\ 1 &\text{si}\quad t \geq 0 \end{cases}

L’échelon est donc nul pour t<0t<0 et égal à 1 sinon. Il existe aussi une version à temps discret.

Il n’existe pas de fonction permettant de générer un échelon en Python : il faut passer par des instructions spécifiques, comme par exemple dans le code suivant :

# Modules à importer
import numpy as np
import matplotlib.pyplot as plt

# Tout d'abord, générer la liste des instants d'échantillonnage
# Par exemple ici : 11 échantillons répartis entre -5 et 4
n = np.arange(-5, 5)

# L'échelon est obtenu avec la fonction numpy.where
# qui affecte la valeur 1 ou 0 suivant la condition
u = np.where(n>=0, 1, 0)

# Affichage
plt.stem(n, u, basefmt=" ")
plt.grid()
plt.show()
<Figure size 432x288 with 1 Axes>

Porte

La porte (ou fonction rectangle) a pour définition :

rect(t)={0sit>121sit12\mathrm{rect}(t) = \begin{cases} 0 &\text{si}\quad |t| > \frac{1}{2} \\ 1 &\text{si}\quad |t| \leq \frac{1}{2} \end{cases}

Cette porte est de longueur 1 et centrée sur 0.

Prélèvement d’un signal

La porte est très utile pour exprimer mathématiquement le « prélèvement » d’une portion d’un signal : on parle de « fenêtrage ». Ainsi, la portion de largeur TT centrée autour de t0t_0 d’un signal x(t)x(t) s’exprime :

x~(t)=x(t)×rect(tt0T).\tilde{x}(t) = x(t) \times \mathrm{rect}\left(\frac{t-t_0}{T}\right).
Fenêtrage du signal x par une porte de largeur T et centrée autour de t_0.

Figure 6:Fenêtrage du signal xx par une porte de largeur TT et centrée autour de t0t_0.

Comme pour l’échelon, la porte peut être définie en Python avec la fonction numpy.where. Par exemple, l’illustration ci-dessous est une porte discrète centrée sur 2 et de longueur 7 :

# Porte définie entre -5 et 10,
# représentée entre -12 et 12
n = np.arange(-12, 12)
r = np.where( (n>=-1) & (n<=5) , 1, 0)
plt.stem(n, r, basefmt=" ")
plt.grid()
plt.show()
<Figure size 432x288 with 1 Axes>

Impulsion de Dirac

L’impulsion de Dirac est telle que :

δ(t)=0  si  t0etδ(t)dt=1\delta(t) = 0 \;\text{si}\; t \neq 0 \qquad\text{et}\qquad \int \delta(t) dt = 1

L’impulsion de Dirac n’est pas une fonction, au sens mathématique, car δ(0)\delta(0) n’est pas défini : c’est en fait une distribution. Pour cette raison, on représente ce signal par une flèche, qui signifie que la valeur n’est pas définie en 0.

C’est un signal non représentable physiquement car il n’existe pas dans la nature. Mais c’est une conceptualisation mathématique bien pratique. Un exemple réaliste qui s’en approcherait serait le son produit lorsqu’on tape d’un coup bref dans ses mains. On peut l’approcher par une porte dont la largeur tend vers 0 et l’amplitude vers l’infini.

L’impulsion de Dirac a des propriétés particulières, notamment :

  • f(t)δ(t)=f(0)δ(t)f(t) \delta(t) = f(0) \delta(t)

  • f(t)δ(tτ)=f(τ)δ(tτ)f(t) \delta(t-\tau) = f(\tau) \delta(t-\tau)

De la dernière propriété découle la suivante :

f(t)δ(tτ)dt=f(τ)δ(tτ)dt=f(τ)δ(tτ)dt=f(τ).\int f(t) \delta(t-\tau) dt = \int f(\tau) \delta(t-\tau) dt = f(\tau) \int \delta(t-\tau) dt = f(\tau).

À l’inverse des signaux précédents, l’impulsion de Dirac ne peut pas s’écrire en temps discret. Il existe cependant un signal qui s’en approche : l’impulsion discrète.

Impulsion discrète

L’impulsion discrète est l’équivalent à temps discret de l’impulsion de Dirac. C’est une fonction mathématique classique car elle est définie en tout point :

δ[n]={0  si  n01  si  n=0\delta[n] = \begin{cases} 0 \;\text{si}\; n \neq 0 \\ 1 \;\text{si}\; n = 0 \end{cases}

L’impulsion discrète est également appelée impulsion de Kronecker.

La fonction numpy.where peut encore être utilisée pour définir une impulsion discrète en Python :

n = np.arange(-10, 10)
d = np.where(n==0, 1, 0)

plt.figure(figsize=(10,3))
plt.stem(n, d, basefmt=" ")
plt.xlabel("$n$")
plt.ylabel("δ[n]")
plt.grid()
plt.show()
<Figure size 720x216 with 1 Axes>

Peigne de Dirac

Le peigne de Dirac est défini par (T>0T > 0) :

ШT(t)=k=+δ(tkT)Ш_T(t) = \sum_{k=-\infty}^{+\infty} \delta(t-kT)

Le peigne de Dirac est également appelé train d’impulsion, fonction d’échantillonnage ou distribution Cha (en raison de sa ressemblance avec la lettre cyrillique Ш).

✏️ Exercice 2