Précédent
Sommaire
Suivant


Du signal à l'équation du monde (2)
 
La transformée de Fourier discrète
 


1. Le spectre discret

Plus la fréquence est élevée, plus le signal peut transporter une grande quantité d'information. Si nous admettons l'absence de composante de fréquence élevée à partir d'une fréquence `F`, alors d'après Harry Nyquist, physicien ingénieur électronicien suédois (1889, Nilsby, Suède - 1976, Harlingen, Texas, Etats-Unis), le signal peut être échantillonné à une fréquence `2F` sans perte d'information. D'une certaine façon, on peut dire que le signal ignore les intervalles de temps plus petits que :

`dt=1/(2F)`

Et si nous tronquons le signal au bout d'un temps `T` multiple de `1"/"(2F)`, par exemple en posant `T=N"/"(2F)` on obtient alors un signal qui peut être analysé comme s'il se répétait à chaque intervalle de temps `T`. Puis le signal est échantillonné à la fréquence `2F`, c'est à dire à des instants `0`, `1"/"(2F)`, `2"/"(2F)`, `3"/"(2F)`, ..., `(N-1)"/"(2F)`, en `N "=" 2FT` échantillons sans perte d'information.

Puis ce signal se décompose en la somme de ses harmoniques dont les fréquences sont les multiples de `1"/"T` c'est à dire des multiples de `2F"/"N`, jusqu'à la fréquence `F` exclu, soit `1"/"T, 2"/"T, 3"/"T ,..., (N-1)"/"T`. On a enlevé la composante continue. D'une certaine façon, on peut dire que le signal ignore les intervalles de fréquence plus petits que :

`dnu=1/T=N/F`

En éliminant du signal les composantes de fréquence trop haute et les composantes de fréquence trop basse, on obtient un signal comprenant que des composantes de fréquence comprise entre `F"/"N ` et `F`. Cela correspont pour un observateur, au choix d'une échelle de temp et au choix d'une largeur de champ de vision.

Le spectre discret du signal est souvent présenté comme la suite des amplitudes des composantes de fréquence `n"/"T` avec `n in {1 ".." N-1}` :

`(a_1,a_2,a_3,...,a_(N-1))`

Mais cette présentation est incomplète et ne permet pas de restituer le signal. Le spectre discret complet précise les phases de chaque fréquence. C'est la suite des pôles des composantes de fréquence `n"/"T` avec `n in {1 ".." N-1}` et qui permet de restituer le signal à l'identique :

`([a_1, α_1],[a_2, α_2],[a_3, α_3],...,[a_(N-1), α_(N-1)])`

Le pôle placé à la place n°`n` dans la liste, définit le `n`-ième harmonique de fréquence `n"/"T`. L'harmonique numéro `0` qui désigne la composante continue est posé comme étant nulle.

`f(t) = a_0 + a_1sin(α_1 "+" 2pi 1/T t) + a_2sin(α_2 "+" 2pi2/T t) + ... + a_("("N-1")")sin(α_("("N-1")")"+" 2pi(N-1)/T t)`  

`f(t) = a_0 + sum_(n=1)^(N-1) a_n sin(α_n"+" 2pi n/T t)`  

2. Transformation linéaire

Le signal est déterminé par son spectre `(rho_1,...,rho_("("N-1")"))` qui est une suite de `N` nombres complexes. Une composante de pôle`[a,alpha]` c'est à dire d'amplitude `a` et de phase initiale `alpha`, peut être modifiée en multipliant son amplitude par un facteur `b` et en augmentant sa phase d'un angle `beta`. Et cela revient à multiplier son pôle `[a, alpha]` par le pôle `[b, beta]` qui est appellé le pôle d'amplification, ou, ce qui revient au même, à le diviser par le pôle `[1"/"b, -beta]` qui est appellé le pôle d'absorption. On obtient alors un signal de même fréquence et de pôle `[a, alpha][b, beta]`

Dans le corps des complexes, cette transformation `z|->[b, beta]z` est linéaire puisqu'elle consiste à multiplier `z` par un nombre complexe `[b, beta]` qui est le pole d'amplification.

