URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2



Documents pareils
Introduction à MATLAB R

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

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

TP 1. Prise en main du langage Python

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

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

Programmation impérative

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

La mémoire. Un ordinateur. L'octet. Le bit

Module : Informatique Générale 1. Les commandes MS-DOS

Calcul Formel et Numérique, Partie I

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

iil est désormais courant de trouver sur Internet un document

Initiation à LabView : Les exemples d applications :

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume

Utilisation du client de messagerie Thunderbird

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

et de suivi de la corpulence des enfants

Export et import des RIB et IBAN avec les progiciels LD

Le langage C. Séance n 4

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL


Programmation système I Les entrées/sorties

: seul le dossier dossier sera cherché, tous les sousdomaines

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

1 Lecture de fichiers

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

Guide d utilisation 2012

données en connaissance et en actions?

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

1. Structure d'un programme FORTRAN 95

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

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

Créer vos données sources avec OpenOffice, adieu Excel

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

Guide utilisateur i-milo >> Décisionnel

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Module d anonymisation

C.M. 1 & 2 : Prise en main de Linux

GUIDE DE L UTILISATEUR Recoveo Récupérateur de données

Présentation du langage et premières fonctions

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

Les chaînes de caractères

Algorithmique et Programmation, IMA

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

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Projet Matlab : un logiciel de cryptage

1.1 L EXPLORATEUR WINDOWS

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

1 Introduction - Qu est-ce que le logiciel R?

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

Note de cours. Introduction à Excel 2007

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

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

Groupe Eyrolles, 2006, pour la présente édition, ISBN :

GUIDE MEMBRE ESPACE COLLABORATIF. Février 2012

0.1 Mail & News : Thunderbird

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

TP1 - Prise en main de l environnement Unix.

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

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

Manuel de System Monitor

Conventions d écriture et outils de mise au point

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

Cours 14 Les fichiers

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

FEN FICHE EMPLOIS NUISANCES

Manuel d utilisation de Gestion 6

GUIDE D UTILISATION DU CENTRE DE DONNÉES DE L ISU

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

Transmission d informations sur le réseau électrique

(Langage de commandes) Les commandes sont données par l'utilisateur grâce au clavier, à partir d'une "invite" ou "prompt" (par exemple "c:\>" )

EXCEL TUTORIEL 2012/2013

Groupe Eyrolles, 2003, ISBN : X

Introduction à l informatique en BCPST

Initiation à la programmation en Python

Module Communication - Messagerie V6. Infostance. Messagerie

L informatique en BCPST

Version 6.20 Guide d Utilisation

SOFI Gestion+ Version 5.4. Echanges de données informatiques Spicers Sofi gestion+ Groupements. SOFI Informatique. Actualisé le

TD séances n 3 et n 4 Répertoires et Fichiers sous Unix

Business Intelligence

Guide de l administrateur CorpoBack

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Mise en scène d un modèle dans l espace 3D

Manuel du gestionnaire

Utiliser un tableau de données

Chapitre 3 : outil «Documents»

Une fois votre tableau excel complet, cliquer sur fichier enregistrer sous type de fichier (menu déroulant) csv (séparateur : point virgule).

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

