|
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
|
|