bonjour.
Est-il possible d'utiliser des variables définies dans un '.m' dans un autre '.m'
Merci d'avance pour votre aide.
Version imprimable
bonjour.
Est-il possible d'utiliser des variables définies dans un '.m' dans un autre '.m'
Merci d'avance pour votre aide.
La méthode la plus simple reste de les passer en variables d'entrée (ou de sortie) de ton .m, ce qui implique que tes .m soient des fonctions.
fichier main.m:
fichier truc.m:Code:
1
2
3
4
5 function main() <div style="margin-left:40px">a=... b=... c = truc(a,b);</div>end
Code:
1
2 function c = truc(a,b) <div style="margin-left:40px">c= (a+b)/2;</div>end
Bon je vois que tu voulais quelque chose de plus élaboré que les fonction d'entrée et de sortie.
voici un exemple :
Dans un autre .m :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 ... (définition d'un GUI) %exemple d'un des handles si tu as besoin d'utiliser un GUI: hspan = uicontrol('Style','Slider',... 'Position',[700,350,150,20],... 'Value',15,... 'Min',5,... 'Max',30,... 'SliderStep',[1/25 1/5],... 'visible','off',... 'Callback','span_callback',... 'Tag','span'); %c'est cette ligne qui est importante, tu appeleras ton handle via le tag 'span' data=guihandles(gcf); %enregistrement des données du gui dans la structure data data.sensor=[]; %ajout d'autres données à la structure data.filtered_sensor=[]; data.time=[]; data.filtered_time=[]; data.max_strain=[]; data.max_temp=[];
J'espère que ça te conviendra mieux.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 ... data=guidata(gcbf); %récupération des données du GUI span=get(data.span,'Value'); %récupération des données du handle span set(data.span_value,'String',num2str(span)); %entrée de cette valeur dans le handle span_value [data.sensor data.time]=data_recup(path,filename); %enregistrement de données. ... guidata(gcbf,data); %renvoie des données de data modifiées dans le GUI.
Ok.
J'essai un peu de comprendre ce que tu m'as écrit.
à quoi serve les:
Merci d'avance.Code:
1
2
3
4
5 data.filtered_sensor=[]; data.time=[]; data.filtered_time=[]; data.max_strain=[]; data.max_temp=[];
A la base, "data=guihandles(gcf);" a récupéré les données des différents handles de mon GUI et les a stockées dans la variable data. Je vais exporter cette structure dans mes différents programmes. Cependant, je voudrais en profiter pour y implémenter d'autres données, qui n'ont rien à voir avec le GUI mais que j'utiliserai aussi dans d'autres .m. Du coup je les ajoute à la structure data par les lignes suivantes
Comme lors de l'initialisation, je n'ai aucune idée de ce que valent ces valeurs, je crée simplement une table vide. Le seul but est de les implémenter dans la structure data dès le début.Code:
1
2
3
4
5
6 data.filtered_sensor=[]; data.time=[]; data.filtered_time=[]; data.max_strain=[]; data.max_temp=[];
Le code suivant ne fonctionne pas dans le .m différents de mon GUI:
et j'ai le message d'erreur suivant lorsque je run le M-File de mon GUI et que je run ensuite le code au dessus dans un autre .m:Code:data=guidata(gcbf); %récupération des données du GUI
Je ne comprends pas.Code:
1
2
3
4
5 ??? Error using ==> guidata at 89 H must be the handle to a figure or figure descendent. Error in ==> testcode3 at 1 data=guidata(gcbf)
Merci d'avance
Bonjour,
Ou as-tu placé ce code? Peux-tu nous montrer le code complet?
Je me rends compte que j'ai oublié un truc. Dans ton .m de définition du GUI, une fois que tu as défini toutes les variables à entrer dans ta structure data, il ya une ligne à ajouter : guidata(gcf,data)
Ton problème doit venir de là je pense.
Du coup ton .m de définition du GUI doit ressembler à ça :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 ... (définition d'un GUI) %exemple d'un des handles si tu as besoin d'utiliser un GUI: hspan = uicontrol('Style','Slider',... 'Position',[700,350,150,20],... 'Value',15,... 'Min',5,... 'Max',30,... 'SliderStep',[1/25 1/5],... 'visible','off',... 'Callback','span_callback',... 'Tag','span'); %c'est cette ligne qui est importante, tu appeleras ton handle via le tag 'span' data=guihandles(gcf); %enregistrement des données du gui dans la structure data data.sensor=[]; %ajout d'autres données à la structure data.filtered_sensor=[]; data.time=[]; data.filtered_time=[]; data.max_strain=[]; data.max_temp=[]; guidata(gcf,data)
Le lien mathworks sur la fonction guidata :
http://www.mathworks.com/access/help...f/guidata.html
En fait, il me suffisait d'écrire le nom de mon .m plutôt que de rentrer gcbf.
Le code suivant fonctionne dans le second .m.
Cela fonctionne bien mais mon problème est en fait autre:Code:
1
2 data=guidata(interface_graphique); nomfichier=data.nom_fic
le M-File de mon GUI renvoie un graphe "4D" (un graphe de type scatter avec une échelle de couleur dans la 4ème dimension).Je voudrais en fait programmer le Text Update Function du data cursor pour qu'il affiche une 4ème coordonnée dans le Datatip).C'est pourquoi j'ai voulu essayer de récupérer les handles de mon GUI pour avoir accès au coordonnées des points mais je ne sais pas comment faire correspondre le clic du data cursor avec un objet du GUI (Target????).
En fait, je pense qu'il me faudrait savoir comment le data cursor récupère les coordonnées définies dans le M-File dun GUI pour pouvoir programmer un code similaire afin d'avoir les coordonées de l'échelle de couleur.
Si vous avez une idée n'hésitez pas.
Merci d'avance.
Je ne suis pas sur d'avoir tout compris, mais peut-être que ceci pourra t'aider :
Code:help datacursormode