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.

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
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
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
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

Je vous remercie d'avance d'avoir pris le temps de lire se message et je vous souhaite une bonne journée.