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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
如题:程序如下" w+ j. F9 _- Y0 J& @: M+ b
function exm1151_1( )) }) F+ H0 ?2 x1 `1 s; z
global hedit hpop hlist# @' }1 @4 e- k
clf reset                                                                                                        %                                                <1>$ f$ {" s4 @0 H2 D& Y
set(gcf,'unit','normalized','position',[0.1,0.4,0.85,0.35]);%设置图形窗大小3 [( A2 k  @. z7 f
set(gcf,'defaultuicontrolunits','normalized');1 K3 o) j6 c- P5 m( X
set(gcf,'defaultuicontrolfontsize',11);
9 z9 v( k" j* K; kset(gcf,'defaultuicontrolfontname','隶书');, t4 B/ @" f0 l- f
set(gcf,'defaultuicontrolhorizontal','left');
# @5 x1 |  |1 |8 Z* E7 N+ _set(gcf,'menubar','none');                                                                %删除图形窗工具条
3 G2 g6 v" g" r% Z. X+ Rstr='通过多行指令绘图的交互界面';
6 ~4 d0 T. U& y1 y5 x' L& i1 F2 o* _( ~set(gcf,'name',str,'numbertitle','off');                                %书写图形窗名
* M* ~! ]) B( b9 n0 r- X- l& @% Eh_axes=axes('position',[0.05,0.15,0.45,0.70],'visible','off');%定义轴位框位置  
8 r# Y1 @6 L  Z- Cuicontrol(gcf,'Style','text',...                                                %制作静态文本框4 i9 }7 U0 F8 Z3 [7 ^
   'position',[0.52,0.87,0.26,0.1],...
9 f; t: e2 _9 ^% E   'String','绘图指令输入框');* T5 s2 q* b7 O$ [
hedit=uicontrol(gcf,'Style','edit',...                                %制作可编辑文本框                <14>, g- P2 e8 R' l- K
   'position',[0.52,0.05,0.26,0.8],.... Q, Z- {+ |1 t. Y% j
   'Max',2);                                                        %取2,使Max-Min>1,而允许多行输入                <16>
! Y0 M$ G, u! O* b! I" {hpop=uicontrol(gcf,'style','popup',...                                %制作弹出菜单                        <17>
3 E( O0 A1 i) \. G4 G; V; n' _3 M% J   'position',[0.8,0.73,0.18,0.12],...6 s% t( I" Y  \) U2 ~
   'string','spring|summer|autumn|winter');%设置弹出框中选项名                        <19>/ P3 ]* O+ ~8 F& X: i
hlist=uicontrol(gcf,'Style','list',...                                %制作列表框                        <20># b8 x# E8 G. v4 i1 u4 v. X4 ~& W
   'position',[0.8,0.23,0.18,0.37],...
% Z8 |) Z: I  ~1 ~6 o: s" _5 c" n   'string','Grid on|Box on|Hidden off|Axis off',...%设置列表框中选项名        <22>% l( S$ r& J0 \
   'Max',2);                                                        %取2,使Max-Min>1,而允许多项选择                <23>1 D# V7 B6 s, ~8 X5 r" J& q
hpush=uicontrol(gcf,'Style','push',...        %制作与列表框配用的按键                        <24>) K0 J, c" b5 A/ d1 f' `
   'position',[0.8,0.05,0.18,0.15],'string','Apply');%                        <25>4 `9 \4 @# `; w( `; e) k
set(hedit,'callback','calledit1');        %编辑框输入引起回调        <26>
" @$ }2 ^+ x5 A: s# ~7 h# Iset(hpop,'callback','calledit1');        %弹出框选择引起回调        <27>
' K2 H$ w' g" y3 ]set(hpush,'callback','calledit1');        %按键引起的回调                <28>
. q9 q. P# z" K6 y& D+ Q  dfunction calledit1( )
' x) f# C' `8 n2 Gglobal hedit hpop hlist3 _  N4 V3 z( ?9 T
ct=get(hedit,'string');                                %获得输入的字符串函数                                        <2>. t6 }, T( F% |7 _
vpop=get(hpop,'value');                                %获得选项的位置标识                                                <3>0 S: u/ {# z0 ~1 @; ]- y, z
vlist=get(hlist,'value');                        %获得选项位置向量                                                        <4>: m  |: a8 u, i
if ~isempty(ct)                                                %可编辑框输入非空时                                                <5>
7 _& ]( b$ F! B; m   eval(ct')                                                        %运行从编辑文本框送入的指令                                <6>       " Y, ^9 Z  K6 Q/ |/ F
   popstr={'spring','summer','autumn','winter'};                %弹出框色图矩阵        <7>
$ q1 F- M/ ]0 e- D0 l   liststr={'grid on','box on','hidden off','axis off'};%列表框选项内容        <8>      
( X1 Q9 G# s: a# ^  h  N( ]9 u1 e   invstr={'grid off','box off','hidden on','axis on'};%列表框的逆指令        <9>
3 ?3 W8 ]$ x4 V1 S: D! ]   colormap(eval(popstr{vpop}))                %采用弹出框所选色图                                        <10>7 I/ y: U  u& ?) S( b% ^$ p& S/ z
   vv=zeros(1,4);vv(vlist)=1;               4 G* n) I- |9 t/ j# K# S1 @  ~
   for k=1:4
& y! c4 D1 s5 B4 R& A      if vv(k);eval(liststr{k});else eval(invstr{k});end %按列表选项影响图形
6 g: h! n0 K4 T" h5 C* s   end
* U! |% Z' H# D& \) M3 Lend  ^. ~- @1 w  c, \# Y3 F) j9 x
《掌握和精通matlab之gui》的代码,# c, @7 b6 ~  O% W. Z8 i$ o/ o
可是按照此书上的例子运行出现:Undefined function or variable 'calledit1'. Error while evaluating UIControl Callback* J. _1 w2 A1 u- Z
+ X+ R0 ]9 o: y& J
书上的例子出的图

+ A/ Z8 A$ G; M/ R6 W. H/ ~请教大神,非常感谢!
6 ~' \# D5 G3 o" `
) N- P8 i8 y" k" X- P+ l1 }( C! J5 w) a( u6 r2 I  [1 x

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-5 06:34 , Processed in 0.187500 second(s), 26 queries , Gzip On.

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

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

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