Et cela s'applique pour chaque fréquence avec des paramètre `b` et `beta` différent. Ainsi une transformation linéaire du signal est déterminée par son spectre d'amplification :

`([b_1,beta_1], [b_2,beta_3], [b_3,beta_3],...,[b_("("N-1")"),beta_("("N-1")")])`

La transformation du signal consiste à multiplier chaque pôle par le pôle d'amplification de la fréquence correspondante.

Un média linéaire et sans réminiscence va transformer le spectre du signal en multipliant chaque pôle du signal par un pôle d'amplification propre au média et à la fréquence. Ainsi, telle une photographie en négatif, un média linéaire sans réminiscence est entièrement défini par son spectre d'amplification ou d'absorbtion, qui n'est d'apparence discrète que parcequ'on l' éclaire avec des signaux de spectre discret.

Le spectre d'absorbtion d'un média linéaire et sans réminiscence est continu, c'est une fonction continue de `RR^"∗"->CC` qui à chaque fréquence `nu` produit un pôle d'amplification `rho(nu)`. Et la partie linéaire se manifeste pour chaque fréquence `nu` par la transformation `z|->z rho(nu)` qui consiste à multiplier le pôle `z` de la composante de fréquence `nu` du signal par le facteur d'amplification `rho(nu)`.

3. Polarisation

Le signal sinusoïdale a révélé sa simplicité en se définissant comme la projection sur l'axe des ordonnées d'un spino dans le plan `CC`. Mais celui-ci possède un symétrique. Les spinos se répartissent entre spino-droits et spino-gauches (sens de rotation des spinos dans le plan `CC`) selon une proportion inconnue. Tout se passe alors comme si un paramètre caché existait dans le signal qui est la répartition des spinos en spino-gauches et spino-droits pour chaque fréquence.

Si aucune expérience ne met en évidence ce paramètre, alors, que celui-ci existe ou qu'il n'existe pas, n'a aucune importance, et donc on l'ignore. Mais ce n'est pap le cas. il existe des médias qui vont se comporter différemment vis-à-vis des spino-gauches et des spino-droits.

