Florence Nicol Unité de Neurosciences Cognitives Université Catholique de Louvain Louvain-la-Neuve, Belgique florence.nicol@psp.ucl.ac.



Documents pareils
URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Programmation impérative

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Introduction à MATLAB R

Projet Matlab : un logiciel de cryptage

Rappels Entrées -Sorties

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Les chaînes de caractères

Programmation système I Les entrées/sorties

Bases de programmation. Cours 5. Structurer les données

Algorithmique et Programmation, IMA

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Structure du format BMP, sa lecture, sa construction et son écriture

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Séance 0 : Linux + Octave : le compromis idéal

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Compléments de documentation Scilab : affichage de texte et formatage de nombres

Le langage C. Séance n 4

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours Informatique 1. Monsieur SADOUNI Salheddine

Informatique Générale

UE Programmation Impérative Licence 2ème Année

Les fichiers. Chapitre 4

TP : Gestion d une image au format PGM

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Chap III : Les tableaux

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Chapitre 10 Arithmétique réelle

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Algorithmique et programmation : les bases (VBA) Corrigé

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

MÉTHODES NUMERIQUES. Cours. Licence de Physique Année Universitaire : Licence Chimie, parcours Physique. Semestre S3

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Plan du cours. Historique du langage Nouveautés de Java 7

Avertissement : Nos logiciels évoluent rendant parfois les nouvelles versions incompatibles avec les anciennes.

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

Logiciel de Base. I. Représentation des nombres

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Gestion des données avec R

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Vous venez d acquérir un fichier de données issues de la Base de données SIRENE. Comment utiliser votre fichier?

Programmation C. Apprendre à développer des programmes simples dans le langage C

RECOPLUS LOGICIEL DE GESTION DES RECOMMANDES NOTICE D UTILISATION DE RECOPLUS RESEAU. N de série

3.2. Matlab/Simulink Généralités

Cours d initiation à la programmation en C++ Johann Cuenin

ReadCard Guide Utilisateur

Organiser le disque dur Dossiers Fichiers

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

IMPORTATION, CRÉATION, MANIPULATION, EXPORTATION DE DONNÉES STATISTIQUES

TP Codage numérique des caractères. Un ordinateur ne manipule que des 0 et des 1 : Comment alors code-t-il du texte?

Le système de gestion des fichiers, les entrées/sorties.

Service des ressources informatiques - Conseil Scolaire de District Catholique Centre-Sud Page 1

Programmation en langage C

L informatique en BCPST

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Windows Internet Name Service (WINS)

The Grid 2: Manuel d utilisation

Méthode de préparation du fichier texte d import depuis Excel, via Access jusqu à Drupal.

Logiciel ArpentGIS-PC Guide de l utilisateur

EXCEL TUTORIEL 2012/2013

TD : Codage des images

Créer et modifier un fichier d'import des coordonnées approximatives avec Excel

CAPTURE DES PROFESSIONNELS

Principe de fonctionnement du lanceur d'application "AdisTlsStartCfgLotus"

Formats d images. 1 Introduction

nom : Collège Ste Clotilde

La Clé informatique. Formation Excel XP Aide-mémoire

Seniors/Niveau 2. Connaissances préalables requises. Pour accéder au niveau 2, il faut être capable de:

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de

Cahier n o 6. Mon ordinateur. Fichiers et dossiers Sauvegarde et classement

Codage d information. Codage d information : -Définition-

GUIDE D UTILISATION DE L ISU SEPTEMBRE 2013 GUIDE D UTILISATION DU NAVIGATEUR UIS.STAT (VERSION BÊTA)

Introduction au langage C

Une chaîne de caractères est toute suite de caractères placés entre guillemets.

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

Cours de Système : Gestion de Fichiers

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Gestion de gros fichiers binaires (images) en APL*PLUS III

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

Guide de l utilisateur Mikogo Version Windows

TP 1. Prise en main du langage Python

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Manuel de formation Spaceman 1 ère journée

Fascicule u7.05 : Impression de résultat pour visualisation

Support de formation Notebook

R01 Import de données

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

