Il existe plusieurs techniques de calcul pour estimer l’occupation spectrale d’un signal radio. Les logiciels utilisent généralement la transformée de Fourrier rapide (FFT – Fast Fourier Transform) qui permet de décomposer un signal temporel en une multitude de “canaux” à bande étroite.
Les applications de radio logicielle exploitent cette méthode pour l’affichage de type “chute d’eau” (waterfall). Il existe plusieurs techniques différentes d’analyse spectrale et la FFT n’est pas toujours la meilleure, comme illustré ici.
L’exemple est construit autour d’un signal reçu sur 115.2 MHz et enregistré avec mon application de radio logicielle “gkSDR”, traité ensuite sous Matlab. Voici à quoi ressemble le signal, visualisé par FFT sur l’interface utilisateur :
Quelques secondes de signaux sont stockées sur disque et analysées sous Matlab. Je commence par calculer le spectrogramme (correspondant à la partie inférieure ‘bleue’ de la capture d’écran). Le signal enregistré sur 20 KHz est traité avec des FFT de 256 points (on a donc une résolution de 20000/256 Hz par point, soit 78.125 Hz).
Dans cette image calculée, le temps s’écoule à l’horizontal contrairement au logiciel gkSDR. On voit bien une raie très forte autour de 115.2 MHz et quelques signaux plus faibles de part et d’autre. Si l’on moyenne dans le temps ce spectrogramme, on obtient un “spectre moyen”, correspondant à l’occupation spectrale du signal sur la période enregistrée (ici 8 secondes) :
Notre signal à 115.2 MHz n’est plus “aussi propre” que sur la copie d’écran du haut. Ce n’est pas un problème de bruit du récepteur, mais un problème lié à la méthode de calcul… On aimerait bien pouvoir “regarder” le signal autour de 115.2 pour avoir une idée de la largeur de bande réelle du signal émis. Cet effet de “fuites” est en réalité inhérent à la transformée de Fourier, il peut être compensé par l’utilisation d’une “fenêtre” (Blackmann, Hamming etc – voir Wikipedia pour plus de détails). Notre FFT a une résolution de 78.125 Hz… si un signal est “entre deux”, il s’étale …
Ce site donne un exemple de l’effet de “fuite” sur un simple signal sinusoïdal :
Dans le domaine temporel (à gauche) on a bien un signal “propre”, sinusoïdal, alors que le spectre obtenu par transformée de Fourier à droite ne comporte pas qu’une seule “raie” comme on s’y attendrait.
Comment faire pour retrouver un spectre “comme on voudrait” ? et bien en faisant comme dans un analyseur de spectre analogique, en faisant une batterie de filtres passe-bande très étroits suivis d’un simple détecteur d’énergie (diode ;-) ). L’algorithme employé s’appelle “filtrage polyphase” (polyphase filter bank – pfb) et permet de décomposer un signal temporel “large bande” en une série de signaux temporel “bande étroite”, comme si on avait divisé notre signal d’entrée pour alimenter une série de filtres ne se recouvrant pas et très sélectifs.
Toujours grâce à Matlab, les signaux traités précédemment sont maintenant analysés avec un filtre polyphase comportant 256 bandes de filtres pour rester dans les mêmes conditions.
L’échelle de couleurs est un peu différente mais on reconnaît bien notre signal d’origine et les niveaux relatifs des différentes traces semblent plus en accord avec notre visualisation “temps réel chute d’eau” du début. On remarque également une petite bande bleue à gauche du graphique, elle est la conséquence des retards introduits par nos 256 filtres bande étroite. Regardons maintenant le spectre résultant, moyenné sur la totalité, comme dans l’exemple de la FFT:
L’effet de “fuites” a disparu, on voit d’ailleurs apparaître un signal faible qui était masqué dans le spectre FFT moyen…
Le filtrage polyphase est la base du traitement d’imagerie en radio astronomie, à suivre dans un prochain épisode…
Pour aller plus loin, lire Wikipedia (anglais)