Récupérer une valeur dans une listbox
Bonjour,
C'est encore moi. Mais si je souhaite mettre en ligne un protocole qui tiennes debout et il me faut le valider avant.
Bref j'ai un fichier de données qui se trouve sous format ".mat" et qui comporte un tableau "tracks" de données(spectres colonnes par colonnes).
Je ne peux pas arriver à sélectionner dans ce tableau les données, qui au demeurant s'affiche très bien toutes ensembles, les données que je souhaite (un spectre par colonne). Je souhaiterai voir s'afficher les données colonnes par colonnes les une après les autres selon le choix de la listbox et non pas tout ou rien. J'ai réussi a tout afficher, (mais c'est un peu le bazard), ou alors il faut que je mettes la valeur de la colonne dans le script en dur. Voici le code :
Code:
1 2 3 4 5
| % --- Executes on selection change in listbox1.
function listbox1_Callback(hObject, eventdata, handles)
g = {get(hObject,'Value')}% returns selected item from listbox1;
tracks = handles.tracks(1:handles.j,77);%C'est là que je voudrai remplacer la valeur 77,par celle de la listbox :g;
plot (handles.axes1,handles.x,tracks,'.' );%trace les x,y dans le graphe axes1; |
Bref n'étant pas un expert dans le domaine des tableaux, tableaux de cellules etc..., je n'arrive a rien. Je vous mets en document attaché le fichier .mat qui va avec. Ne m'en voulez pas mais après, je promets de faire un version commentée en français et compréhensible par tout le monde, sinon je laisserai mon adresse !!, et ma tête a coupée.
[débutant].Récupérer un valeur dans une listbox : suite
Bonjour,
J'ai tester la deuxième partie de votre code, mais j'ai encore un légé problème, c'est qu'au lieu de me sélectionner le spectre 56 ( par exemple), il me sélectione le spectre 5 et le 6 , mais pas le 56. J'ai vérifié les valeurs de g et de texte et de ch_sel tout a l'air correcte.
Code:
1 2 3 4 5 6
| valeur = get(hObject,'Value')% returns selected item from listbox1;
texte=get(hObject,'String');%recupere TOUTES les chaines de caracteres de la liste
ch_sel = texte{valeur}%La chaine selectionnee est donc :
g = num2str(ch_sel)%Comme c'est un texte il faut le transformer en nombre :
tracks = handles.tracks(1:handles.j,g);%C'est le spectres selectionné pour le graphe N°g;
plot (handles.axes1,handles.x,tracks,'.' );%trace le x,y dans le graphe axes1; |
Cela marche tres bien pour les 9 premières valeurs. Mais a partir des nombres a deux chiffres c'est le bazard. J'avoue que je ne vois pas du tout pourquoi cela se comporte ainsi. J'ai vérifié dans le fichier data.mat que les spectres ne soient pas mélangés. Je vous remets les fichiers en doccuments attachés pour que vous compreniez mieux ce qui se passe.(il y a un fichier figure, un fichier essai.m, et le fichier de data).
[débutant]récupérer une valeur dans une liste box
bonjour,
Voila ce qui m'amène, je pense qu'il y a une petite erreur qui s'est glissée dans le code qui a été mis précédemment. En effet je pense que ce n'est pas la commande num2srt qu'il faut utiiliser pour transformer les chaines en nombres , mais la commande str2double. En tout cas, pour le cas qui me préoccupe, cela marche tres bien. Je pense que caro-line est fatiguée d'aider des gens comme moi qui commencent avec matlab et que d'autres pourraient lui prèter main forte.
PS voici le code que j'utilise et qui marche dans mon cas :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| function listbox1_Callback(hObject, eventdata, handles)
% hObject handle to listbox1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%Hits : contents = get(hObject,'String')% returns listbox1 contents as cell array
valeur = get(hObject,'Value');% returns selected item from listbox1;
texte=get(hObject,'String');%recupere TOUTES les chaines de caracteres de la liste
ch_sel = texte{valeur};%La chaine selectionnee est donc celle ci;
g = str2double(ch_sel);%Comme c'est du texte il faut le transformer en nombre;
global g;
tracks = handles.tracks(1:handles.j,g);%C'est le spectre N°g selectionné pour le graphe axe1;
grid on
plot (handles.axes1,handles.x,tracks,'.' );%trace le x,y dans le graphe axes1; |
Si je peux je vous donnerai tout le code qui marche sur le forum dans quelque temps( mais il faut que je teste tout ).