Ouvrir le compte UQÀM

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Projet Matlab/Octave : segmentation d'un ballon de couleur dans une image couleur et insertion d'un logo

Analyse d images. Edmond.Boyer@imag.fr. Edmond Boyer UFRIMA 1

Présentation du langage et premières fonctions

Conventions d écriture et outils de mise au point

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Support de TD ArcGIS Introduction à l automatisation et au développement avec ArcGIS 10.1 JEAN-MARC GILLIOT e année ingénieur

Manuel utilisateur GSM

Utilitaires méconnus de StrataFrame

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

Transcription:

Florence Nicol Unité de Neurosciences Cognitives Université Catholique de Louvain Louvain-la-Neuve, Belgique florence.nicol@psp.ucl.ac.be 05 Mai 2004 F.Nicol - Matlab E/S - 1

Plusieurs formats d affichage : short = format court à 5 chiffres (par défaut) long = format long à 15 chiffres short e = format court à 5 chiffres en virgule flottante long e = format long à 15 chiffres en virgule flottante short g = meilleur des deux formats courts à 5 chiffres long g = meilleur des deux formats longs à 15 chiffres Commande format :» Imposer un format d affichage Ex : pi format long pi format revenir au format par défaut pi Remarque : le format d affichage est différent du format de calcul qui se fait en double précision (de 10-308 à 10 +308 ) F.Nicol - Matlab E/S - 2

Commande disp : disp(a) disp( texte ) disp([ texte,num2str(a)])» permet d afficher un tableau de valeurs numériques ou de caractères» affichage du tableau sans écrire le nom de la variable» toutes les valeurs du tableau à afficher doivent être du même format (soit du texte soit des valeurs numériques) Ex : convertir les données numériques en une chaîne de caractères commande num2str(a) («number to string») Ex : A = magic(5); matrice 5*5 du carré magique disp(a) A disp( hello ) disp([ hello, le déterminant du carré magique est :,num2str(det(a))]) F.Nicol - Matlab E/S - 3

Commande input var = input( un texte )» permet de demander à l utilisateur de saisir des données numériques» les données numériques saisies à la suite du texte seront affectées à la variable var» la fin de la saisie est provoquée par un retour chariot var = input( un texte )» entrer une chaîne de caractères (numériques ou alphabétiques) Ex1 : x = [1 2 3]; rep = input( entrer le vecteur x : ); %saisir x ou 1 2 3 disp([ le vectuer est :, num2str(rep)]); Ex2 : rep=input( Voulez-vous continuer le cours?(oui/non) :, s ); disp([ la réponse est :,rep]) F.Nicol - Matlab E/S - 4

Importer des données : charger des données dans l espace de travail à partir d un fichier Exporter des données : sauver des variables de l espace de travail dans un fichier Dans Matlab, plusieurs fonctions selon le format des données : format texte : codes ASCII (American Standard Code for Information Interchange) format binaire : images, sons, Autres formats :» format HDF (Hierarchical Data Format) : format standard pour échange de données scientifiques» format Matlab MAT = fichier binaire spécifique à Matlab, sert à sauver les variables d un espace de travail Fonctions d Entrée/Sortie de bas niveau : utilisables avec tout format de données» basées sur les fonctions d E/S de la bibliothèque du langage standard ANSI-C (langage très répandu de programmation structuré et très près du langage machine) F.Nicol - Matlab E/S - 5

Format des données : Format texte : les données sont des codes ASCII (American Standard Code for Information Interchange) adopté comme standard dans les années 60 stocker les caractères par son équivalent en code numérique sur 8 bits (256 caractères possibles)» caractères numériques et alphabétiques» visualisation dans un éditeur de texte Format binaire : pas code ASCII et non visualisable dans un éditeur de texte plus compact qu un format texte (moins d espace dans la mémoire vive)» Images, sons ou autres formats (format MAT) Autres formats : HDF (Hierarchical Data Format) format développé par NCSA (National Center for Supercomputing Applications)» Échange de données graphiques ou numériques» Offre des performances en lecture/écriture comparable au format binaire» Portabilité entre machines F.Nicol - Matlab E/S - 6

