永发信息网

matlab问题:解释下面三行代码(1,2,3标出的)

答案:2  悬赏:50  手机版
解决时间 2021-11-28 17:02
  • 提问者网友:像風在裏
  • 2021-11-28 08:23
matlab问题:解释下面三行代码(1,2,3标出的)
最佳答案
  • 五星知识达人网友:鸠书
  • 2021-11-28 09:04
从名字看,这段代码是一个弹出式菜单的回调函数。
第1句:获取弹出式菜单的当前值,是一个从1开始的整数,表示用户选择了菜单的第几项;
第2句:获取弹出式菜单的字符串,也就是菜单上显示的文字内容(注意是所有菜单项的文字,而不仅仅是当前选定项);
第3句:根据当前选定菜单项的文字来决定执行不同的分支。

对代码的解释就上面这些,但应该说明的是,上面的做法存在一些隐患:
1、弹出式菜单的String属性不一定是cell string,也可能是string matrix(或者使用“|”分隔的字符串,创建时会被转换为string matrix),例如:
h=uicontrol('style','popup','str','1|2');
s=get(h,'str')
可以看到,结果并不是一个cell。

2、有些环境下(和操作系统以及MATLAB版本有关),如果字符串中包含双字节字符(如中文),分支判断可能会失败。这是因为,一个汉字可以是用一个16位长度的数来表示,也可能用两个8位长度的数表示,例如,你可以试试:
char(47802)
char([186 186])
在命令窗口里都会显示为一个“汉”字,但显然,47802不等于[186 186]。

所以,对于弹出式菜单,直接使用获取的val进行分支判断是最安全的方式。当然,使用上面代码中的方法也有优势,那就是,按照这种实现方式,菜单项的顺序可以随便调整而不需要修改回调函数。
全部回答
  • 1楼网友:躲不过心动
  • 2021-11-28 10:03
get函数为获得图形对象的特性;
val=get(hObject,'Value');将对象hObject的Value属性值读出来,赋值给变量val
str=get(hObject,'String');将对象hObject的String属性值读出来,赋值给变量str
主要看看hObject为什么对象。
switch 为条件转移指令。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