Numbers sur ipad. Atelier Formation Numbers sur ipad. [Notes extraitres de l'aide en ligne]

SEMIN. Données sous R : stockage et échange. Julio PEDRAZA ACOSTA

DM 1 : Montre Autoquartz ETA

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

OSIRIS/ Valorisation des données PORTAIL BO MANUEL UTILISATEUR

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Initiation à la Programmation en Logique avec SISCtus Prolog

Installation et utilisation de Cobian Backup 8

Transcription:

Initiation Matlab 2 1 Chaînes de caractères (string) Une chaîne de caractères (string en anglais) est une suite ordonnée de caractères (du texte, par exemple). Sous matlab, les chaînes de caractères sont spécifiées entre simple quote, par exemple : >> toto >> Le resultat est : >> l apostrophe %pour mettre une apostrophe il faut doubler la simple quote 1.1 Manipulation des string 1.1.1 Concaténation L assemblage de deux ou plusieurs chaînes de caractères s appelle la concaténation. Un des moyens d effectuer une concaténation sous Matlab est d utiliser les crochet [ ]. Par exemple, >> [ Le resultat de, la multiplication, est donné ci-dessous. ] >> debut_phrase = Le resultat de ; >> fin_phrase = est donné ci-dessous. ; >> operation = la multiplication ; >> phrase_complete = [debut_phrase, operation, fin_phrase] 1.1.2 Extraction d un morceau de la chaîne de caractères On peut accéder aux éléments d une chaîne de caractères de la même manière que pour un vecteur. >> alphabet = abcdefghijklmnopqrstuwxyz ; >> alphabet(1) % 1ere lettre de l alphabet >> alphabet(5:10) % de la 5eme a la 10eme Si les éléments à extraire sont de taille indéfinie mais séparés par un caractère particulier. On peut diviser la chaîne de caractères à l aide de la fonction regexp. Exemple : >> listecourse = tomates 300gr,radis 200gr,beurre 250gr ; on divise la chaîne au niveau des virgules >> splittedlist = regexp(listecourse,,, split ); >> splittedlist{1} >> splittedlist{2} >> splittedlist{3} on peut également spécifier plusieurs séparateurs entre crochet (\s est le caractère spécial pour l espace) >> splittedlist2 = regexp(listecourse, [,\s], split ) 1

1.1.3 Tests sur les chaînes de caractères On utilisera la fonction ischar pour vérifier qu une variable contient bien une chaîne de caractères : >> a = 1 ; >> ischar(a) %vrai >> a = 1; >> ischar(a) %faux On utilisera la fonction isempty pour vérifier qu une chaîne n est pas vide (fonctionne également sur les tableaux numériques) : >> a = abcd ; >> ischar(a) %oui >> isempty(a) %non >> a = ; >> ischar(a) %oui >> isempty(a) %oui >> a = []; >> ischar(a) %non >> isempty(a) %oui >> a = [1,2]; >> ischar(a) %non >> isempty(a) %non La fonction strcmp permet de comparer deux chaînes de caractères. Elle retourne 1 (vrai) si les deux chaînes sont identiques et 0 (faux) sinon. >> strcmp( toto, toto ) %vrai >> strcmp( toto, titi ) %faux >> str1 = toto ; str2 = tutu ; >> strcmp(str1, str2) %faux >> strcmp(str1, toto ) %vrai >> strcmp(str2, toto ) %faux 1.2 Conversion nombre <-> chaîne de caractères, et vice versa La fonction str2num permet de convertir une chaîne de caractère représentant un nombre en une variable numérique. Exemple : >> a = 1234.56 ; >> a * 3 ne donne pas (1234.56 * 3) car a n est pas une variable numérique mais une chaîne de caractère >> b = str2num(a); >> b * 3 %ok 2

%d nombres entiers %f notation standard d un nombre réel %e notation exponentielle Il est également possible de réaliser l opération inverse. La fonction num2str(num,format) convertit une variable numérique en chaîne de caractère. La chaîne de caractère format permet de choisir la notation utilisée pour représenter le nombre (notation standard avec séparateur décimal, notation exponentiel,...). On peut également spécifier le nombre de caractère minimal servant à la représentation du nombre et la précision après le séparateur décimal. Testez les exemples suivants : >>num2str(23, %d ) >>num2str(23, %f ) >>num2str(23, %e ) >>num2str(4/3, %f ) >>num2str(4/3, %e ) >>num2str(23, %05d ) %représentation sur 5 caractères avec rajout de 0 à gauche >>num2str(4/3, %010.2f ) %représentation sur 10 caractères avec 2 chiffres %après la virgule et rajout de 0 à gauche si nécessaire 2 Récupérer une valeur au clavier Par le biais de la fonction input, on peut demander à l utilisateur d entrer des données numériques au clavier. La forme de la fonction est la suivante : x = input(prompt_string) x est la variable qui contiendra la valeur donnée par l utilisateur et prompt_string est une chaîne de caractères pour informer l utilisateur sur la requête. >>num_sujet = input( Veuillez entrer le numéro du sujet :\n ) Veuillez entrer le numéro du sujet : 23 num_sujet = 23 La fonction input permet également de récupérer une chaîne de caractères en ajoutant en deuxième argument s. >>nom_sujet = input( Veuillez entrer le nom du sujet :\n, s ) Veuillez entrer le nom du sujet : toto nom_sujet = toto 3

3 Travailler avec des fichiers 3.1 Chemin relatif/absolu Un chemin est une chaîne de caractères désignant un lieu (fichier ou répertoire) unique de l arborescence d un système de fichier. Le lieu est spécifié par une suite de nom de répertoire (puis finissant éventuellement par un nom de fichier) séparé par un délimiteur dépendant du système d exploition (slash / sous unix (Mac, linux,...), backslash \ sous windows). Un chemin absolu décrit la position d un fichier ou répertoire depuis la racine du système de fichier. Exemple sous windows : C:\Windows\System32\kernel32.dll donne la position du fichier kernel32.dll à savoir dans le répertoire System32 lui-même situé dans le répertoire Windows à la racine du lecteur C. Exemple sous linux : /home/user/devel/mon_prog.c donne la position du fichier mon prog.c On peut également localiser un fichier en donnant sa position relative par rapport au répertoire courant (voir section suivante), on parle dans ce cas de chemin relatif. Le. permet de désigner le répertoire courant, et le.. le répertoire parent. Par exemple :.\data\acq1.txt designe le fichier acq1.txt présent dans le répertoire data situé dans le répertoire courant. Exercice : Si le répertoire courant est C:\mesXP\superXP, donner le chemin absolu du fichier spécifié à partir du chemin relatif suivant..\autrexp\data\acq1.txt 3.2 Le répertoire courant (Current Folder) Le répertoire courant est un lieu de référence que Matlab utilise pour trouver des fichiers. Ce répertoire est aussi parfois appelé répertoire de travail (working directory). Le répertoire courant est visible et peut-être modifié directement sous la barre de menu ou en ligne de commande avec cd. Vous pouvez toujours charger des fichiers ou exécuter des scripts et fonctions se trouvant dans le répertoire courant, et ce même si ce répertoire ne fait pas partie du chemin de recherche (search path) 1. De plus, lorsqu une fonction est présente dans le répertoire courant, celle-ci est exécutée en priorité même si une fonction de même nom se trouve dans le chemin de recherche de Matlab. 3.3 Lister le contenu d un répertoire La fonction dir permet d obtenir une liste du contenu (fichiers et/ou autres répertoires) d un répertoire. Par exemple, pour lister le contenu du répertoire parent au répertoire courant >>list = dir(.. ) renvoie un tableau de structures (ici nommé list). Chaque élément du tableau est une structure contenant une chaîne de caractères donnant le nom de l élément (par ex pour le 3ème élément, >>list(3).name ), la date de modification (>>list(3).date), la taille en octets (>>list(3).bytes), un booléen égale à 1 si l élément est un répertoire et à 0 sinon (>>list(3).isdir). Exercice : à l aide de la fonction dir et d une boucle for, afficher le contenu du répétoire C :\windows (pour ceux sous linux, afficher le contenu du répertoire /etc). 1. Le chemin de recherche ou search path est un ensemble de répertoires que Matlab utilise pour trouver les fichiers utiles (par exemple, certaines toolbox sont un ensemble de fichiers de fonction regroupés dans un même répertoire situé dans le search path de Matlab) 4

Figure 1 fichier grades.dat (source : documentation Matlab) 3.4 Autres fonctions utiles cd : changer le répertoire courant fileparts : sépare un chemin en noms de répertoire et de fichier fullfile : construit un chemin à partir de noms de répertoire et de fichier isdir : détermine si la chaîne de caractère correspond à un chemin vers un répertoire movefile : déplacer un fichier vers un autre répertoire mkdir : créer un répertoire delete : supprimer un fichier rmdir : supprimer un répertoire 3.5 Importer/exporter des données à partir/vers des fichiers texte 3.5.1 Import La manière la plus simple d importer des données sous Matlab à partir de la ligne de commande et d employer la fonction importdata. Pour la plupart des fichiers, importdata est capable de détecter automatiquement : Les en-têtes des lignes et colonnes, Les séparateurs (caractères entre les données comme les virgules, les espaces, les tabulations ou les points virgules). Les commentaires Matlab (lignes commençant par un signe pourcent %) Par exemple, importdata peut facilement importer un fichier de la forme suivante : Exemple : Créer le fichier grades.dat et essayer de l importer avec importdata >>grades_imp = importdata( grades.dat ); Le fichier contient à la fois des en-têtes de lignes et de colonnes, importdata renvoie alors une structure grades_imp de la forme suivante : >>grades_imp grades_imp = data: [4x3 double] textdata: {6x1 cell} >>grades_imp.data grades_imp.data = 85 90 95 90 92 98 5

100 95 97 77 86 93 >>grades_imp.textdata grades_imp.textdata = Class Grades for Spring Term Grade1 Grade2 Grade3 John Ann Martin Rob Pour que importdata fonctionne correctement, il faut que les données dans le fichier soit rectangulaire (comme une matrice), i.e. avec le même nombre de données sur chaque ligne. Exercice : Créer un fichier grades2.dat reprenant les données du fichier grades.dat en retirant toutes les en-têtes puis importer les données sous matlab avec importdata, observer le contenu de la variable renvoyé par importdata. 3.5.2 Export Si vous souhaitez utiliser vos données dans d autres applications lisant les fichiers ASCII (excel, SPSS), Matlab dispose de plusieurs fonctions d export de données au format texte. Il est, par exemple, très simple de créer un fichier texte rectangulaire avec délimiteur depuis une matrice M en utilisant la fonction dlmwrite. Plusieurs façons de l utiliser : dlmwrite(filename, M) dlmwrite(filename, M, delimiter, D ) dlmwrite(filename, M, -append ) dlmwrite(filename, M, -append, delimiter, D ) Par défaut, le délimiteur employé par dlmwrite est la virgule. Il est cependant possible de spécifier un autre délimiteur avec l option delimiter en remplaçant D par le délimiteur de son choix (par ex : \s pour un espace, \t pour une tabulation, ; pour un point virgule). L option -append permet d ajouter les données à la fin du fichier. Si l option n est pas spécifiée dlmwrite écrase le fichier. Quelques exemples : >> t = 0:0.1:10; %vecteur de temps >> signal = sin(2*pi*t/10); % ces 2 vecteurs sont des vecteurs en ligne >> A = [t, signal ]; %on crée une matrice A, l operateur permet >> dlmwrite( monfichier1.dat, A); %de convertir les vecteurs ligne en vecteurs colonne >> dlmwrite( monfichier2.dat, A, delimiter, \s ) >> dlmwrite( monfichier2.dat, A, -append, delimiter, ; ) Après chaque appel à dlmwrite, regarder le contenu du fichier correspondant. 3.5.3 Les accès bas-niveau aux fichiers Matlab offre également des fonctions d accès bas-niveau aux fichiers proches de celles disponibles en langage C. Leurs fonctionnements ne seront pas détaillées ici. Mais à titre indicatif : 6

fopen : ouverture d un fichier fclose : fermeture d un fichier fread : lecture ds un fichier binaire fwrite : écriture ds un fichier binaire fprintf : écriture ds un fichier texte fscanf : lecture ds un fichier texte fseek : se déplacer dans un fichier fgetl, fgets : Lire une ligne ds un fichier ss le caractère de fin de ligne et avec 4 Application 4.1 Extraction d indices sur des données cinématiques Téléchargez l archive à l adresse suivante http://ureca.recherche.univ-lille3.fr/ott/matlab_s2_data.zip et décompressez la dans votre répertoire de travail. Dans le répertoire data extrait, on dispose de fichiers contenant des acquisitions sur tablette graphique. Les noms des fichiers sont de la forme suivante : COND1 [num sujet].dat et COND2 [num sujet].dat. Ouvrez l un des fichiers à l aide d un éditeur de texte : sur chaque ligne, on trouve 3 valeurs séparées par des espaces. La première valeur correspond au temps (en seconde), les 2ème et 3ème valeurs sont respectivement la position en X et la position en Y (en cm) du stylet sur la tablette graphique. Exercice : Ecrire le script qui, pour chaque sujet, va calculer - le temps de réaction (TR) (avec un seuil de vitesse de 5mm/s) - l amplitude du pic de vitesse - et le temps pour l atteindre (temps entre le début du mouvement et le pic de vitesse). On souhaite avoir le résultat dans un fichier COND1.txt (respectivement COND2.txt) qui aura sur chaque ligne : le numéro du sujet, le TR, l amplitude du pic et le temps pour l atteindre séparés par des espaces. 1ère étape : Calcul des indices sur 1 seul fichier Faire un premier script qui ira importer les données d un fichiers (par ex COND1 1.txt) dans une variable nommée data. Stocker séparément chaque colonne de data dans 3 nouvelles variables T, X, Y. Calculer le vecteur des vitesses. On peut prendre velx(i) = X(i) X(i 1) T (i) T (i 1), idem pour Y. On calcule ensuite la vitesse absolue velabs(i) = velx(i) 2 + vely (i) 2. (plusieurs solutions envisageables : utilisation de boucles, utilisation de la fonction diff et de l opérateur. pour effectuer des opérations terme à terme entre vecteurs (./ pour la division,.* pour la multiplication,.^ pour élever à la puissance)). Trouver le premier élément du tableau velabs supérieur au seuil de vitesse de 5mm/s et sa position temporelle. Cette position temporelle nous donne le TR. Trouver le maximum de velabs et sa position temporelle (voir l aide pour utiliser judicieusement les valeurs de retour de la fonction max). Nous avons à présent toutes les briques pour calculer les 3 indices recherchés. 2ème étape : Automatisation du traitement pour tous les sujets Faire un nouveau script Utiliser la fonction dir pour récupérer la liste des fichiers du répertoire data Mettre en place une boucle pour parcourir la liste de fichiers. Dans cette boucle : Tester si le fichier courant est un fichier de données (le nom de fichier contient-il la chaîne de caractère COND1?) Extraire le numéro de sujet du nom de fichier (fonction regexp(...,..., split )) 7

Importer le fichier de données (fonction importdata ) Calculer les indices en réutilisant ce qui a été fait dans le premier script Sauver les résultats dans le fichier COND1.txt (respectivement COND2.txt) avec le bon format (fonction dlmwrite). Afin de comparer visuellement la distribution des TR pour chaque condition, nous allons tracer une figure contenant un histogramme des TR pour chaque condition. %%%%%%%%%%%% %import des indices cinématiques cond1_res = importdata( COND1.txt ); cond2_res = importdata( COND2.txt ); TR1 = cond1_res(:,2); TR2 = cond2_res(:,2); %calcul des histogrammes avec la fonction hist nbins = 20; [ TR1_count, TR1_bins ] = hist(tr1, nbins); [ TR2_count, TR2_bins ] = hist(tr2, nbins); %création d une nouvelle figure figure, %on maintient l affichage pour superposer plsusieurs courbes hold on, %en bleu pour la condition 1 bar( TR1_bins, TR1_count, b ); %en rouge pour la condition 2 bar( TR2_bins, TR2_count, r ); %legende, titre d axes et titre de figure legend( COND1, COND2 ); xlabel( Temps de Réaction ); ylabel( Fréquence ); title( Distribution des TR ); %%%%%%%%%%% Faites de même pour les 2 indices restants. 8