Le signal se décompose en deux signaux, celui porté par les spino-gauches (fréquence positive, rotation dans le sens trigonométrique) et celui porté par les spino-droits (fréquence négative, rotation dans le sens des aiguilles d'une montre)  :

`U(t) = sum_(n=-(N-1))^(N-1) a_n sin(α_n"+" n omega t)`

Avec `a_0=alpha_0=0`, car il n'y a pas de composante continue. On étend le concept de transformation linéaire qui peut différer entre spino-gauche et spino-droit. Le spectre d'amplification couvre alors les fréquences suivantes :

`-(N-1)/T,...,-3/T,-2/T,-1/T,0,1/T,2/T,3/T,..., (N-1)/T`

`([b_("-("N-1")"),beta_("-("N-1")")],...,[b_-2,beta_-2],[b_-1,beta_-1],0,[b_1,beta_1], [b_2,beta_2],...,[b_("("N-1")"),beta_("("N-1")")])`

Un signal polarisé ne contient que des spino-droits ou que des spino-gauches. La polarisation est une transformation du signal qui consiste à enlever l'un ou l'autre genre de spino. Le terme est aussi utilisé dans une différenciation partielle. Un signal polarisé linéairement est composé pour chaque fréquence de composantes d'égale amplitude entre spino-gauche et spino-droit. La polarisation linéaire est une transformation du signal qui enlève le surplus de l'un ou de l'autre genre pour ne produire qu'un signal polarisé linéairement.

Ces paramètres cachés ont des effets surprenant dans notre univers unidimensionnel. Un signal de valeur nulle peut en faite être composé de spino-gauches et spino-droits non nulles qui, déphasés, s'annulent en projection sur l'axe des ordonnées, laissant croire qu'aucune information n'est transportée, alors que le passage de ce signal nul dans un média polarisant va faire d'un seul coup apparaître un signal non-nul qui semble sorti de nul part.

4. La somme des harmoniques

Tout signal périodique se décompose en la somme de ses harmoniques qui sont des signaux sinusoïdaux. Et chaque signaux sinusoïdaux et la partie imaginaire d'un spino positif. Donc tout signal se décompose en la partie imaginaire d'une somme de spinos positifs.

Considérons un signal `s"←"t` de période `T` et dont la fréquence de Nyquist est, `F`. La période `T` est le temps qu'il faut pour que le signal se répète à l'identique. Quelque soit `t` nous avons : `s(t+T)=s(t)`. Les harmoniques possèdent comme fréquence:

`1/T, 2/T, 3/T,...,N/T`

`N"/"T"<"F`. On a enlevé la composante continue.

`s = sum_(n=1)^N a_n cos(alpha_n"+"n omega t)`

`s = sum_(n=1)^N a_n/2e^(i(n omegat"+"alpha_n)) + a_n/2e^(-i(n omegat"+"alpha_n))`

`s = sum_(n=-N)^N a_n/2 e^(i(nomegat"+"alpha_n))`     avec  `a_0"="0`  et  `a_-n"="a_n`  et  `alpha_(-n)"="-alpha_n`

`s = 1/2 sum_(n=-N)^N a_n e^(i alpha_n) e^(i n omega t)`

`s = 1/2 sum_(n=-N)^N [a_n,alpha_n] [1, n omegat]`

`s = 1/2 sum_(n=-N)^N rho_n e^(i n omegat)`

`rho_n=[a_n,alpha_n]` est un nombre complexe, appelé pôle, regroupant l'amplitude et la phase du spino de vitesse angulaire `n omega`.

`a_-n"="a_n`
`alpha_-n"="-alpha_n`
`rho_-n"="bar(rho_n)`

`rho_n"="[a_n,alpha_n]= [a_|n|,sf"sign"(n)alpha_|n|]`

`a_1` : Amplitude du premier harmonique.
`α_1`
: Phase du premier harmonique exprimée en radian.
`a_|n|`
: Amplitude du `|n|`-ième harmonique.
`α_|n|`
: Phase du `|n|`-ième harmonique exprimée en radian.

5. L'échantillonnage appliqué au son

Dans la pratique, l'oreille ne perçevant pas les sons de fréquences supérieurs à `20 000 "Hz"`, nous pouvons retirer les composantes de fréquence supérieures puis échantillonner le signal à `44 100 "Hz"`, un standard communément rencontré.

les signaux sont échantillonnés à la fréquence `F = 44 100 "Hz"`. Cet échantillonnage est sans perte si les signaux ne comprennent pas de composante de fréquence supérieure à `F"/"2 = 22 050 "Hz"`.

L'échantillonage du signal à la fréquence `F` va prendre les `N` premières valeurs du signal espacées par des intervalles de temps constant `1"/"F` c'est à dire aux instants suivant `0`, `1"/"F`, `2"/"F`, `3"/"F`..., `(N"-"1)"/"F`. Les valeurs successives du signal sont ainsi espacées d'un même intervalle de temps égale à `1"/"F`, soit une valeur à peu près toutes les `23` microsecondes, appelé le pas d'échantillonnage. Le seul paramètre important pour définir un échantillonnage est sa fréquence `F`, et le nombre d'échantillons `N` dépendra de la durée du signal.

6. L'échantillonnage

Etant donné un signal `s(t)` `t` désigne le temps. On définit un échantillonnage par défaut. L'unité de temps, qui souvent révèle l'échelle de temps de l'observateur, détermine le fréquençage par défaut. Ainsi, si on prend la seconde comme unité de temps, la fréquence d'échantillonnage par défaut est le hertz, le pas d'échantillonnage par défaut est la seconde. Puis par défaut on cale l'échantillonnage sur le zéro faisant que `s_0=s(0)`. Les échantillons se notent de façon indicés `s_0,s_1,s_2,....s_n,....` :

`s_0=s(0)`
`s_1=s(p)`
`s_2=s(2p)`
`s_3=s(3p)`
....
`s_n=s(np)`
....

`p` : Pas d'échantillonnage
`1"/"p` : Fréquence d'échantilonnage

On adopte ainsi une double notation pour les variables d'états désignant des signaux. La variable `s` possède deux rôles :

Si on souhaite un autre pas d'échantillonnage, on change de repère et on applique une transformation affine. On définira dans la partie 6 ce qu'est un repère sur cette droite du temps, et d'une façon plus générale, ce qu'est un référentiel dans notre univers unidimensionnel. Le théorème de l'échantillonnage nous garantit qu'un signal ne contenant pas de fréquence supérieure ou égale à `f` peut être échantillonné à la fréquence `2f` sans qu'il n'y est aucune perte d'information.

8. La transformée de Fourier discrète (TFD)

La transformée de Fourier discrète peut être abordée comme un outil mathématique, une propriété remarquable sur les `N`-uplets de nombres complexes. Considérons la suite `S` suivante :

`S = (S_0, S_1, S_2, ..., S_(N-1))`

La transformée de Fourier discrète (TFD) de cette suite se note `ℱ(S)` ou simplement `hatS` :

`hatS = (hatS_0, hatS_1, hatS_2,..., hatS_(N-1))`

La TFD est définie comme suit, pour tout entier `n` satisfaisant `0"⩽"n"<"N` :

  `hatS_n = 1/ sqrt(N) sum_(h=0)^(N-1)S_h e^(2πi (nht)/N)`  

C'est une somme de spinos de fréquence `(nh)/N` et de pôle `S_h` `h` parcourt `{0 ".." N}`.

La TFD peut s'appliquer plusieurs fois de suite, et on note  :

`ℱ^2(S)=ccF(ℱ(S)) = ℱ(hatS)=hathatS`

Mais que représente-t-elle ?. Lorque le `N`-uplet `S` est composé de réels de réels, il représente l'échantillonnage de fréquence `F` d'un signal n'admettant pas de fréquence supérieure ou égale à `NF`. Et dans ce cas, le `N`-uplet de pôles `hatS` représente les pôles des composantes de fréquence du signal suivantes :

`0, 1"/"N, 2"/"N, ..., (N-1)"/"N`

6. Les propriétés de la TFD

La transformée de Fourier appliquée 2 fois à un signal, retourne le même signal mais dans le quel le temps est inversé. On note la transformation d'inversion du temps par `ç`. Le choix de `N` est libre et correspond à une troncature arbitraire, un arrêt du signal à un instant donné. Pour tout entier `k` satisfaisant `0"⩽"k"<"N` :

  `ç(S)_k=S_(N-k)`

Nous allons démontrer que `ℱ^2=ç`  c'est à dire que la transformée de Fourier appliquée 2 fois à un signal, retourne le même signal mais dans lequel le temps est inversé. Et donc nous aurons `ℱ^4=ç^2=sf"id"`, c'est à dire que la transformée de Fourier appliquée 4 fois à un signal, retournera le même signal.

On utilise la notation polaire des nombres complexes `[a,alpha] = ae^(ialpha)`. La définition de la TFD se réécrit :

  `hatS_n = 1/ sqrt(N) sum_(h=0)^(N"-"1)S_h [1,2π (n h)/N]`  

On note `hathatS = ℱ(hatS)`. Nous avons donc :

`hathatS = (hathatS_0, hathatS_1, hathatS_2,..., hathatS_(N-1))`

On utilise les indices `h,n,k` respectivement pour les listes `S,hatS, hathatS`, de telle sorte que les éléments de ces listes sont désignés par les expressions suivantes :

`S_h , hatS_n, hathatS_k`    avec    `(h,n,k)"∈"{0 ".." N"-"1}`

L'expression `sum_h` signifie `sum_(h=0)^(N-1)`, de même pour les indices `n` et `k`.

On développe `hathatS = ℱ^2(S)` comme suit :

` hathatS_k = 1/ sqrt(N) sum_(n=0)^(N"-"1)hatS_n[1,2π (k n)/N]`   et    `hatS_n = 1/sqrt(N) sum_(h=0)^(N"-"1) S_h[1,2π (n h)/N]`

` hathatS_k = 1/ sqrt(N) sum_(n=0)^(N"-"1)(1/sqrt(N) sum_(h=0)^(N"-"1) S_h[1,2π (n h)/N])[1,2π (k n )/N]`

` hathatS_k = 1/N sum_n sum_h S_h [1,2π (n h)/N][1,2π (k n )/N]`

` hathatS_k = 1/N sum_n sum_h S_h [1,2π (n h + n k)/N]`

` hathatS_k = 1/N sum_h sum_n S_h [1,2π (h + k)/N]^n`

` hathatS_k = 1/N sum_h S_h sum_n [1,2π (h + k)/N]^n`

On calcul la série géométrique `sum_n [1,2π (h"+" k)/N]^n`. Deux cas peuvent se produirent :

i) Cas où `h = N"-"k`

