2012-05-04 5 views
11

Ho creato un widget di scorrimento utilizzando GUIDE in MATLAB 2012a. Voglio che controlli un asse che visualizza le immagini in cui il cursore scorre attraverso una sequenza di esse.Comportamento del cursore del MATLAB

Ho impostato le proprietà del cursore per Min, Max e SliderStep in una parte del m-file.

sliderMin = 1; 
sliderMax = size(result); % this is variable 
sliderStep = [1, 1]; % major and minor steps of 1 

set(handles.slider, 'Min', sliderMin); 
set(handles.slider, 'Max', sliderMax); 
set(handles.slider, 'SliderStep', sliderStep); 
set(handles.slider, 'Value', sliderMin); % set to beginning of sequence 

Nella richiamata cursore, ho verificato Min, Max, e SliderStep siano impostate correttamente.

sliderMin = get(hObject, 'Min') % correct 
sliderMax = get(hObject, 'Max') % correct 
sliderStep = get(hObject, 'SliderStep') % correct 
currentSliderStep = get(hObject, 'Value') % correct, 1 at start 

Tuttavia, quando faccio clic sulle frecce del cursore, salgo solo tra l'inizio e la fine. Ogni volta che Min, Max, SliderStep e Value corretti (anche se solo 1 o sliderMax) vengono stampati nella finestra di comando. Non riesco a inserire incrementi di 1 per visualizzare le immagini all'interno della sequenza.

risposta

12

Il numero actual slider step size viene ridimensionato nell'intervallo: ActualStep = SliderStep * (Max - Min) La seguente riga dovrebbe risolvere il problema: sliderStep = [1, 1]/(sliderMax - sliderMin). Probabilmente dovresti controllare di non dividere per zero prima di questa linea. Si noti che i cursori non verranno visualizzati se Max non è maggiore di Min.

+0

Grazie. Il tuo suggerimento ha risolto il mio problema. – Noren

+0

Impossibile modificare la risposta in modo tale; link più recente: https://www.mathworks.com/help/matlab/ref/uicontrol-properties.html – aguadopd