Utiliser l assistant d importation :» facilité d utilisation» opère sur la plupart des fichiers de données numériques Utiliser les fonctions Matlab d importation :» utilisation plus complexe des lignes de commande» opérations d importation dans un fichier M (cf Programmation)» opère sur des fichiers de données numériques mais aussi alphabétiques Remarque :» quand on importe des données dans l espace de travail, les variables existantes sont automatiquement écrasées F.Nicol - Matlab E/S - 7

Utiliser l assistant d importation : Etape 1 : menu File>Import Data ou commande uiimport Ex : dans C:\MATLAB6p5\work Importer le fichier grades.txt F.Nicol - Matlab E/S - 8

Etape 2 : sélectionner un fichier visualisation d une partie du fichier et des données ou copier les données à partir du fichier texte Menu Edit>Paste Special ou sélectionner l option Clipboard F.Nicol - Matlab E/S - 9

Etape 3 : spécifier le caractère qui délimite les données dans data : toutes les données numériques du fichier dans textdata : tout le texte du fichier dans rowheaders : le texte dans la colonne la plus à gauche des données dans colheaders : le texte dans la ligne la plus en haut L assistant reconnaît les fichiers qui utilisent des entêtes texte et les extrait comme des variables séparées. Il peut aussi ignorer ces lignes dans Textheader lines (nb de lignes ignorées). F.Nicol - Matlab E/S - 10

Etape 4 : par défaut, les variables numériques et texte sont importées dans des variables séparées variable data : les données numériques variable textdata (rowheaders et colheaders) : les données texte Pour créer une variable correspondant à chaque ligne (ou chaque colonne) de données et utiliser le texte en entête comme nom des variables : choisir l option «Create vectors from each» Etape 5 : Sélectionner les variables à importer F.Nicol - Matlab E/S - 11

Format des données : Fonctions :» présentation uniforme de lignes et de colonnes» séparateur : caractère texte délimitant chaque item (ex : espace, virgule, point-virgule, tabulation, )» données numériques ou alphabétiques» possibilité d une ou plusieurs lignes texte d entête ainsi que des étiquettes des lignes et des colonnes commande load : données numériques, caractère séparateur espace seulement commande dlmread : données numériques, tout caractère séparateur commande csvread : données numériques, caractère séparateur virgule seulement commande textread : données numériques avec texte d entête commande fscanf : fonction d Entrée/Sortie de bas niveau F.Nicol - Matlab E/S - 12

Commande load données numériques seulement caractère séparateur espace seulement même nombre d éléments dans chaque ligne load nomfich.ext» importe dans l espace de travail les données contenues dans le fichier nomfich.ext et créé la variable nomfich contenant les données dans l espace de travail» par défaut, la commande load cherche à importer un fichier.mat si aucune extension.ext n est pas spécifiée Ex : load gradesload.txt; A=load( gradesload.txt ); importe les données du fichier dans l espace de travail charge les données du fichier dans la variable A A = load( nomfich.ext )» retourne dans le tableau A le contenu du fichier nomfich.ext F.Nicol - Matlab E/S - 13

Commande dlmread données numériques tout caractère séparateur A= dlmread( nomfich.ext, séparateur,range)» retourne dans la variable A les données ASCII du fichier nomfich.ext délimitées par le caractère séparateur séparateur» séparateur =, séparateur virgule (par défaut) ; séparateur point-virgule \t séparateur tabulation etc» range = [R1 C1 R2 C2] : vecteur définissant le bloc de données à importer (les lignes et les colonnes sont comptées à partir de 0) - R1 et C1 = position (resp. ligne et colonne) du coin supérieur gauche - R2 et C2 = position (resp. ligne et colonne) du coin supérieur droit - par défaut, [R1 C1 R2 C2] = [0 0 N M] où N est le nombre de lignes et M le nombre de colonnes du fichier nomfich.ext F.Nicol - Matlab E/S - 14 0 1 2 Ex : A=dlmread('gradesdlm.txt',';') A = 0 85 90 95 1 90 92 98 2 100 95 97 3 77 86 93 4 89 95 98 5 92 93 99 A=dlmread('gradesdlm.txt',';',[1 0 3 2]) A = 90 92 98 100 95 97 77 86 93