Dans ce cas `(h"+" k)/N` est entier, et donc `[1,2π (h"+" k)/N]=1`. La série géométrique vaut `N`.

ii) Cas où `h != N"-"k`

`sum_n [1,2π (h"+" k)/N]^n= ([1,2π (h + k)/N]^N-1)/([1,2π (h + k)/N]-1) = 0`

Car `[1,2π (h"+" k)/N]^N = [1,2π (h"+" k)] = 1`, car `h` et `k` sont entiers.

iii) Synthèse

On regroupe les deux cas. La série géométrique vaut :

`sum_n [1,2π (h + k)/N]^n = N"·"(:h"="N"-"k:)`

où le symbole de Kronecker `delta_(N"-"k)^h` et noté de façon explicite par le symbole `(:h"="N"-"k:)`, qui vaut `0` si `h"≠"N"-"k`, et qui vaut `1` si `h"="N"-"k`.

` hathatS_k = 1/N sum_h S_h N (:h"="N"-"k:)`

` hathatS_k =sum_h S_h (:h"="N"-"k:)`

` hathatS_k = S_(N"-"k)`

7. Suite finie et suite périodique

Le `N`-uplets `S` de nombres complexes peut être interprété comme une suite périodique de période indiciaire `N`. Pour tout entier `h` satisfaisant `0"⩽"h"<"N` :

