Bonjour à tous et à toutes,
CONTEXTE :je réalise une interface graphique me permettant de lire un fichier excell, de récupérer tous les noms de colonnes (par exemple 'puissance' etc) et ensuite en cliquant dans un menu déroulant je sélectionne celles avec lesquelles je souhaite travailler (je peux tracer des courbes notamment). Jusque là aucun problème.
Maintenant je souhaite sauvegarder toutes les variables (qui correspondent aux noms de colonnes) que l'utilisateur a sélectionné.
Pour se faire j'ai essayé de faire ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 % --- Executes on button press in pushbutton_sauvegarder_compresseur. function pushbutton_sauvegarder_compresseur_Callback(hObject, eventdata, handles) % hObject handle to pushbutton_sauvegarder_compresseur (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global file_name_choisi; global nom_variable_x; %nom_variable_x=get(handles.edit_abscisse,'string'); global nom_variable_y; %nom_variable_y=get(handles.edit_ordonnee,'string'); utilisé initialement dans une autre fonction callback global temps; global txt; %[data,txt] = xlsread (file_name_choisi,sheet_name); pour lire le fichier excell global data; %voir commentaire précédent nombre_variable_edit_abscisse=size(nom_variable_x); nombre_variable_edit_ordonnee=size(nom_variable_y); for z=2:max(nombre_variable_edit_abscisse,nombre_variable_edit_ordonnee); %%%%%%%%%%%%%%%%%match colonne abscisse%%%%%%%%%%%%%%%%%%%%% match_txt=strcmp (nom_variable_x(z), txt); size_match_txt=size(match_txt); i=1; j=1; while i<= size_match_txt(1) while j<= size_match_txt(2) if match_txt(i,j)==1 nom_variable_a_sauvegarder_x.name=nom_variable_x(z) nom_variable_a_sauvegarder_x.value=data(:,j-1) eval([ nom_variable_a_sauvegarder_x '_' z ';']) end j=j+1; end i=i+1; j=1; end; %%%%%%%%%%%%%%%match colonne ordonnée%%%%%%%%%%%%%%%%%%%%% match_txt=strcmp (nom_variable_y(z), txt); size_match_txt=size(match_txt); i=1; j=1; while i<= size_match_txt(1) while j<= size_match_txt(2) if match_txt(i,j)==1 nom_variable_a_sauvegarder_y.name=nom_variable_y(z) nom_variable_a_sauvegarder_y.value=data(:,j-1) eval([ nom_variable_a_sauvegarder_y '_' z ';']) end j=j+1; end i=i+1; j=1; end; end;
j'aurais donc aimé sauvegarder tous les nom_variable_a_sauvegarder_y et nom_variable_a_sauvegarder_x correspondant aux sélection des variables à tracer que l'utilisateur a demandé. Et j'aurais voulu que l'utilisateur puisse choisir le nom qu'il souhaite donner à cet ensemble de variables en sauvegardant.
EDIT: J'oubliais, visiblement cela ne fonctionne pascar je n'ai pas le droit d'utiliser la commande eval([ nom_variable_a_sauvegarder_x '_' z ';']) pour des structures, j'obtiens donc le message d'erreur suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 t=temps; Rep='D:\enregistrement MatLab'; Nom='file_name_choisi'; [Nom,Rep]=uiputfile([Rep,Nom],'Sauvegarde des données'); if Nom~=0 eval(['save ',Rep,Nom,' t y x']) end
Auriez vous des idées pour arriver à faire ce que je souhaite, ou même de me permettre de simplifier mon code puisque n'ayant que peu d'expérience je doute avoir pris le chemin le plus aisé pour arriver à mes fins avec cette fonction sauvegarder
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14??? Error using ==> horzcat The following error occurred converting from char to struct: Error using ==> struct Conversion to struct from char is not possible. Error in ==> selection_donnee_trace_compresseur>pushbutton_sauvegarder_compresseur_Callback at 149 eval([ nom_variable_a_sauvegarder_x '_' z ';']) Error in ==> gui_mainfcn at 96 feval(varargin{:}); Error in ==> selection_donnee_trace_compresseur at 43
Je vous remercie d'avance d'avoir pris le temps de lire se message et je vous souhaite une bonne journée.








Répondre avec citation
Partager