问题 MATLAB滑块步骤行为


我在MATLAB 2012a中使用GUIDE创建了一个滑块小部件。我希望它控制一个显示图像的轴,其中滑块逐步执行它们的序列。

我在m文件的一部分中为Min,Max和SliderStep设置了滑块的属性。

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的增量步进以查看序列内部的图像。


7148
2018-05-04 15:42


起源



答案:


实际滑块步长 按范围缩放: ActualStep = SliderStep * (Max - Min) 以下行应解决您的问题: sliderStep = [1, 1] / (sliderMax - sliderMin)。您应该检查在此行之前是否除以零。请注意,如果滑块不会渲染 Max 不大于 Min


12
2018-05-04 15:58



谢谢。你的建议解决了我的问题。 - Noren
无法编辑答案;更新的链接: mathworks.com/help/matlab/ref/uicontrol-properties.html - aguadopd


答案:


实际滑块步长 按范围缩放: ActualStep = SliderStep * (Max - Min) 以下行应解决您的问题: sliderStep = [1, 1] / (sliderMax - sliderMin)。您应该检查在此行之前是否除以零。请注意,如果滑块不会渲染 Max 不大于 Min


12
2018-05-04 15:58



谢谢。你的建议解决了我的问题。 - Noren
无法编辑答案;更新的链接: mathworks.com/help/matlab/ref/uicontrol-properties.html - aguadopd