Commande csvread Commande fscanf données numériques seulement caractère séparateur virgule seulement A = csvread( nomfich.ext, R, C, range)» retourne dans la variable A les données ASCII du fichier nomfich.ext délimitées par le caractère séparateur virgule uniquement» R et C = position (resp. ligne et colonne) de début de lecture des données dans le fichier (par défaut, R = 0 et C = 0)» range = [R1 C1 R2 C2] : vecteur définissant le bloc de données à importer - R1 et C1 = position (resp. ligne et colonne) du coin supérieur gauche (correspondants à R et C) - R2 et C2 = position (resp. ligne et colonne) du coin supérieur droit» cf. fonctions d Entrée/Sortie de bas niveau F.Nicol - Matlab E/S - 15

Commande textread données numériques et données texte A = textread( nomfich.ext, format, param,value)» format = format des données ex : %f lit un nombre à virgule flottante %s lit les caractères jusqu au séparateur %*f ignore les nombres à virgule flottante» param = paramètres supplémentaires prenant les valeurs value ex : delimiter = caractère séparateur (par défaut caractère espace) headerlines = nombre de lignes d entête du fichier à ignorer emptyvalue = valeur d une cellule manquante entre deux séparateurs (par défaut 0) matlab = les caractères suivant % sont ignorés (lignes de commentaires de Matlab) c = les caractères entre /* et */ sont ignorés (lignes de commentaires du langage C) F.Nicol - Matlab E/S - 16

Utiliser l assistant d importation :» facilité d utilisation Utiliser les fonctions Matlab d importation :» utilisation plus complexe des lignes de commande» opérations d importation dans un fichier M (cf. Programmation)» opère sur des fichiers dans différents formats Remarque :» quand on importe des données dans l espace de travail, les variables existantes sont automatiquement écrasées F.Nicol - Matlab E/S - 17

Utiliser l assistant d importation : Etape 1 : menu File>Import Data ou commande uiimport Ex : dans C:\MATLAB6p5\toolbox\matlab\demos Importer le fichier mri.mat Importer le fichier ngc6543a.jpg F.Nicol - Matlab E/S - 18

Etape 2 : sélectionner un fichier visualisation d une partie du fichier et des données F.Nicol - Matlab E/S - 19

Etape 4 : par défaut, les variables numériques et texte sont importées dans des variables séparées Visualisation des données Etape 5 : Sélectionner les variables à importer F.Nicol - Matlab E/S - 20

Format des données : Fonctions :» fichiers audio : fichiers *.au et *wav» fichiers audio-video : fichiers *.avi» fichiers images : fichiers *.jpeg, *.tiff, *.bmp, *.giff,» fichiers Matlab : fichiers *.mat» fichiers classeurs : fichiers excel *.xls, fichiers lotus *.wk1» fichiers HDF : cf. fichiers hdf commande auread : importe des données audio de format Sun Microsystems commande wavread : importe des données audio de format Windows commande aviread : importe des données audiovisuelles de format AVI commande imread : importe des données images de différents formats commande load : importe des données variables Matlab de format MAT commande xlsread : importe des données de format classeur Excel commande wk1read : importe des données de format classeur Lotus commande hdf : importe des données de format hdf F.Nicol - Matlab E/S - 21

Exporter des données dans différents formats ASCII Les fonctions utilisées dépendent de la quantité de données à exporter et de leur format Fonctions : Commande diary :» tableaux numériques ou de caractères» petits tableaux» séparateur espace seulement Commande dlmwrite :» données numériques» séparateur : tout caractère Commande save :» données numériques» séparateur : espace ou tabulation Commande fprintf :» données numériques et alphabétiques» fonction d Entrée/Sortie de bas niveau F.Nicol - Matlab E/S - 22

