我有一个矩阵可以一次绘制一列。是否可以在MATLAB图形中添加滑块(无需大量的GUI编程),这样通过移动滑块,当前轴中会显示不同的列?
答案 0 :(得分: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
必须位于单独的文件中。
答案 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
手动设置它们。