L'utilisation d'un curseur de MATLAB GUI
Vraiment simple question. Je souhaite créer GUI
avec un simple plot
qui change quelque chose avec un curseur. J'ai été en utilisant l'interface graphique et un curseur+texte sur un panneau et axies1. Donc, pour commencer, je souhaite juste avoir le curseur qui va de 1:10 (aucune valeur) et la mise à l'échelle de l'axe des valeurs (1:10). J'ai importé mes données dans l'interface graphique, donc, laissant de côté le générique de générer automatiquement le code que j'ai:
Sous Graphslide_OpeningFcn
handles.OutAirTemp = OutAirTemp;
handles.SupAirTemp = SupAirTemp;
guidata(hObject,handles);
handles.a = get(handles.slider2,'Value');
plot(handles.SupAirTemp,handles.a*handles.OutAirTemp)
Sous slider2_Callback
a = get(hObject,'Value')
Donc clairement, il me manque quelque chose! Tous les pointeurs, de la théorie ou de code sera grandement reçu.
Edit1
Il n'y a pas de message d'erreur ci-dessus. Toutefois, elle n'a pas changé le graphique lorsque vous faites glisser le curseur.
Vous devez vous connecter pour publier un commentaire.
Le curseur de rappel est l'un exécuté une fois que vous la relâchez. Dans le code ci-dessus, vous devez mettre à jour les valeurs qui vous intrigue dans les axes dans le curseur de rappel; vous êtes assez proche de la réalité. Je pense que l'évolution de ces lignes:
à l'intérieur du curseur de rappel à faire ce que vous voulez.
En aparté, vous pouvez regarder le code suivant pour générer une interface simple avec axes, un curseur et une zone d'édition dans laquelle la valeur actuelle du curseur est affichée.
Vous pouvez configurer les propriétés du curseur comme le min, max et l'étape en tant que bien pour obtenir le comportement que vous voulez.
Espère que ça aide!
plot
là-bas, alors qu'il a le non mis à l'échelle graphique sur démarrer. Il recharge les axes avec de l'échelle graphique qui est exactement ce que je veux.clc
clear all
close all
effacer de la mémoire au démarrage de l'interface graphique? Je devine pas mais il pense qu'il est préférable de vérifier et que ça ne vaut pas un ensemble de toute la question.Vous ne dites pas ce message d'erreur vous obtenez ou quel est le problème, donc on ne peut pas deviner ce qui ne va pas. Cependant, il ya quelques choses que je vois sont fausses:
plot
commandepour votre
slider2_Callback
, vous avez probablement besoin dehandles.a = get(hObject,'Value')
guidata(hObject,handles);
pour votre
Graphslide_OpeningFcn
, vous ne dites pas oùOutAirTemp
etSupAirTemp
viennent. Je voudrais aussi le problème de laguidata
à la fin de la fonction plutôt que dans le milieu que vous êtes en train de faire.OutAirTemp
etSupAirTemp
sont importés et d'un complot bien. J'ai déplacé guidata à la fin de la fonction Graphslide_OpeningFcn. J'ai ajouté dans les poignées.axes1 mais cela n'a rien changé. Qu'entendez-vous par votre premier point? Merciplot
, je voulais direplot(handles.ax,handles.SupAirTemp,handles.a*handles.OutAirTemp)
oùhandles.ax
est les poignées de vos axes (obtenus ailleurs dans le GUI, où vous créez d'abord les axes). Cependant, comme @Benoit_11 souligné, leplot
appel doit être dans le curseur de rappel, pas dans l'interface utilisateur d'ouverture de la fonction.