Поведение шага слайдера MATLAB

у меня есть созданный виджет слайдера, используя руководство в MATLAB 2012a. Я хочу, чтобы он управлял осью, которая отображает изображения, в которых слайдер проходит через последовательность из них.

Я установил свойства слайдера для Min, Max и SliderStep в одной части m-файла.

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

в обратном вызове слайдера я проверил, что Min, Max и SliderStep установлены правильно.

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

однако, когда я нажимаю на стрелки слайдера, я прыгаю только между начало и конец. Каждый раз, когда в командном окне печатаются правильные Min, Max, SliderStep и Value (хотя только 1 или sliderMax). Я не могу шагать с шагом 1 для просмотра изображений внутри последовательности.

1 ответов


на фактический размер шага слайдера масштабируется в диапазоне: ActualStep = SliderStep * (Max - Min) следующая строка должна решить вашу проблему:sliderStep = [1, 1] / (sliderMax - sliderMin). Вы, вероятно, должны проверить, что вы не делите на ноль перед этой линией. Обратите внимание, что ползунки не будут отображаться, если Max не превышает Min.