Commande save : save nomfich.txt var1 var2 var3 -ASCII -TABS» exporte les variables var1 var2 et var3 dans le fichier nomfich.txt au format ASCII (séparateur espace par défaut ou tabulation si option -TABS)» par défaut, exporte les données dans un fichier.mat si l option -ASCII n est pas spécifiée Ex1 : save exsave1.txt gradesload ASCII Ex2 : A=[1 2 3; 4 5 6]; B=[7 8 9; 10 11 12]; C=[13 14; 15 16]; D= hello ; save exsave2.txt A -ASCII save exsave3.txt A B -ASCII save exsave4.txt A B C -ASCII save exsave5.txt D ASCII (sauve le code ASCII équivalent aux caractères) F.Nicol - Matlab E/S - 23

Commande dlmwrite : dlmwrite( nomfich.txt,m, séparateur )» exporte le tableau M dans le fichier nomfich.txt au format ASCII» séparateur : tout caractère (qui apparaît entre les items sauf en fin de ligne), = virgule (par défaut) = espace = pas de séparateur Ex : dlmwrite( exdlm1.txt,a) par défaut, séparateur virgule dlmwrite( exdlm2.txt,a, ; ) séparateur ; dlmwrite( exdlm3.txt,a, ) pas de séparateur F.Nicol - Matlab E/S - 24

Commande diary :» crée une copie de la session Matlab et de toutes les commandes exécutées dans un fichier (excepté les graphiques) diary nomfich.txt;.... diary off;» ouvrir le fichier nomfich.txt dans un éditeur de texte pour supprimer les lignes de texte superflues» Si le fichier existe déjà, les données exportées sont placées à la fin du fichier (les données existantes ne sont pas écrasées) Ex : diary exdiary.txt; A; B; C; D; diary off; diary exdiary.txt help diary; diary off; Ouvrir le fichier exdiary.txt et supprimer les lignes de texte superflues F.Nicol - Matlab E/S - 25

Exporter des données dans différents formats binaires Les fonctions utilisées dépendent du format des données Fonctions : commande auwrite : exporte des données audio dans le format Sun Microsystems commande wavwrite : exporte des données audio dans le format Windows commande aviwrite : exporte des données audio-vidéo dans le format AVI commande addframe : capture les clichés et les sauvegarde dans un fichier AVI commande imwrite : exporte les données images dans différents formats (*.jpeg, *.tiff, *.bmp, *.giff, ) commande wk1write : exporte les données dans le format classeur Lotus commande save : exporte des variables Matlab dans le format MAT commande hdf : exporte les données dans le format HDF F.Nicol - Matlab E/S - 26

Sauvegarder une séquence de graphiques dans une animation Matlab :» Sauvegarder l animation dans le format MAT : nécessite Matlab pour visualiser la séquence» Sauvegarder l animation dans le format audio-video AVI Création d une animation au format AVI» Créer un fichier AVI : commande avifile aviobj=avifile( nomfich.avi, Propriété,valeur, ) crée un fichier nomfich.avi et retourne un objet fichier AVI avec des propriétés spécifiées ex : fps = nombre de cadres par seconde colormap = matrice définissant la palette de couleurs» Capturer la séquence de graphiques dans un fichier AVI : commande addframe» Ecrire et fermer le fichier AVI : commande close Convertir une animation Matlab existante en fichier AVI :» Commande movie2avi F.Nicol - Matlab E/S - 27

Très similaires aux fonctions C d entrée/sortie Si un format de données n est pas supporté par une fonction Matlab de haut niveau, on peut utiliser les fonctions de bas niveau si on sait comment les données sont formatées Toutes les opérations sur un fichier (lecture et écriture de données) doivent se faire entre des commandes d ouverture et de fermeture de fichiers Structure : Ouvrir un fichier...... Fermer le fichier Fonctions d entrée/sortie F.Nicol - Matlab E/S - 28

