添加滑块会删除工具栏

时间:2013-12-12 16:41:53

标签: matlab user-interface 3d slider pan

我在Matlab上遇到了一个奇怪的行为。我想用可变参数在3D中绘制一个简单的曲面。

简单示例:

param = 0.5;
[x,y]=meshgrid(linspace(-1,1,10),linspace(-1,1,10));
z = param*x./y;
surf(x,y,z);

我得到了经典的3D图片:http://i.imgur.com/2KrnWeH.png

我现在正试图在我的图上添加一个滑块来直接控制参数的值:

function test()
    figHandle=figure;
    param = 0.5;
    [x,y]=meshgrid(linspace(-1,1,10),linspace(-1,1,10));
    z = param*x./y;
    surfacePlotted = surf(x,y,z);

    sliderPosition=[10 400 200 20];

    hsl = uicontrol('Style','slider','Min',-2,'Max',2,'SliderStep',[1 1]./(10),'Value',param,'Position',sliderPosition,'Callback',{@updatePlot,surfacePlotted});
end

function updatePlot(hObject,~,eventdata)
    surfacePlotted=eventdata;
    param = get(hObject,'Value');
    x=get(surfacePlotted,'XData');
    y=get(surfacePlotted,'YData');
    z = param*x./y;
    set(surfacePlotted,'ZData',z);
end

我得到一个漂亮的滑块,我可以点击它来修改参数:http://i.imgur.com/TqkMSmH.png i.imgur.com/i9xablF.png(带幻灯片其他位置的第二张图片

然而,主菜单栏不再在这里,特别是“Pan”图标,它允许我在3D中操纵图形。

我尝试在滑块定义

后手动添加它
uicontrol('MenuBar','figure');

我也试过了:

set(figHandle, 'MenuBar', 'figure');
到目前为止没有成功。

任何人都已经遇到过这个问题并找到了解决方法吗?或者我只是简单地错过了一些东西?

谢谢:)

编辑:编辑过的图片链接,我把它们用来管理它们

1 个答案:

答案 0 :(得分:0)

这是在Yair的网站(undocumentedmatlab)中提到的:

uicontrol side-effect: removing figure toolbar

您只需将此行添加到您的代码中:

set(figHandle,'toolbar','figure');