matlab slider和edit控件

好久没用matlab了,用来开发算法是多么的友好、多么的效率呀~!收回我以前的那句话:matlab是玩具


言归正传,说说gui必备的三样元素:slider、edit、figure


用matlab写gui,就是为了贪图它的方便,用最简单的代码搞出一个适合跑算法的界面,这三个东西正合此意:通过slider或edit实时调整算法参数,figure实时绘画出调整后的结果,edit实时打印运算结果


slider的用法:

首先通过控件属性,可以修改slider的最大/最小值、调整步长。但调整步长是按照最大值1来计算的,如SliderStep为0.01,代表分100段,如果最大值是100,步长就是1,如果最大值是300,步长就是3,以此类推……

slider调整的步长是浮点数,即按一下slider的右箭头,增加的数值是小数,如果我们需要整型数,可以在slider的callback里面把get到的值进行强制类型转换,如:

sliderValue = get(handles.slider1,'Value');
ang = int32(sliderValue);
set(handles.slider1,'Value',ang);

slider控件的Callback一般写法:

function slider1_Callback(hObject, eventdata, handles)
sliderValue = get(handles.slider1,'Value');
set(handles.slider1,'Value',sliderValue);
func(sliderValue);% 自己编写的处理函数
guidata(hObject,handles);
一旦修改slider,就会刷新sliderValue的值,然后调用func

同时,也可以用一个edit控件显示slider的值,只要在Callback里面添加:

set(handles.edit1,'String', num2str(ang));
edit1是自己创建


edit的用法:

edit的用法大同小异

function edit1_Callback(hObject, eventdata, handles)
sliderValue=get(handles.edit1,'String');
sliderValue=str2num(sliderValue{1});
if (isempty(sliderValue) || sliderValue < 0 || sliderValue > 360)
    set(handles.slider1,'Value',0);
    set(handles.edit1,'String','0'); 
else
    set(handles.slider1,'Value',sliderValue);
end
要注意的是,第一句get到的sliderValue是一个cell,在str2num时要用sliderValue{1}的形式
下面的if语句是判断输入值是否合法,我这里是输入角度值,所以不能大于360

figure的用法:

在gui执行过程中,一旦建立了就一直存在,不管在什么地方建立的,这就带来很大的方便,在自己写的函数里面画图,返回时图像(figure)依然存在。然后就是要注意图像的刷新,需要刷新的地方加

hold off;
想保留上一次结果加

hold on;


总结:gui中仅仅包括设置参数、显示文本的简单控件,显示图像的任务交给figure






  • 8
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值