`S_(h+N)=S_h`

On remarque que la transformation de Fourier discrète s'applique de la même façon à un `N`-uplet, qu'à une suite périodique de période `N` pour délors produire une suite périodique de période `N`. En effet, les termes de la somme sont de la forme :

`n|-> [1,2pi (h n)/N]`

`n+N|-> [1,2pi (hn + hN)/N] = [1,2pi (hn)/N + 2pi h] = [1,2pi (h n)/N]`

Et donc ils ont tous au plus une période indiciaire `N`. Leur somme possède donc également au plus une période indiciaire `N`.

8. La TFD inverse

La transformée de Fourier discrète inverse de `S` se note `ℱ^-1(S)` . Et comme nous avons `ℱ^4(S)"="S` , elle est aussi égale à `ℱ^-1(S)"="ℱ^3(S)`.

De la propriété `AA k "∈" {0 ".." N},  ℱ^2(S)_k=S_(N-k)`, on déduit :

`ℱ^3(S)_k=ℱ(S)_(N-k)`

Et comme les `N`-uplets `S`, `ℱ(S)`, `ℱ^2(S)`, `ℱ^3(S)` sont des suites périodiques de période indiciaire `N`, nous avons :

`ℱ^-1(S)_k= ℱ(S)_(-k)`

La transformation inverse se calcule donc presque pareillement que la transformation, elle s'obtient en changeant simplement le signe dans l'expression exponentielle. On la note comme la suite `hatS=ℱ(S)`, simplement par `tildeS"="ℱ^-1(S)`.

`tildeS = (tildeS_0, tildeS_1, tildeS_2,..., tildeS_(N-1))`

