


Next:About
this document ...Up: Previous:TP
4 : FiltrageContents
Subsections
TP 5 : Récupération
et traitement de données expérimentales
Les programmes nécessaires pour ce TP sont disponibles à
l'adresse :
http://www.univ-lemans.fr/~s973476/filtres/tp5.zip
Ce TP présente différentes manières d'importer et
d'exporter des données expérimentales depuis Matlab en vue
de leur traitement automatique pour l'extraction de paramètres.
En particulier sont abordés les problèmes du bon choix de
la fréquence d'échantillonage ainsi que de la dynamique des
signaux, lors de la mesure. L'application propose d'analyser un signal
issu de mesures réalisées sur un oscilloscope numérique.
Importation - Exportation de
données
Un fichier de mesure va être constitué d'une suite de nombres
ordonnés et codés suivant différents formats :
-
entiers, sur 2, 4, 8, 16 ou 32 bits (int). Le premier bit peut être
un bit codant le signe, on parle alors d'entiers signés par ooposition
aux entiers non-signés. Un entier signé codé sur N
bits prend des valeurs dans l'intervalle
et un entier non signé des valeurs sur l'intervalle
.
-
réels, codés en virgule flottante (float) Matlab permet
de lire et d'écrire tous les types de fichiers et quelques format
standards sont connus.
-
Caractères, les nombres sont alors écrit en texte.
Ce format est presque un standard et de nombreux appareils permettent de
stocker les mesures sous forme de fichier texte. C'est le format ASCII.
De plus, de nombreux fichiers contiennent d'autres informations que les
mesures, telles que la fréquence d'échantillonnage, le nombre
de bits utilisés pour coder chaque échantillon, les noms
des variables, la taille des données, ...Ces informations sont toujours
stockées au début du fichier et constituent l'entête
du fichier. Cette entête est souvent propre à un type de fichiers
et fait l'objet d'une normalisation pour les fichiers de même extension.
Matlab possède son propre format de fichier permettant de sauver
et de récupérer des variables numériques telles que
des filtres ou des signaux générés dans l'environnement
de travail. Matlab propose aussi de nombreuses fonctions permettant de
récupérer mais aussi d'écrire des fichiers de tous
types : sons au format WAV ou AU, fichiers textes, feuilles de calcul excell,
vidéos au format AVI, .... Les dernières versions du logiciel
proposent toujours plus de compatibilité avec d'autres format. La
liste des fonctions d'importation/exportation disponibles pour la version
est donnée par
help iofun (input/output).
De manière générale, l'importation/exportation
se fait soit par les commandes load et save, soit par les
commandes fread et fwrite du C, suivant les fichiers :
-
Les fichiers ayant l'extension '.mat', correspondant au format matlab,
se chargent par la commande.
>> load nomfichier
Il se peut qu'un fichier matlab contienne de nombreuses variables. On vérifiera
près chargement, quelles ont été les variables importées
dans l'espace de travail et leur taille par la commande whos. Différentes
variables se sauvent dans un fichier matlab par la commande :
>> save nomfichier var1 var2 var3
Les fichiers de type ASCII qui peuvent prendre n'importe quelle extension
(`.txt' ou n'importe quelle autre extension) car les données sont
écrites sous forme de caractères. C'est le format le plus
universel !! Une option de la commande load permet de lire ce
type de fichiers :
>> load nomfichier -ASCII
Les autres fichiers, dont on connaît le format, c'est-à-dire
la façon dont sont codés les nombres, sont lus comme en C
par la fonction fread. Elle s'utilise de la manière suivante
:
Les parties suivantes ont pour but d'illustrer les différents cas
d'échange et importation de données.
Lecture de fichiers Matlab
C'est le cas le plus simple d'utilisation des fonctions load et
save,
il suffit de mettre le nom du fichier sans extension (si l'extension est
`*.mat').
-
Chargez le fichier matlab appelé metro16k. Il s'agit d'un
fichier contenant un enregistrement de métronome à 16kHz,
en présence d'un bruit électrique de fréquence 50Hz
-
Quelles sont les variables qu'il contient, quelle est leur type respectif,
que contiennent-elles ?
-
Créez un filtre permettant de supprimer le bruit de 50Hz et observez
le signal obtenu après filtrage. Quel type de filtre faut-il utiliser
?
-
Sauvez le son débruité dans un fichier matlab appelé
``metro16kdebruite.mat''.
lecture de fichiers ASCII
Un fichier de mesures a été récupéré
sur un oscilloscope numérique au format ASCII. La mesure était
une mesure de propagation dans un milieu poreux. Le signal récupéré
après propagation est dans le fichier ``biot.zine''. Il contient
d'une part un axe des temps et d'autre part les valeurs mesurées
aux temps correspondants.
-
Chargez le fichier grace à la commande >> load 'biot.zine' -ASCII.
Une fois chargée, la variable lue porte le nom du fichier sans l'extension.
-
Quelle est la taille du fichier, à quoi correspond chaque colonne
(afficher les pour savoir ce qu'elles représentent) ?
-
Retrouvez grace à l'axe des temps la fréquence d'échantillonnage
de ce signal.
-
En observant le spectre de ce signal, vous semble-t-il bien échantillonné
? Quelle fréquence d'échantillonnage aurait été
suffisante pour la mesure ? Conclure sur la pertinence de la mesure en
terme de résolution fréquentielle.
Lecture de fichiers sons
Le format `.wav' est le standard des fichiers sons proposés par
Windows (tout comme le format `.au' est le standard d'Unix). La commande
wavread vous permet de lire directement ces fichiers ou d'obtenir
les informations présentes dans l'entête de ces fichiers.
Nous allons ici comparer les fichiers obtenus par wavread et par fread
sur un fichier sonore.
-
Regardez l'aide de la fonction wavread et chargez le fichier 'son1.wav'.
Trouvez aussi sa fréquence d'échantillonage et le nombre
de bits sur lequel il est codé.
-
On va maintenant récupérer le contenu total du fichier par
la commande fread. Il est à noter que cette commande s'utilise
de la même manière dans les langages C et Matlab. Regardez
l'aide de la fonction fread et procédez de la manière
suivante, en expliquant les différentes étapes.
>> fid = fopen('son1.wav','r');
>> son_lu = fread(fid,inf,'int16');
>> fclose(fid);
Comparez la variable son_lu avec la variable issue de wavread. Ont-elles
la même taille ?
Affichez ces deux variables et conclure sur la taille de l'entête
du fichier.
Remarques
Les fonctions wavwrite ou auwrite permettent l'écriture
des sons aux format `.wav' et `.au'. Il est donc possible d'effectuer tout
traitement imaginable sur un son (retournement, effets, changement de la
fréquence d'échantillonnage, ...) puis de l'écouter
sur une machine munie d'une carte son.
Échanges de données
avec Excel
L'échange de données entre Matlab et Excel est possible par
le biais de fichiers au format ASCII. toutefois, il subsiste quelques astuces
mentionnées ci-dessous. La version 6 de Matlab propose des fonctions
permettant d'importer et d'exporter directement les feuilles de calcul
Excel.
Matlab
Excel
L'option -TABS de la fonction save permet lors de la sauvegarde
d'une variable de Matlab en fichier ASCII de séparer chaque nombre
par une tabulation. Dès lors sous Excel, il vous suffit d'ouvrir
le fichier comme un fichier texte, dans le menu ``Fichier|Ouvrir...
''. Une fenêtre s'ouvre alors vous demandant de choisir le type
de séparateur utilisé, et il faut cocher la case
Tabulation.
Vos données doivent normalement s'afficher sous forme de tableau
ou de vecteur.
Il reste alors une dernière modification à faire car Matlab
utilise un
point comme séparateur entre les parties entière
et décimale d'un nombre tandis qu'Excel utilise une virgule.
Pour cela, dans le menu ``Édition|Remplacer'' mettre ``Chercher''
: ``.''et ``Remplacer par'' : ``,''.
-
Sauvez le filtre débruiteur généré précédemment
dans un fichier ASCII.
-
Ouvrez sous Excell et changez les virgules en points.
-
Créez un graphique sous Excel affichant la RI du filtre.
Excel
Matlab
Il suffit de sauver les données de la feuille Excel au format texte,
puis d'exécuter le petit script suivant en adaptant le nom du fichier
`.txt'. Le résultat est stocké dans la variable de maltab
fictmp. Le script est fourni sur la disquette de programmes sous
le nom xls2mat.m.
nomfic = 'nom_du_fichier_xl.txt';
% Ouvre et lit le fichier nomfic dans la variable texte
fid = fopen(nomfic,'r');
texte = fread(fid,inf,'char');
fclose(fid);
% Conversion des virgules (caractère 44) en points (caractère 46)
texte(find(texte ==44)) = 46;
% Sauvegarde du fichier dans un fichier temporaire au bon format
fid = fopen('fictmp.txt','wb');
fseek(fid,0,-1);
fwrite(fid,texte,'char');
fclose(fid);
% Chargement du fichier temporaire
load 'fictmp.txt' -ascii
% Effacement du fichier temporaire
delete 'fictmp.txt'
-
À titre d'exemple, ouvrez Excel, rentrez dans une colonne des valeurs
de -10 à 10, puis calculez dans les colonnes adjacentes le carré
et l'inverse de cette colonne.
-
Créez un graphique dans une autre feuille
-
Sauvez le tableau dans un fichier au format texte.
-
Depuis matlab, exécuter le script xls2mat et vérifiez
que les données contenues dans la variable fictmp correspondent
aux données d'Excel.
-
Affichez les données graphiquement sous Matlab.



Next:About
this document ...Up: Previous:TP
4 : FiltrageContents
GONON Gilles 2001-10-02