图上的MATLAB简单滑块

时间:2013-04-12 15:52:08

标签: matlab matlab-figure

我有一个矩阵可以一次绘制一列。是否可以在MATLAB图形中添加滑块(无需大量的GUI编程),这样通过移动滑块,当前轴中会显示不同的列?

2 个答案:

答案 0 :(得分:4)

创建滑块的代码是合理的最小值:

uicontrol('Style', 'slider', 'Callback', @sliderCallback);

function sliderCallback(hObject, evt)
    fprintf('Slider value is: %d\n', get(hObject, 'Value') );
end

您需要查看Position等属性,设置图上的位置,MaxMin来设置值的可能范围。另请注意,如果您在函数内执行此操作,则sliderCallback可以是嵌套函数,这可能会使重绘您的显示更容易。如果您在脚本中运行此操作,则sliderCallback必须位于单独的文件中。

答案 1 :(得分:3)

以下是滑块的代码,用于绘制相应的列:

m = ones(5,1)*(1:5);
slmin = 1;
slmax = size(m,2);
plot(m(:,1))
hsl = uicontrol('Style','slider','Min',slmin,'Max',slmax,...
                'SliderStep',[1 1]./(slmax-slmin),'Value',1,...
                'Position',[20 20 200 20]);
set(hsl,'Callback',@(hObject,eventdata) plot(m(:,round(get(hObject,'Value')))) )

修改

为了获得更好的性能,您只需更新YData值:

set(hsl,'Callback',@(hObject,eventdata) ...
    set(hline,'YData',m(:,round(get(hObject,'Value')))) )

要修正y轴限制,只需在首次ylim([0 6])通话后使用plot手动设置它们。