La TFD inverse se défini comme suit :

`AA n "∈" {0..N"-"1},  tildeS_n = 1/sqrt(N) sum_(k=0)^(N"-"1) S_k e^(-2πi (n k)/N)`     

Avant d'expliquer la signification des termes de la suite `ℱ(S)` lorsque `S` est un échantillonnage d'un signal complexe, nous commençons par décrire une technique simple d'interpolation en fréquence.

9. L'interpolation en fréquence

Le principe de cette interpolation consiste à déterminer les harmoniques du signal grace à la TFD, pour ainsi pouvoir calculer la valeur du signal à tout instant `t`. La mise en oeuvre de cette interpolation est simple : On effectue la TFD sur un échantillonnage `S`. Puis, à partir de la suite obtenue `ℱ(S)`, on effectue un remplissage par des zéros, dit "zéro padding", en insérant un nombre constant de zéros entre chaque terme de la suite `ℱ(S)`. On obtient ainsi une suite plus grande qui correspond à un pas plus fin de fréquence. Puis on effectue la TFD inverse sur cette suite agrandie en précision en pas de fréquence pour obtenir une suite agrandie en précision en pas de temps, offrant ainsi un échantillonnage plus précis.

Reprenons en détail. On échantillonne un signal périodique de période `T` ne comprenant pas de fréquence supérieur à `F_"max"`, sur une période `T` et en prenant `N` échantillons. Autrement dit, on échantillonne le signal à la fréquence `N"/"T`. On obtient une suite `S` de `N` échantillons.

Le théorème de l'échantillonnage nous assure qu'il n'y a pas de perte d'information si `2F_"max" ⩽ N"/"T`.

Puis on calcule la TFD de `S`. On complète la suite obtenue `ℱ(S)` en insérant après chacune de ses valeurs, `n` zéros en même nombre, comme par exemple :

`(1,2,3) -> (1,0,0,2,0,0,3,0,0)`

Cela change le nombre d'échantillons passant de `N` à `(1"+"n)N`. On a ainsi changer d'échelle en ne gardant que les seuls composantes de fréquences du signal telles qu'elles nous ont été dévoilées par la TFD. Il ne reste alors plus qu'à prendre la TFD inverse pour obtenir le signal initial interpolé en fréquence avec une définition plus grande de `(1"+"n)N` intervalles de temps sur la prériode `T`, c'est à dire avec une fréquence d'échantillonnage plus grande égale à `(1"+"n)N"/"T`.

Cette interpollation n'est pas une approximation. Le calcul est exacte s'il n'existe pas de composante de fréquence supérieures à la demi fréquence de l'échantillonnage initial `N"/"(2T)`. Et c'est justement cette condition qui explique pourquoi les termes rajoutés dans la suite `ℱ(S)` sont nuls.

Cette méthode de remplissage par des zéros dite de "zéro padding" permet de recalculer le signal initial avec un échantillonnage plus fin de `(1"+"n)N` échantillons, c'est à dire avec une fréquence d'échantillonnage plus grande égale à `(1"+"n)N"/"T`.

On peut aussi tout simplement à partir de `hatS` qui est le spectre du signal, calculer la valeur du signal à tout instant `t` par la formule directe :

`f(t) = |hatS_0| + sum_(n=1)^(N-1) |hatS_n| sin(sf"arg"(hatS_n)"+" 2pi n/T t)`  

`f(t) = |hatS_0| + |hatS_1|sin(sf"arg"(hatS_1) "+" 2pi 1/T t) + |hatS_2|sin(sf"arg"(hatS_2) "+" 2pi2/T t) + ... + |hatS_("("N-1")")|sin(sf"arg"(hatS_("("N-1")"))"+" 2pi(N-1)/T t)`

Il existe un algorithme de calcul de la transformée de Fourier rapide (FFT) qui évite de recalculer plusieurs fois des calculs intermidiaires et qui est de complexité en `O(N ln(N))`.




oOo
 

 


Dominique Mabboux-Stromberg

 

Précédent
Sommaire
Suivant