Avant toute opération sur un fichier : commande fopen fid=fopen( nomfich.ext, permission )» ouvre un fichier nomfich.ext et renvoie un identificateur de fichier fid utilisé comme argument dans les autres fonctions d entrée/sortie» accès au fichier requis : permission r ouvre en lecture seulement un fichier existant (par défaut) w ouvre en écriture seulement un fichier existant ou créé un nouveau fichier; efface le contenu du fichier a idem w mais le contenu n est pas effacé; placera les nouvelles données écrites à la fin du fichier r+ ouvre en lecture et en écriture un fichier existant placera les nouvelles données écrites en début de fichier et écrasera le contenu du fichier w+ ouvre en lecture et en écriture un fichier existant ou crée un nouveau fichier; efface le contenu du fichier a+ idem w+ mais le contenu n est pas effacé placera les nouvelles données écrites à la fin du fichier La commande fopen retourne un entier non négatif (identificateur de fichier) [fid,message]=fopen( nomfich.ext, permission )» fid = -1 si fopen produit une erreur (ouvrir un fichier qui n existe pas)» message d erreur (dépend du système d exploitation) F.Nicol - Matlab E/S - 29

Après toute opération sur un fichier : commande fclose status=fclose(fid)» ferme un fichier identifié par fid lors de son ouverture par la commande fopen» renvoie un entier : 0 si le fichier est correctement fermé 1 si fclose a produit un erreur à la fermeture status = fclose( all )» ferme tous les fichiers ouverts Matlab ferme automatiquement tous les fichier ouverts lors d une session dès qu on quitte la session Matlab F.Nicol - Matlab E/S - 30

Localisation de données temporaires :» commande tempdir : retourne le nom du répertoire temporaire» commande tempname : génère un nom de fichier temporaire pour gérer des données temporaires Ex : manipulation de données dans un fichier temporaire fid=fopen(tempname, w ). fonctions d entrée/sortie. fclose(fid) F.Nicol - Matlab E/S - 31

Commande fread : A=fread(fid, taille, précision )» lit tout ou partie d un fichier binaire identifié par fid lors de son ouverture et retourne les données dans une matrice A» taille : étendue des valeurs lues dans le fichier N = lit les N premières valeurs du fichier inf = lit jusqu à la fin du fichier (par défaut) [n m] = lit les valeurs du fichiers arrangées dans un tableau n*m» précision : contrôle le type des données de chaque valeur (caractère, entier, nombre à virgule flottante) char et uchar = caractères signés et non signés (8 bits) short et long = entiers courts et longs (16 et 32 bits) float et double = valeurs à virgule flottante de précision simple et double (32 et 64 bits) (option par défaut) Visualiser les données : disp(a)» affiche le contenu d un tableau de valeurs numériques A sans afficher le nom de la variable» affiche le texte si A est une chaîne de caractères F.Nicol - Matlab E/S - 32

Commande fwrite : count=fwrite(fid, A, précision )» écrit les éléments d une matrice A dans un fichier identifié par fid et les enregistre dans un format numérique spécifié par précision» retourne le nombre de valeurs écrites dans le fichier» précision : contrôle le type des données de chaque valeur (caractère, entier, nombre à virgule flottante) char et uchar = caractères signés et non signés (8 bits) short et long = entiers courts et longs (16 et 32 bits) float et double = valeurs à virgule flottante de précision simple et double (32 et 64 bits) F.Nicol - Matlab E/S - 33

Commande fscanf : Commande sscanf : A=fscanf(fid, format,taille)» lit un fichier texte identifié par fid et retourne les données dans une matrice A» format : interprétation des données %s = interprète une chaîne de caractères %d = interprète des entiers %e, %f et %g = nombres à virgule flottante %*d = ignore les valeurs entières dans les données» taille : étendue des valeurs lues dans le fichier N = lit les N premières valeurs du fichier inf = lit jusqu à la fin du fichier (par défaut) [n m] = lit n*m éléments du fichier arrangés dans un tableau n*m A = sscanf(s, format, taille)» lit des données à partir d une chaîne de caractères S plutôt que d un fichier» retourne les données dans une matrice A et les convertit en un format spécifié par précision» taille : étendue des valeurs lues dans le fichier (même option que fscanf) Ex : S = '2.7183 3.1416'; A = sscanf(s,'%f') lit les éléments de S, les convertit en valeurs numériques à virgule flottante et les retourne dans la matrice A F.Nicol - Matlab E/S - 34

