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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
如题:程序如下
0 w  G) z  \5 v) z0 I  O- @) qfunction exm1151_1( )
$ W, q) m$ g& i& U. d8 lglobal hedit hpop hlist
6 A* p1 S# G* i5 U, ^: t6 K! p( lclf reset                                                                                                        %                                                <1>: \/ v; B1 `3 b) o& Z
set(gcf,'unit','normalized','position',[0.1,0.4,0.85,0.35]);%设置图形窗大小
- U; ?% C/ q; a7 i2 S( ^! oset(gcf,'defaultuicontrolunits','normalized');6 \# v* E4 H& F3 }5 G$ N
set(gcf,'defaultuicontrolfontsize',11);
9 z( x2 A6 U8 y# W$ \set(gcf,'defaultuicontrolfontname','隶书');! X* Y6 C: U) ]  H7 p
set(gcf,'defaultuicontrolhorizontal','left');
3 s0 L% F) e% `& w& _, jset(gcf,'menubar','none');                                                                %删除图形窗工具条1 z" z# _/ s8 f' ?8 b  o
str='通过多行指令绘图的交互界面';
; z7 `2 O0 S9 k1 d& n. K8 A: Nset(gcf,'name',str,'numbertitle','off');                                %书写图形窗名
9 W' {2 G: k' d1 n5 o& `$ _, Mh_axes=axes('position',[0.05,0.15,0.45,0.70],'visible','off');%定义轴位框位置  , Z. k) ~& I$ i7 }
uicontrol(gcf,'Style','text',...                                                %制作静态文本框  R* R5 p( `. [3 T( t- r. S
   'position',[0.52,0.87,0.26,0.1],...6 l! d9 R) c' y# A( `
   'String','绘图指令输入框');
3 E  p* V. i) Z% B" Fhedit=uicontrol(gcf,'Style','edit',...                                %制作可编辑文本框                <14>7 c6 c; D- f0 f  j! N8 s
   'position',[0.52,0.05,0.26,0.8],...
# u8 h# @! ~6 |' Q. g   'Max',2);                                                        %取2,使Max-Min>1,而允许多行输入                <16>
& K) V( G( C$ w7 J: U! b, ihpop=uicontrol(gcf,'style','popup',...                                %制作弹出菜单                        <17>; {* d; A" C# W6 U* e9 y
   'position',[0.8,0.73,0.18,0.12],...
3 ?4 |) l; Z" Z1 M7 Y3 f( W0 m   'string','spring|summer|autumn|winter');%设置弹出框中选项名                        <19>; G8 m- O) b8 a" {. |' |
hlist=uicontrol(gcf,'Style','list',...                                %制作列表框                        <20>9 e/ H, J* G1 L6 R( n2 s' z
   'position',[0.8,0.23,0.18,0.37],...; t/ u7 c2 W3 l7 V5 b
   'string','Grid on|Box on|Hidden off|Axis off',...%设置列表框中选项名        <22>
2 K- o" I" w, K2 F/ }. N   'Max',2);                                                        %取2,使Max-Min>1,而允许多项选择                <23>
; x# y- j# L& C  l+ Mhpush=uicontrol(gcf,'Style','push',...        %制作与列表框配用的按键                        <24>
( O0 V+ f0 p8 n+ ^* ?( a, I: j0 Z' p. f   'position',[0.8,0.05,0.18,0.15],'string','Apply');%                        <25>
9 F. U% w+ b* iset(hedit,'callback','calledit1');        %编辑框输入引起回调        <26>( D8 z/ T) Z5 b- v# r( I
set(hpop,'callback','calledit1');        %弹出框选择引起回调        <27>
  V2 [7 V" c' Oset(hpush,'callback','calledit1');        %按键引起的回调                <28>+ F% p6 F. C! _# F
function calledit1( )
1 M, |0 u7 b4 e3 J7 b1 }global hedit hpop hlist, o( d8 D+ C7 u+ t1 w5 ]4 M
ct=get(hedit,'string');                                %获得输入的字符串函数                                        <2>
' F- ]7 H3 _4 u! F& f' Avpop=get(hpop,'value');                                %获得选项的位置标识                                                <3>: z4 b7 ]4 T! D9 N5 U8 ]( z# G
vlist=get(hlist,'value');                        %获得选项位置向量                                                        <4># q5 E' A1 ]- L/ y# o
if ~isempty(ct)                                                %可编辑框输入非空时                                                <5>
$ m9 Q4 W  X; n4 ?& f/ B# g, t' f   eval(ct')                                                        %运行从编辑文本框送入的指令                                <6>      
. e/ I4 j; _+ o3 d2 x1 n   popstr={'spring','summer','autumn','winter'};                %弹出框色图矩阵        <7>" O3 f& `2 V: U3 G
   liststr={'grid on','box on','hidden off','axis off'};%列表框选项内容        <8>       2 a7 Q. v. ~, B+ y
   invstr={'grid off','box off','hidden on','axis on'};%列表框的逆指令        <9>
) l. H* f4 i/ h   colormap(eval(popstr{vpop}))                %采用弹出框所选色图                                        <10>+ g! q! d. L# K( z6 v8 n5 t
   vv=zeros(1,4);vv(vlist)=1;               
# E7 x& E0 {4 J* K   for k=1:4
, }2 s+ |7 ]6 W! c0 W; ]      if vv(k);eval(liststr{k});else eval(invstr{k});end %按列表选项影响图形
1 C$ a3 _8 {, X1 T5 P# ~( U7 Y  g   end
% I) Q. w+ K: Y0 P1 R9 Oend' A  K- ^0 P9 c' y3 n# C, ^( {
《掌握和精通matlab之gui》的代码,
4 N/ Y+ ?& u' w) `' F  J  X. f可是按照此书上的例子运行出现:Undefined function or variable 'calledit1'. Error while evaluating UIControl Callback( K) A  f- i. G9 }$ y

( u% ?3 C+ h! d9 r1 Q- `% J) \7 `( x
书上的例子出的图
% U6 Z1 _; E* X! P
请教大神,非常感谢!
3 i5 |; G) _( d3 V: ]/ `) R
0 e& Q& L; _; R% v' k3 }1 Q/ B) @2 M+ t

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-18 16:23 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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