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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
如题:程序如下9 @/ U0 g  J0 w. R
function exm1151_1( )8 n+ V$ t% @$ e+ [; k  ?
global hedit hpop hlist
% R9 @2 K- C/ a, Eclf reset                                                                                                        %                                                <1>6 q/ b- w( k' w) v  `$ q. f. Q8 b' Z
set(gcf,'unit','normalized','position',[0.1,0.4,0.85,0.35]);%设置图形窗大小
4 W, O/ n5 S0 s! Z8 j. y$ e4 Kset(gcf,'defaultuicontrolunits','normalized');
( c( |! T) {7 W4 k* p/ z6 _set(gcf,'defaultuicontrolfontsize',11);
4 Q' S9 _& b0 W0 ?7 ^! Eset(gcf,'defaultuicontrolfontname','隶书');% M8 d4 j8 b# `- v5 w% l- h
set(gcf,'defaultuicontrolhorizontal','left');
3 ?" u% z0 D, @9 h4 @1 Gset(gcf,'menubar','none');                                                                %删除图形窗工具条
+ h/ G/ z/ b9 ]. ~0 A. O1 f+ Xstr='通过多行指令绘图的交互界面';& [2 b# e: y, M  I, Y  w" f4 k$ ~
set(gcf,'name',str,'numbertitle','off');                                %书写图形窗名
  `. o) w/ t- u" R8 S$ t1 Zh_axes=axes('position',[0.05,0.15,0.45,0.70],'visible','off');%定义轴位框位置  
/ v; M7 G# U+ x, S4 p, Y  _uicontrol(gcf,'Style','text',...                                                %制作静态文本框& W6 z1 ]9 c2 E) m
   'position',[0.52,0.87,0.26,0.1],...9 g$ K* s/ C9 V( V
   'String','绘图指令输入框');5 C: X' @9 ~& Q" K, l  N
hedit=uicontrol(gcf,'Style','edit',...                                %制作可编辑文本框                <14>
: |: ^5 H, b8 J7 e9 j8 a% P   'position',[0.52,0.05,0.26,0.8],...# r; G7 G( S$ K& Q0 ]
   'Max',2);                                                        %取2,使Max-Min>1,而允许多行输入                <16>, H2 z% s0 m6 Q. _7 W. u3 a
hpop=uicontrol(gcf,'style','popup',...                                %制作弹出菜单                        <17>
- g. K) u+ z- _: I8 z. ?5 f   'position',[0.8,0.73,0.18,0.12],.... f* E  U1 U) w
   'string','spring|summer|autumn|winter');%设置弹出框中选项名                        <19>5 s9 x# k' e9 V/ H- Z. d# y
hlist=uicontrol(gcf,'Style','list',...                                %制作列表框                        <20>
3 Q0 M- u& D9 V5 ^" W% ?7 F6 a' O   'position',[0.8,0.23,0.18,0.37],...- Y" h2 x# K* `- i2 M, O) F
   'string','Grid on|Box on|Hidden off|Axis off',...%设置列表框中选项名        <22>; U0 y" ~! \6 j- y* q" }
   'Max',2);                                                        %取2,使Max-Min>1,而允许多项选择                <23>
0 ~; a3 ^' q/ {) ]8 chpush=uicontrol(gcf,'Style','push',...        %制作与列表框配用的按键                        <24>
8 t. M# ^, m: l& t' _   'position',[0.8,0.05,0.18,0.15],'string','Apply');%                        <25>
) {- i7 Z' K' m' ~+ `$ Rset(hedit,'callback','calledit1');        %编辑框输入引起回调        <26>
  y( B$ f9 F/ M1 [/ eset(hpop,'callback','calledit1');        %弹出框选择引起回调        <27>9 g2 i, D, T7 @
set(hpush,'callback','calledit1');        %按键引起的回调                <28>" O8 `3 T, x: |# j& B
function calledit1( )# Y0 @, y8 }- g
global hedit hpop hlist
2 m6 i6 A/ s& \( C3 r9 Jct=get(hedit,'string');                                %获得输入的字符串函数                                        <2>
7 H8 G5 T$ {$ w  J& Yvpop=get(hpop,'value');                                %获得选项的位置标识                                                <3>. A7 a$ O$ i8 s' @
vlist=get(hlist,'value');                        %获得选项位置向量                                                        <4>
9 W, ]6 b$ j" w5 g5 Pif ~isempty(ct)                                                %可编辑框输入非空时                                                <5>! E* O& C' v7 \7 `, W* q9 m
   eval(ct')                                                        %运行从编辑文本框送入的指令                                <6>      
- l0 N, \( @1 l. s1 I6 J( x   popstr={'spring','summer','autumn','winter'};                %弹出框色图矩阵        <7>$ F5 @/ h# b  b+ `) G) ^
   liststr={'grid on','box on','hidden off','axis off'};%列表框选项内容        <8>       : e7 B+ ]3 C0 }9 {3 E/ ~, K
   invstr={'grid off','box off','hidden on','axis on'};%列表框的逆指令        <9>
' c- |% |) C  B( A) d3 K3 d9 ?3 o) J" I! f   colormap(eval(popstr{vpop}))                %采用弹出框所选色图                                        <10>
8 A% J( T7 I4 d; I* I; d# z* f   vv=zeros(1,4);vv(vlist)=1;               8 b8 F: W, d% x7 g) d/ ^9 @5 f4 B3 N. ^& x
   for k=1:4
  M- Q) J8 _6 z/ a0 K& R* Y      if vv(k);eval(liststr{k});else eval(invstr{k});end %按列表选项影响图形% I; g7 G% F: ~6 |) e
   end& X5 _7 |! m0 n( P8 r
end
/ K* t( X- k! d; v: L0 N$ k《掌握和精通matlab之gui》的代码,
" H+ q4 \- u5 y' ?可是按照此书上的例子运行出现:Undefined function or variable 'calledit1'. Error while evaluating UIControl Callback3 H. W' B2 X* y7 R( A1 V9 t/ M* ~( T
/ e. Z2 [, r% u5 R7 O1 V3 Q* N
书上的例子出的图
. d$ b  t8 }2 G1 v
请教大神,非常感谢!3 H! B* N; h+ T3 x, q$ U; Q
/ H3 k0 v9 x& K8 T9 A3 z) e. D' _
- }, O" {; X/ U/ U! @( R1 @

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-6 08:34 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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