Commande fprintf : count = fprintf(fid, format,a)» écrit les données de la matrice A dans un fichier identifié par fid» retourne le nombre de bytes écrit dans le fichier» format : interprétation des données %s = interprète une chaîne de caractères %d = interprète des entiers %e = notation exponentielle %f = valeurs décimales à virgule fixe \n = retour à la ligne \t = espace tabulation Ex : crée un fichier texte contenant une table des exponentielles x = 0:.1:1; y = [x; exp(x)]; fid = fopen('exp.txt','w'); fprintf(fid, Fonction exponentielle\n\n ); écrit le titre «Fonction exponentielle» suivi de deux retours à la ligne fprintf(fid,'%6.2f\t%12.8f\n',y); écrit pour chaque ligne : fclose(fid); %6.2 = un nombre de 6 caractères et 2 chiffres après la virgule suivi d un espace tabulation %12.8 = un nombre de 12 caractères et 8 chiffres après la virgule suivi d un retour à la ligne Commande sprintf : S = sprintf( format,a) Ex : sprintf('%d',round(pi)) 3 sprintf('%s','hello') hello» écrit les données de la matrice A dans une chaîne de caractères S plutôt que dans un fichier» convertit les données dans un format spécifié par format F.Nicol - Matlab E/S - 35

Indicateur de position :» Quand un fichier est ouvert, un pointeur de position spécifie une position particulière dans le fichier» Détermine où commence l opération suivante (lecture ou écriture)» Par défaut, après l ouverture d un fichier par la commande fopen, l indicateur de position se trouve au début du fichier Déplacement de l indicateur de position :» Toute opération de lecture ou d écriture avance l indicateur d une position» Les déplacements de l indicateur s effectuent en terme de bytes et non en terme d éléments du fichier. Ainsi, dans un fichier contenant des éléments de type entier «short», chaque élément du fichier utilise 2 bytes en mémoire. Une opération de lecture ou d écriture d un élément entier «short» déplacera donc l indicateur de 2 bytes Ex : caractère : char 1 byte = 8 octets (ou 8 bits) entier court : short 2 bytes = 16 octets entier long : long 4 bytes = 32 octets simple précision : float 4 bytes = 32 octets double précision : double 8 bytes = 64 octets F.Nicol - Matlab E/S - 36

Déplacer la position de l indicateur : status = fseek(fid, offset, origine)» positionne l indicateur de position du fichier identifié par fid» retourne dans status : 0 si le déplacement se fait correctement -1 si fseek a rencontré une erreur» offset : valeur (positive ou négative) du déplacement spécifiée en bytes offset>0 déplacement vers la fin du fichier offset=0 pas de déplacement offset<0 déplacement vers le début du fichier» origine : point d origine à partir duquel on effectue le déplacement bof ou -1 début du fichier cof ou 0 position courante eof ou +1 fin du fichier F.Nicol - Matlab E/S - 37

Localiser l indicateur de position : pos = ftell(fid)» localise l indicateur de position du fichier identifié par fid» renvoie la valeur de l offset à partir du début du fichier ( bof ) dans la variable pos : un entier non négatif spécifié en bytes» retourne la valeur -1 si ftell rencontre une erreur F.Nicol - Matlab E/S - 38

Exemple 1 : Fichier texte «car.txt» contenant le texte «data in file» : Début du fichier Fin du fichier Position bof 1 2 3 4 5 6 7 8 9 10 11 12 eof Contenu d a t a i n f i l e Indicateur Offset 0 1 2 3 4 5 6 7 8 9 10 11 12 en nb de bytes Création du fichier texte : datacar.m 1 5 6 3 4 s='data in file'; %ouverture du fichier car.txt en écriture fid=fopen('car.txt','w'); %écrire le texte dans le fichier count=fprintf(fid,'%s',s); %fermeture du fichier fclose(fid); %afficher le nombre de bytes du fichier disp(['nombre de bytes dans le fichier : ',num2str(count)]); F.Nicol - Matlab E/S - 39 8 2 7 9

