3

我有一个矩阵要一次绘制一列。是否可以将滑块添加到 MATLAB 图(无需繁重的 GUI 编程),以便通过移动滑块,在当前轴上显示不同的列?

4

2 回答 2

4

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

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

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

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

于 2013-04-12T16:50:15.810 回答
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调用后手动设置它们。

于 2013-04-12T17:21:21.487 回答