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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
如题:程序如下
; b/ \/ _& i& N( ffunction exm1151_1( )
2 ~' V- ~3 I; u! w3 o( x  i- {' Cglobal hedit hpop hlist. f8 p. _  O: V4 m% m: Z# Q
clf reset                                                                                                        %                                                <1>
) D6 y3 Z% k' J* {% xset(gcf,'unit','normalized','position',[0.1,0.4,0.85,0.35]);%设置图形窗大小
! O( O) W! m4 w& |) v) L$ [set(gcf,'defaultuicontrolunits','normalized');
; q6 K0 o# R6 t0 sset(gcf,'defaultuicontrolfontsize',11);. ~: T6 ^: @& C3 T  C# s
set(gcf,'defaultuicontrolfontname','隶书');
& d& Q# r# w- y) `: K: v9 Iset(gcf,'defaultuicontrolhorizontal','left');
. y! ^! \" J& P& Gset(gcf,'menubar','none');                                                                %删除图形窗工具条
) P/ }- O  R# Cstr='通过多行指令绘图的交互界面';, W( s1 W" C0 ?1 `
set(gcf,'name',str,'numbertitle','off');                                %书写图形窗名
5 S* s) s. F6 n8 W* `: uh_axes=axes('position',[0.05,0.15,0.45,0.70],'visible','off');%定义轴位框位置  
/ _6 B5 D6 c) A4 U3 auicontrol(gcf,'Style','text',...                                                %制作静态文本框7 C. {* a' L, `4 e
   'position',[0.52,0.87,0.26,0.1],...
! B& O# i# U/ h* m9 z/ X$ t   'String','绘图指令输入框');" K7 V' R' Z# y8 U& I. V9 \9 U
hedit=uicontrol(gcf,'Style','edit',...                                %制作可编辑文本框                <14>6 t1 x3 L& K1 @" F7 |
   'position',[0.52,0.05,0.26,0.8],...
- s: s5 P% K2 S3 P, G   'Max',2);                                                        %取2,使Max-Min>1,而允许多行输入                <16>, g, w& i1 i6 E/ ^# J: }
hpop=uicontrol(gcf,'style','popup',...                                %制作弹出菜单                        <17>/ Z" ^/ \- }/ _6 ^
   'position',[0.8,0.73,0.18,0.12],...
+ B1 o3 `# g5 w) ]   'string','spring|summer|autumn|winter');%设置弹出框中选项名                        <19>7 i& z  D& C+ K
hlist=uicontrol(gcf,'Style','list',...                                %制作列表框                        <20>7 }# u3 h3 i8 x* H9 t
   'position',[0.8,0.23,0.18,0.37],...
& r% B7 l$ ]& J0 j0 E1 O# [# s   'string','Grid on|Box on|Hidden off|Axis off',...%设置列表框中选项名        <22>+ l1 B& R0 [0 Y1 U
   'Max',2);                                                        %取2,使Max-Min>1,而允许多项选择                <23>
8 j: ?$ ~2 L+ L& Hhpush=uicontrol(gcf,'Style','push',...        %制作与列表框配用的按键                        <24>
  n- C* Q; e( ~0 o! d% [' `   'position',[0.8,0.05,0.18,0.15],'string','Apply');%                        <25>
7 I& [+ d  a% ~: X% Bset(hedit,'callback','calledit1');        %编辑框输入引起回调        <26>
+ Q; f9 |6 \, w: vset(hpop,'callback','calledit1');        %弹出框选择引起回调        <27>
$ ?9 Y2 c/ r/ _3 Uset(hpush,'callback','calledit1');        %按键引起的回调                <28>( ^$ W+ b# n, T5 a1 M
function calledit1( )
- ~! ]$ Z4 P8 h2 n1 nglobal hedit hpop hlist
- z+ z* k% C8 R& d3 b4 T  _ct=get(hedit,'string');                                %获得输入的字符串函数                                        <2>: p, l' _1 u, s* |2 O% }
vpop=get(hpop,'value');                                %获得选项的位置标识                                                <3>2 q0 H4 @6 w# s2 |2 K
vlist=get(hlist,'value');                        %获得选项位置向量                                                        <4>
# M# g& @" [! s) {/ R- j+ w* vif ~isempty(ct)                                                %可编辑框输入非空时                                                <5>
* J4 y" U" D5 g   eval(ct')                                                        %运行从编辑文本框送入的指令                                <6>      
: T" b! I2 l! R  j   popstr={'spring','summer','autumn','winter'};                %弹出框色图矩阵        <7>
8 H; ~4 [# a/ K; S2 g: a7 i/ f9 B* J   liststr={'grid on','box on','hidden off','axis off'};%列表框选项内容        <8>      
, J/ _6 ~3 W+ n( n% g& @" x1 r   invstr={'grid off','box off','hidden on','axis on'};%列表框的逆指令        <9>
$ A7 _) d, B* x3 B/ o   colormap(eval(popstr{vpop}))                %采用弹出框所选色图                                        <10>. E* Q$ t; s% J' f* o9 i5 a* `
   vv=zeros(1,4);vv(vlist)=1;               
" ]: h. q& H6 S   for k=1:47 a$ X+ U' `  E3 G2 j& r
      if vv(k);eval(liststr{k});else eval(invstr{k});end %按列表选项影响图形4 T7 C, X+ T: k/ ^1 k
   end) `/ J8 ~; I- Z" q
end$ i0 U) I% ]3 K0 e8 K% ]8 S
《掌握和精通matlab之gui》的代码,3 A; O- Y+ ?( b! R4 C" l2 h
可是按照此书上的例子运行出现:Undefined function or variable 'calledit1'. Error while evaluating UIControl Callback# F% W( O9 i. o% ^* p# j2 S
: u) `, R! q, B
书上的例子出的图
1 A  ~9 D& P! e
请教大神,非常感谢!
# [* t. p3 A- \0 x( _. U
. j1 i1 O+ C- M3 w3 e! x9 [; g& g- @  B  l( Z7 L4 K: d. s

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 15:50 , Processed in 0.187500 second(s), 26 queries , Gzip On.

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

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

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