找回密码
 注册
关于网站域名变更的通知
查看: 431|回复: 1
打印 上一主题 下一主题

《掌握和精通matlab之gui》的疑问请教大神。

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-7-17 13:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
如题:程序如下
+ B8 Z/ u# a4 D) T& Efunction exm1151_1( )
5 M) U( n( i" l0 ?- ?' _6 yglobal hedit hpop hlist
* k: X( V$ b% a* `2 I7 Rclf reset                                                                                                        %                                                <1>
: B+ e. l0 n+ M. i$ Y& {7 Mset(gcf,'unit','normalized','position',[0.1,0.4,0.85,0.35]);%设置图形窗大小
0 o6 \7 q% G6 Q5 X" ?6 q3 _set(gcf,'defaultuicontrolunits','normalized');9 v' P: L4 ^) m5 j; `
set(gcf,'defaultuicontrolfontsize',11);
4 v4 x5 q( T, d" R& |( wset(gcf,'defaultuicontrolfontname','隶书');$ A& C0 j5 t+ A" X
set(gcf,'defaultuicontrolhorizontal','left');  @$ x: U/ p( I5 r0 O
set(gcf,'menubar','none');                                                                %删除图形窗工具条8 V7 Y7 S) Q$ c0 Z' N1 F6 P
str='通过多行指令绘图的交互界面';; S# f  n# ^, e0 r, w
set(gcf,'name',str,'numbertitle','off');                                %书写图形窗名
" r$ ~9 p8 d: y3 o9 j8 E0 Mh_axes=axes('position',[0.05,0.15,0.45,0.70],'visible','off');%定义轴位框位置  0 H8 M+ \0 |' p8 N% u' A  }
uicontrol(gcf,'Style','text',...                                                %制作静态文本框' G$ r6 g) B. U: L
   'position',[0.52,0.87,0.26,0.1],...: k1 e7 I, z8 N: p7 |" g
   'String','绘图指令输入框');
4 p1 b2 q2 H2 ?  Q. y5 l$ d  Jhedit=uicontrol(gcf,'Style','edit',...                                %制作可编辑文本框                <14>
- X3 H4 Q( f8 K) h/ a- l( \9 }   'position',[0.52,0.05,0.26,0.8],...# L. I5 Y" \# U1 d3 ~0 l: k
   'Max',2);                                                        %取2,使Max-Min>1,而允许多行输入                <16>
- [3 n8 \, T) x6 phpop=uicontrol(gcf,'style','popup',...                                %制作弹出菜单                        <17>
; ^6 s, h( M, Q( }) B6 W: s   'position',[0.8,0.73,0.18,0.12],...; v) f4 q! F) L$ w' b8 J0 n( ]
   'string','spring|summer|autumn|winter');%设置弹出框中选项名                        <19>) M1 |( p6 V$ x
hlist=uicontrol(gcf,'Style','list',...                                %制作列表框                        <20>
; @, ]/ m, z0 f( O5 e( D9 }   'position',[0.8,0.23,0.18,0.37],...$ g% q4 g! C) s
   'string','Grid on|Box on|Hidden off|Axis off',...%设置列表框中选项名        <22>
. Y4 g& f" q. P& M   'Max',2);                                                        %取2,使Max-Min>1,而允许多项选择                <23>
) _( w" s. h- {0 c2 c* O1 t8 i* Shpush=uicontrol(gcf,'Style','push',...        %制作与列表框配用的按键                        <24>7 {  @0 k, i1 \6 o8 I
   'position',[0.8,0.05,0.18,0.15],'string','Apply');%                        <25>! D3 ~6 q4 t, D6 i' r+ A
set(hedit,'callback','calledit1');        %编辑框输入引起回调        <26>
$ m5 D1 H, B9 M0 p/ wset(hpop,'callback','calledit1');        %弹出框选择引起回调        <27>
, Q$ b' O* i" u" _1 fset(hpush,'callback','calledit1');        %按键引起的回调                <28>
& a+ v+ H6 ?0 A  F  Q% x$ gfunction calledit1( )
7 S8 C. h% k% X  i% x* @5 Yglobal hedit hpop hlist
, k- k4 ~1 ?( |6 N( kct=get(hedit,'string');                                %获得输入的字符串函数                                        <2>5 @+ T5 R0 ~$ s" F5 f% z, H
vpop=get(hpop,'value');                                %获得选项的位置标识                                                <3>7 q2 _" T- H! ^- t! Z
vlist=get(hlist,'value');                        %获得选项位置向量                                                        <4>
  P2 P/ W. ~# y( Bif ~isempty(ct)                                                %可编辑框输入非空时                                                <5>" v' M+ w4 f) ~, D
   eval(ct')                                                        %运行从编辑文本框送入的指令                                <6>       & G- F6 q- `7 j& O3 h+ s
   popstr={'spring','summer','autumn','winter'};                %弹出框色图矩阵        <7>& Q% u4 V+ c) a/ `( V
   liststr={'grid on','box on','hidden off','axis off'};%列表框选项内容        <8>       & z, I7 F7 g( D* b. B0 V, A
   invstr={'grid off','box off','hidden on','axis on'};%列表框的逆指令        <9>& F/ ^/ Q+ E' C- V7 ]5 e
   colormap(eval(popstr{vpop}))                %采用弹出框所选色图                                        <10>
+ K) j; j) v7 s; s. A   vv=zeros(1,4);vv(vlist)=1;               2 J% }* ~$ P3 `$ \( e+ C% O6 `
   for k=1:4& Z& m! O6 L( ?1 L" ?( q/ _
      if vv(k);eval(liststr{k});else eval(invstr{k});end %按列表选项影响图形6 a+ f! H3 B3 V
   end
+ U" m! i/ D; S6 U- Iend
! D1 [& o. y2 ]6 Y3 u' S《掌握和精通matlab之gui》的代码,
1 Y, K0 S* u0 \6 w可是按照此书上的例子运行出现:Undefined function or variable 'calledit1'. Error while evaluating UIControl Callback3 K. V0 b% _; M9 n

. x% n8 {; j0 m3 B( C) C5 _3 q$ w
书上的例子出的图
" E! M  ?# Q  O9 p. j
请教大神,非常感谢!
/ M0 \8 p8 |& t4 f4 E# X# j, u. o% b8 k5 y- C7 z" [
7 A! [/ Q! Y' C" D6 P

该用户从未签到

2#
发表于 2020-7-17 14:41 | 只看该作者
eval(ct')    ,为什么要用单个单引号?eval(ct)或者eval(‘ct’),不可以呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-24 00:55 , Processed in 0.078125 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表