《Matlab界面设计的例子.docx》由会员分享,可在线阅读,更多相关《Matlab界面设计的例子.docx(6页珍藏版)》请在三一办公上搜索。
1、Matlab界面设计的例子1、很简单,在界面上放三个单选按钮控制颜色,四个pushbutton,可作为一个小小的入门。 程序为: %simpleGUI2.m-a simple use of Radiobutton and Pushbutton clear all; FigWin=figure(Position,100,100,600,300,Name,Uicontrol:Push Button & RadioButton,. NumberTitle,off); AxesHandle=axes(Position,0.4,0.15,0.5,0.8,Box,on); RadioNum=3; for
2、i=1:RadioNum Radio(i)=0;%initial value=0 end Radio(1)=uicontrol(FigWin,.%父对象FigWin,备注 Style,Radio,. Position,50 255 100 30,. String,Draw in Red,. CallBack,. n=1;. if get(Radio(1),Value)=1;.%要使各radio button之间具有互斥性,要用if.else语句 set(Radio(1:(n-1),(n+1):RadioNum),Value,0);. else;.%要加上分号,一种规定?参备注 set(Radi
3、o(1),Value,1);. end;. ColorStr=r;. set(FunHandle,Color,red);%曲线颜色根据radio button的选项实时变化,ColorStr是一个全局变量 Radio(2)=uicontrol(FigWin,. Style,Radio,. Position,50 215 100 30,. String,Draw in Green,. CallBack,. n=2;. if get(Radio(2),Value)=1;. set(Radio(1:(n-1),(n+1):RadioNum),Value,0);. else;. set(Radio(2
4、),Value,1);. end;. ColorStr=g;. set(FunHandle,Color,green); Radio(3)=uicontrol(FigWin,. Style,Radio,. Position,50 175 100 30,. String,Draw in Blue,. CallBack,. n=3;. if get(Radio(3),Value)=1;. set(Radio(1:(n-1),(n+1):RadioNum),Value,0);. else;. set(Radio(3),Value,1);. end;. ColorStr=b;. set(FunHandl
5、e,Color,blue); push1=uicontrol(FigWin,. Style,pushbutton,. Position,50 135 100 30,. String,Plot sin(x),. CallBack,. subplot(AxesHandle); .%注意父对象是AxesHandle而非FigWin!参备注 x=0:.1:4*pi;. FunHandle=plot(x,sin(x),ColorStr);.%ColorStr变量的值受radiobutton控制 axis(0 4*pi -1 1);. grid on;. xlabel(x);. ylabel(y=sin(
6、x);); push2=uicontrol(FigWin,. Style,pushbutton,. Position,50 95 100 30,. String,Plot cos(x),. CallBack,. subplot(AxesHandle); . x=0:.1:4*pi;. FunHandle=plot(x,cos(x),ColorStr);. axis(0 4*pi -1 1);. grid on;. xlabel(x);. ylabel(y=cos(x);); push3=uicontrol(FigWin,. Style,pushbutton,. Position,50 55 1
7、00 30,. String,Grid off,. CallBack,grid off;);%参备注 push4=uicontrol(FigWin,. Style,pushbutton,. Position,50 15 100 30,. String,Exit,. CallBack,close(FigWin); %绘制初始曲线 ColorStr=r; set(Radio(1),Value,1); X=0:0.1:4*pi; FunHandle=plot(X,sin(X),ColorStr); axis(0 4*pi -1 1); xlabel(x); ylabel(y=sin(x); grid
8、 on; 运行结果: /有些注意的地方用红色标识。 备注:例如在屏幕上建立一个按钮,点击绘制正弦曲线: push1=uicontrol(FigWin,. Style,pushbutton,. Position,50 135 100 30,. String,Plot sin(x),. CallBack,. subplot(AxesHandle);. x=0:.1:4*pi;. plot(x,sin(x);. axis(0 4*pi -1 1);. grid on. xlabel(x);. ylabel(y=sin(x);); 出错: ? Error using = grid at 104 Unk
9、nown command option. ? Error while evaluating uicontrol Callback 在grid on后添加分号,正确; 对于CallBack参数,后面的矩阵给出要执行的命令序列,表示其是一个矩阵,矩阵元素之间可以接受空格、逗号,如:subplot(AxesHandle);,.或subplot(AxesHandle); .,或者后面用了续行符.也可以不加逗号或空格。如果只有单个语句也可以不用,但每个语句后必须给出分号“;”,在Command Window中,对于grid on这种控制语句是可以不写分号的。另外,因为语句xlabel(x)已处于一个单引
10、号中,故x要使用两对单引号。 如果else后面没有分号,如:else.运行时会出错: ? Undefined function or method elseset for input arguments of type double. ? Error while evaluating uicontrol Callback %将else与下行的set视为一体了 备注:如果将那行改为subplot(FigWin); .则运行出错: ? Error using = subplot at 141 Index must be a 3-digit number of the format mnp. ? E
11、rror while evaluating uicontrol Callback 原因:subplot(h)只接受axes对象h,而不接受figure对象,参下图: 如果将subplot改为plot可行吗?不行,提示出错: ? Error using = plot Not enough input arguments. ? Error while evaluating uicontrol Callback ? Error using = plot Not enough input arguments. /plot没有此用法: subplot才有此用法: subplot(h) makes the
12、 axes object with handle h current for subsequent plotting commands. subplot有两个作用:A、创建子绘图区域;B、起到焦点转移的作用。曲线绘制命令还是plot 备注:同理,如果改成: Radio(1)=uicontrol(AxesHandle,. 也会出错: ? Error using = uicontrol Invalid figure or uicontrol handle Error in = simpleGUI2 at 12 Radio(1)=uicontrol(AxesHandle,. 原因同备注axes对象不接受uicontrol,见上面的关系图。明确十个对象的关系很重要。