Fichier positioncar.m 1 %déterminer l'indicateur de position %ouverture du fichier en lecture fid=fopen('car.txt','r'); %offset en début de fichier pos=ftell(fid); %afficher le nombre de bytes en début du fichier disp(['offset en début de fichier : ',num2str(pos)]); 5 6 %faire reculer l'indicateur de 4 bytes fseek(fid,-4,'cof'); pos1=ftell(fid); %lire le caractère suivant car=fread(fid,1,'char'); pos2=ftell(fid); disp([num2str(pos1),' bytes avant le caractère ',car]); disp(['le caractère ',car,' se trouve à la position ',num2str(pos2)]); 2 %lire et afficher tout le texte S=fread(fid,'char'); texte=char(s'); disp(['le texte est : ',texte]); 7 %aller à la fin du fichier fseek(fid,0,'eof'); pos=ftell(fid); disp(['offset à la fin du fichier : ',num2str(pos),' bytes']); 3 4 %avancer de 8 bytes à partir de bof fseek(fid,8,'bof'); %offset pos1=ftell(fid); %lire le caractère suivant car=fread(fid,1,'char'); pos2=ftell(fid); disp([num2str(pos1),' bytes avant le caractère ',car]); disp(['le caractère ',car,' se trouve à la position ',num2str(pos2)]); 8 9 %lire le dernier caractère du fichier fseek(fid,-1,'eof'); pos1=ftell(fid); car=fread(fid,1,'char'); pos2=ftell(fid); disp([num2str(pos1),' bytes avant le caractère ',car]); disp(['le caractère ',car,' se trouve à la position ',num2str(pos2)]); %fermeture du fichier fclose(fid); F.Nicol - Matlab E/S - 40

Exemple 2 : Fichier binaire «five.bin» contenant les entiers de 1 à 5 : Début du fichier Fin du fichier Position bof 1 2 3 4 5 6 7 8 9 10 eof Contenu 0 1 0 2 0 3 0 4 0 5 Indicateur Offset 0 1 2 3 4 5 6 7 8 9 10 en nb de bytes 1 4 2 3 Création du fichier binaire : datanum.m A=1:5; %ouverture du fichier en écriture fid=fopen('five.bin','w'); %écrire les valeurs dans le fichier au format short fwrite(fid,a,'short'); %fermeture du fichier status=fclose(fid); 5 F.Nicol - Matlab E/S - 41

Fichier positionnum.m %Rechercher les positions dans le fichier five.bin 1 2 3 4 5 %ouverture du fichier en lecture fid=fopen('five.bin','r'); %déplacer l'indicateur de position de 6 bytes à partir du début du fichier fseek(fid,6,'bof'); %lire le nombre suivant four=fread(fid,1,'short'); position=ftell(fid); disp(['position de l''indicateur après le nombre ',num2str(four),' est : ',num2str(position),' bytes']); %reculer l'indicateur de 4 bytes fseek(fid,-4,'cof'); %lire le nombre suivant three=fread(fid,1,'short'); position=ftell(fid); disp(['position de l''indicateur après le nombre ',num2str(three),' est : ',num2str(position),' bytes']); %fermeture du fichier fclose(fid); F.Nicol - Matlab E/S - 42

Commande fgetl : tline = fgetl(fid)» lit une ligne d un fichier texte identifié par fid et l enregistre dans une chaîne de caractères tline sans le caractère de fin de ligne» retourne -1 si fgetl rencontre la fin du fichier Remarques :» fichiers texte seulement» commence la lecture de la ligne à partir de l indicateur de position (par défaut, le début du fichier à son ouverture F.Nicol - Matlab E/S - 43

Exemple : fichier ligne.m %lire les deux premières lignes du fichier texte fgetl.m %ouverture du fichier en lecture fid=fopen('fgetl.m','r'); %lire la première ligne du fichier tline = fgetl(fid); %afficher la première ligne disp(tline); %lire la deuxième ligne : l'indicateur de position se trouve au début de la deuxième ligne tline = fgetl(fid); %afficher la deuxième ligne disp(tline); F.Nicol - Matlab E/S - 44