Créer des interfaces avec Matlab.

Slides:



Advertisements
Présentations similaires
Votre logo à insérer ici
Advertisements

Nom de lintervenant Titre de lintervention. Tapez le titre de votre slide (si besoin) Tapez votre titre principal Tapez votre sous titre ou votre texte.
Formation universitaire à .NET: Introduction à C#
LE LANGAGE JAVASCRIPT LES FENETRES.
1 Jean-Paul Stromboni, mars 2005, Révision des cinq premières séances S.S.I. Jean-Paul Stromboni, mars 2005, ESSI1 Elève : ______________________ groupe.
S.S.I., ESSI1, lundi 9 mai 2005 Page 1 Comment compresser avec le spectre Séance 10, 1 heure Version : lundi 9 mai 2005 Auteur : Jean-Paul Stromboni Contenu.
S.S.I., ESSI1, samedi 10 avril 2004 Page 1 Comment tailler les filtres sur mesure Séance 8, nouvelle application des filtres, 1 heure Version : samedi.
Comment créer des filtres d’ordre 1 et 2
Comment on filtre un signal audio
Cours 5 – Comment bien échantillonner le signal audio
1 Jean-Paul Stromboni, octobre 2007, SI3 Réviser le devoir surveillé n°1 du cours S.S.I.I. Jean-Paul Stromboni, octobre 2007, SI3 Elève : ______________________.
Filtres (n entier, Te=1s)
Calcul de la composition fréquentielle du signal audio
1 Jean-Paul Stromboni, mars 2005, Révision des cinq premières séances S.S.I. Jean-Paul Stromboni, mars 2005, ESSI1 Elève : ______________________ groupe.
Comment créer des filtres « simples »
Comment bien échantillonner
Cours S.S.I., SI1, avril 2007 – Comment utiliser les outils déjà présentés. Page 1 Comment utiliser les outils déjà présentés dans le cours S.S.I. et pourquoi.
Extraits choisis du cours S.S.I.I.
AutoBilan MATLAB – SSII – SI3 – sept 2009 Page 1 Quel est leffet de linstruction ? Répondez ci-dessous Ok ? D=1; fe=1000 num2str(fe) num2str(d) ['la valeur.
La fonction Style Permet de créer des types de texte, par exemple
MATLAB Initiation à Matlab.
Sous-échantillonner le signal audio pour compresser
1 PolytechNice-Sophia, Département S.I., S.I.3, octobre 2012, Jean-Paul Stromboni Séance 7 : Retour sur les cinq premiers chapitres du cours S.S.I.I.
Commission scolaire des Laurentides
Vidéogramme séance 2 du 13 février 2012 Les Fenêtres Windows Micro Informatique au Cellier Joseph HOHN Séance du 13 février 2012 Sur le thème de Découverte.
La balise <FORM>:
INTRODUCTION A MATLAB ENVIRONNEMENT MATLAB.
PRÉSENTATION Logiciel de traitement de texte:
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
3. Systèmes L.I.T Systèmes LIT, introduction
Extraits choisis du cours S.S.I.I.
DYALOG APL 2006 NameSpaces et Fonctions Dynamiques : Lapport de Dyalog APL 91, rue du Fb St Honoré PARIS tél. : Fax :
Par Fabrice Pasquier Cours IV
Titre de votre session Prénom NOM Fonction ORGANISME Votre logo
Tableau croisé dynamique sous Excel (TCD).
S.S.I.I., , n°7 : Construire et utiliser un banc de filtres Page 1 Construire et utiliser un banc de filtres pour analyser le spectre dun signal.
Cours S.S.I.I., , n°8, Créer des filtres pour compresser Cours S.S.I.I., , n°8, : Créer des filtres pour compresser Page 1 Mise en œuvre.
5. Echantillonnage Introduction
SSII : séance finale , lundi 9/01/2012 Page 1 Voici quelques questions pour assimiler la seconde partie du cours S.S.I.I., spectre, filtrage, banc.
TracenPoche Les fichiers >.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Conception de la mise en page
FICHIERS : Définition : Algorithme général:
S.S.I.I., , n°6, Créer des filtres sur mesure pour compresser S.S.I.I., , n°6, : Créer des filtres sur mesure pour compresser 1 Créer un.
1 par Jean-Paul Stromboni, octobre 2008 Un autobilan pour réviser le devoir surveillé n°1 du cours S.S.I.I., par Jean-Paul Stromboni, octobre 2008 Elève.
Filtrer le signal audio numérique (n entier, Te=1s)
1 Jean-Paul Stromboni, octobre 2007, SI3 Réviser le devoir surveillé n°1 du cours S.S.I.I. Jean-Paul Stromboni, octobre 2007, SI3 Elève : ______________________.
Filtrer le signal audio numérique
Un moyen de compresser le signal audio présenté à travers un exemple
Manipulation de formulaires en Javascript
Utiliser le spectre et la transformée de Fourier
- énergie bornée (tend vers 0 lorsque
Exploration de la programmation android Formation Assurer par: Club FreeWays Réalisé par: BOUHJJA Lamia.
Introduction.
Energie d’un signal, énergie d’interaction, analogie avec l’électrocinétique
Digitaliser des images
Pourquoi est-il nécessaire d'installer de nouveaux logiciels sur votre ordinateur ? J'exclus de cette présentation l'installation de nouveaux matériels.
Cours S.S.I.I., , n°7, Créer des filtres pour compresser Cours S.S.I.I., , n°7, : Créer des filtres pour compresser Page 1 Retour sur le.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Windows 7 et son explorateur
Extraits choisis du cours S.S.I.I.
 Objet window, la fenêtre du navigateur
Interfaces graphiques. Composants d'interface utilisateur graphique (GUI) 1 Bibliothèques Awt et Swing Procédures communes pour l'utilisation de ces clases.
Cliquez pour modifier le style du titre
Matlab (Matrix Laboratory)
Titre de votre session Votre logo à insérer ici Prénom NOM Fonction ORGANISME.
Retour sur les filtres et bancs de filtres Jean-Paul Stromboni, décembre 2007.
Comprendre le SGBDR Microsoft Access – partie 2
Transcription de la présentation:

Créer des interfaces avec Matlab. Cours S.S.I. n°10, mai 2007, durée : 1 heure, écrit par Jean-Paul Stromboni pour les élèves SI1 préciser Ce que vous devez savoir après cette séance : Matlab permet de développer des GUI (ou graphic user interfaces) pour présenter les résultats aux utilisateurs. Un GUI est défini par deux fichiers de même nom, une figure et un script Les objets d’interface possèdent des propriétés et des callbacks, et sont accédés par des handlers. définir contenu Travaux dirigés : créer un GUI pour analyser la compression d’un son wave avec un banc de filtres se tester soi-même Savez vous répondre aux questions suivantes ? Que réalise l'instruction Matlab : set(h,'Tag','toto') ? Que réalise get(h,'String') ? Énumérer cinq ‘uicontrols’ Comment fermer un GUI dans un bouton 'Quit' ? Quel est le GUI créé par h=plot(t,sin(t)); Comment utiliser la structure handles ? Que réalisent les deux lignes : g =findobj(gcf,'String','Tracé') delete(g) Qu’est ce qu’un Callback ?

Vous pouvez construire avec Matlab des interfaces graphiques programmables Un GUI (Graphic User Interface) est constitué d'objets d'interface (uicontrols) dotés de méthodes et de propriétés programmables dans des scripts. Pour décrire un GUI, Matlab utilise deux fichiers, un fichier figure (d’extension fig), qui contient le layout du GUI, ou disposition des objets d'interface, un fichier script (d’extension .m), qui contient les comportements de l'interface Par exemple, le GUI two_axes ci-dessous est décrit par les deux fichiers two_axes.m et two_axes.fig :

Matlab contient un éditeur de GUI GUIDE (pour Graphic User Interface Development Editor) contient les outils pour : 1. disposer les objets d'interface (layout) 2. adapter les valeurs de leurs propriétés 3. programmer les comportements (Callbacks) On exécute GUIDE depuis la fenêtre Matlab : avec la commande : >> guide à l'aide du raccourci dans la barre d'outils La fenêtre GUIDE appliquée au GUI two_axes : (cf. run, uicontrols, menus, edit, propedit, …)

Tous les objets d'interface sont dotés de propriétés accessibles et modifiables. Voici une liste de propriétés (non exhaustive) : Tag, est le nom de l'objet Style, son type, bouton, texte, panel … Name, Pointer, WindowStyle (figure) String, le texte qui apparaît (text, edit, …) ForegroundColor, … Max, Min, Step (slider) Value Callback, pour coder les comportements ButtonDownFcn, ResizeFcn, CreateFcn … FontSize, FontWeight, FontName, … L’inspecteur de propriétés est appelé par GUIDE pour modifier les propriétés des objets d'interface

Pour atteindre les propriétés des objets d'interface, on utilise des 'handler'. À tout objet d'interface, Matlab peut associer des pointeurs, ou handler, pour l’accès aux propriétés. Certains handlers sont définis par défaut : gcf : handler de la figure courante (get current figure) gca : axes courants de tracé (get current axes) gcbf : la figure cliquée (get callback figure) gcbo : l'objet qui appelle (celui sur lequel on a cliqué) Le handler 0 est la fenêtre interpréteur Matlab Le handler 1 est la figure 1, … Voici des instructions qui utilisent un handler : get et set, respectivement pour lire et pour changer les valeurs des propriétés findobj, pour retrouver le handler d'un objet propedit, pour éditer les propriétés d'un objet. delete, pour effacer un objet Exemples de programmation avec les handlers get(0) % qu'obtient-on ? t=0:.1:100; h=plot(t,t.*sin(t),t,t) % noter la valeur de h get(h(1),'Color')) set(h(2),'tag','toto') set(h(2),'ButtonDownFcn', 'close') g=findobj(gcf,'tag','toto') delete(g)% efface quoi ? propedit(h(2)) % définir un uicontrol h=uicontrol('sty','pushbutton','str',… 'terminer','cal','close')

Comment programmer un GUI (cf. MonPremierGUI.zip) dans la propriété ‘Callback’, on place : Soit une instruction : telle ‘grid’ ou ‘close(gcf)’ Soit un script Matlab placé dans le path, tel 'script.m' pour le bouton 'Tracé' pour échanger des informations entre les objets d’interface, on utilise Workspace Pour adresser un objet d’interface, on utilise findobj, cf. zone de texte éditable ci-dessous : % script.m appelé par le bouton 'tracer' t=0:.1:10; h=findobj(gcf,'tag','edit1'); f=str2double(get(h,'String')); % 'str'suffit stem(t,t.*sin(2*pi*f*t));

Une autre façon de programmer un GUI en utilisant le fichier script GUIDE génère automatiquement des méthodes vides pour les callbacks des objets d’interface, il les appelle dans la propriété Callback et leur transmet les deux arguments suivants : hObject, le handler de l'objet appelant Handles, une structure qui contient les handlers de tous les objets d'interface, et permet ainsi l'accès à toutes leurs propriétés. Pour programmer le GUI, il suffit de compléter ces méthodes créées par GUIDE dans le fichier script du GUI, ce qui évite de multiplier les scripts Pour les échanges de variables entre les méthodes du GUI, il y a deux possibilités : Soit on utilise la structure handles : % callback émetteur handles.mydata=x % pour transmettre x guidata(hObject,handles) % sauvegarde % callback récepteur y=handles.mydata % récupérer x dans y Soit on utilise la déclaration global dans toutes les méthodes qui doivent partager une variable global x x= . . .

Une autre façon de programmer un GUI en utilisant le fichier script Voici le script MonSecondGUI.m : l'outil f donne la liste des fonctions du script l'éditeur donne des diagnostics sur le script Dock/Undock, flêches en haut à droite

Voici l’exemple du GUI ‘Filtrer’: le layout (cf. Filtrer.zip) Voici le spectre de Piano.wav tracé par le GUI Filtrer (lancé en double cliquant sur Filtrer.fig)

Exemple du GUI Filtrer (suite) : les scripts et instructions %monslider.m h=findobj(gcbo,'tag','slider1'); f0=get(h,'value') h=findobj(gcf,'tag','f0'); set(h,'string',num2str(f0)) monfiltre %montrace.m t=[0:length(y)-1]/fe; plot(t,y) % bouton 'sauver' wavwrite(s,fe,'signal.wav')Y %monload.m [name,y,fe]=loadsig('./'); h=findobj(gcf,'tag','fe'); set(h,'string',num2str(fe)) h=findobj(gcf,'tag','slider1'); set(h,'Max',num2str(fe/2)) % bouton 'filtrer' S=filter(bande,1,y) % bouton 'écouter' wavplay(s,fe,'synch') % monlire.m wavplay(y,fe,'synch') %init.m clear all fe=8000 f0=0 R=8192 sigdir='./' % monfiltre.m h=findobj(gcf,'tag','edit2') fc=str2num(get(h,'string')) h=findobj(gcf,'tag','edit4') R=str2num(get(h,'string')) K=round(f0*R/fe); f0=K*fe/R; %filtre générateur N = fix(fc*R/fe); % forme la plus arrondie H=[ones(1,N-1),0.9,0.5,0.1,... zeros(1,R-2*N-3),0.1,0.5,... 0.9,ones(1,N-2)]; h=fftshift(real(ifft(H))); % réponse impulsionnelle du filtre n=0:R-1; bande= 2*cos(2*pi*[0:R-1]*f0/fe).*h; %tracé réponse harmonique fr=n*fe/R -fe/2; spec=abs(fft(bande)); stem(fr,fftshift(spec)) xlabel('frequence (Hz)'); ylabel('réponse harmonique'); grid on %spectre.m f=[0:R-1]*fe/R-fe/2; sp=fft(y(1:R),R); stem(f,fftshift(abs(sp))) axis([min(f),max(f),0,… max(abs(sp))]) xlabel('fréquence (Hz)') ylabel('signal filtré') grid % monspectre.m f=[0:R-1]*fe/R-fe/2; sp=fft(s(1:R),R); stem(f,fftshift(abs(sp))) axis([min(f),max(f),0,… max(abs(sp))]) xlabel('fréquence (Hz)') ylabel('spectre filtré')

Concevoir un GUI pour compresser un signal avec un banc de filtres. Représenter un croquis de l'interface sur cette page

Concevoir un GUI pour compresser un signal avec un banc de filtres. Imaginer votre propre GUI pour TD n°8: Préciser ici les scripts nécessaires Concevoir un GUI pour compresser un signal avec un banc de filtres. Préciser les scripts et instructions de ce GUI ici :