matlab语言程序设计基础_第1页
matlab语言程序设计基础_第2页
matlab语言程序设计基础_第3页
matlab语言程序设计基础_第4页
matlab语言程序设计基础_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章MATLAB语言程序设计基础第2章MATLAB语言程序设计基础主要内容MATLAB语言的数据结构MATLAB下矩阵的运算流程控制结构MATLAB函数编写与技巧MATLAB语言下图形的绘制与技巧三维图形的绘制方法MATLAB图形用户界面设计技术提高MATLAB程序执行效率的技巧

MATLAB的数据结构本节主要内容数据类型数据输出格式常量和变量矩阵的matlab表示format:设置输出格式该命令不影响数据的存储形式和计算精度对浮点性变量,缺省为formatshort.formatshort,long不影响整型变量的显示。formatlong显示15位双精度formatshort显示5位formathex十六进制formatbank定点货币形式,2个十进制位formatrat分数形式format+

正、负formatcompact紧凑式,压缩空格formatloose宽松式,包括空格和空行数据输出格式第5页数据类型操作函数函数描述double创建或转化为双精度类型single创建或转化为单精度类型int8,int16,int32,int64创建或转化为相应的有符号整数类型uint8,uint16,uint32,uint64创建或转化为相应的无符号整数类型isnumeric判断是否为整数或浮点数,是则返回true(或者1)isinteger判断是否为整数,是则返回true(或者1)isfloat判断是否为浮点数,是则返回true(或者1)

常量与变量常量(保留字符串)eps:机器的浮点运算误差限,默认值i和j:虚数单位,-1的平方根,i=sqrt(-1)Inf:无穷大量,-Inf为负无穷大NaN:不定式(NotaNumber)pi:圆周率p的双精度浮点表示变量:由字母引导,可以跟字母、数字和下划线等区分大小写系统预定义的特殊变量

名描

述ans结果显示的默认变量名beep使计算机发出“嘟嘟”声pi圆周率eps浮点数的精度(2.2204e-016),MALTAB中的最小数inf无穷大,如当除数为0时系统返回infNaN或nan表示不定数,即结果不能确定i或j虚数单位nargin函数的输入参数个数nargout函数的输出参数个数realmin可用的最小正实数2.2251e-308realmax可用的最大正实数值1.7977e+308

矩阵的MATLAB表示在MATLAB中创建一个矩阵可以有两种常用的方法:一是直接输入矩阵元素,另一种是调用矩阵创建函数。1.输入元素创建简单矩阵对于简单的矩阵,特别是元素数目不多的矩阵,逐个输入矩阵元素是最常用、最便捷的矩阵创建方法,其遵循以下3条原则:运用矩阵构造符[]包含所创建矩阵的所有元素;使用逗号“,”或者空格“”分隔矩阵的列;使用分号“;”或者回车键分隔矩阵的行。2.调用函数创建特殊矩阵函数生成矩阵形式ones全1元素矩阵zeros全0元素矩阵eye单位矩阵,即主对角线元素为1,其余元素全为0rand均匀分布随机矩阵randn正态分布随机矩阵magic魔术矩阵diag对角矩阵拼接函数MATLAB的矩阵拼接函数函数功能cat指定维拼接horzcat水平方向拼接vertcat垂直方向拼接repmat通过对现有矩阵复制和粘贴操作生成新矩阵blkdiag现有矩阵构造对角矩阵改变矩阵形状MATLAB矩阵形状操作函数函数功能reshape重新排列矩阵rot90矩阵逆时针旋转90°fliplr垂直方向为轴翻转矩阵flipud水平方向为轴翻转矩阵flipdim指定方向为轴翻转矩阵MATLAB下矩阵的运算本节主要内容矩阵的代数运算矩阵的逻辑运算矩阵的比较运算矩阵元素的数据变换矩阵的代数运算矩阵转置:A’加减乘除:A+B、A-B、A*B、A\B、B/A矩阵翻转:flipud(A)、fliplr(A)、rot90(A)矩阵乘方:A^x点运算:A.*B、A.^2、A.^A矩阵的逻辑运算逻辑型变量的描述逻辑型变量:logical()双精度表示逻辑变量:非0表示逻辑1逻辑运算逻辑“与”:A&B逻辑“或”:A|B逻辑“非”:~A逻辑“异或”:xor(A,B)逻辑运算是相应元素之间的运算矩阵的比较关系比较关系关系>、<、>=、<=、=

=、~=等find()、any()、all()举例找下标矩阵元素的数据变换取整函数floor(A):按负无穷大方向取整,即不足整数ceil(A):按正无穷大方向取整,即取过剩整数round(A):按最近的整数取整,亦四舍五入fix(A):按离0近的方向取整其他变换函数[n,m]=rat(A):有理数近似mod(A,k)(按floor)、rem(A,k):求余数gcd(n,m)、lcm(n,m):最大公约数、最小公倍数流程控制结构MATLAB语言是一种编程语言,支持各种流程控制结构和C等语言类似,也有不同本节主要内容循环结构转移结构开关结构试探结构循环结构for结构和while结构循环结构举例例1:求两种结构,后者麻烦for结构while结构例2:求最小的m:s=0;

fori=1:1:100,

s=s+i;

end;

ss=0;

i=0;while(i<100),i=i+1;s=s+i;end,ss=0;m=0;whiles<=10000,m=m+1;s=s+m;end,m,s条件转移结构重新求解m:s=0;form=1:1000,s=s+m;if(s>10000)break;endendbreak、continue语句continue语句经常与for,while循环合用。当循环语句中出现continue时,则不再继续执行当前循环体内的程序语句,即提前结束当前循环,并继续执行下一个循环。break与continue相似,也是经常与forwhile合用,但它不是继续执行下一个循环,而是退出循环体,继续执行循环体之外的程序。即终止循环!i=1;forn=2:100ifmod(n,2)==0|mod(n,3)==0|mod(n,5)==0|mod(n,7)==0|mod(n,11)==0

%若能被这些数整除,则滑过continueelse%否则(if的条件表达式无法执行)将n值赋给向量XX(i)=n;i=i+1;endend例如:判断输入数的奇偶性n=input(‘n=’);ifrem(n,2)==0display(‘n是偶数’)elsedisplay(‘n是奇数’)endmod(x,y)和rem(x,y)的计算表达式都是

x-n.*y但n的定义不同,对于rem

n=fix(x./y)=-6而对于mod

n=floor(x./y)=-7所以

rem(-12.2,2)=-12.2-(-6)*2=-0.2

mod(-12.2,2)=-12.2-(-7)*2=1.8概括起来:如果x、y同号,rem和mod结果相同;如果x、y不同号,则rem(x,y)的符号与x相同,

mod(x,y)的符号与y相同。开关结构开关结构执行完语句段后将转出开关体当需要在开关表达式满足若干个表达式之一时执行某一程序段,把这些表达式用大括号括起来前面枚举的各个表达式均不满足时,则将执行otherwise语句,不是default输入选择参数ch(1、2、3、4),当ch=1时,产生[-10,10]之间均匀分布的随机数;当ch=2时,产生[-5,5]之间均匀分布的随机数;当ch=3时,产生[-1,1]之间均匀分布的随机数;当ch=4时,产生均值为0,方差为1的正态分布随机数。ch=input('选择参数');switchchcase1x=20*rand-10case2x=10*rand-5case3x=2*rand-1case4x=randnend例如:根据菜单选择显示不同的函数x=menu('波形','正弦','余弦','正切','余切');switchxcase1ezplot('sin')case2ezplot('cos')case3ezplot('tan')case4ezplot('cot')endmenu函数

格式:

menu('标题','标签1','标签2',...)

试探结构试探结构首先试探性地执行语句段1,如果出现错误,则放弃这段语句,转而执行语句段2中的语句试探性结构在实际编程中还是很实用的可以将一段不保险但速度快的算法try段落中将一个保险但速度极慢的程序放到catch段落中这样就能保证原始问题的求解更加可靠可能使程序高速执行。a=magic(4);b=eye(3);tryc=a*bcatchc=a(1:3,1:3)*bendtry尝试执行的语句块catch出错后执行的语句块endMATLAB函数编写与技巧M-脚本文件为什么需要编写函数?MATLAB主流的程序设计方式封装变量、封装程序,形成独立的程序本节主要内容MATLAB语言的函数的基本结构可变输入、输出个数的处理MATLAB函数的跟踪调试伪代码与代码保密处理

MATLAB语言的脚本文件编程风格注释部分(1)

在第一行中放置程序名和任何关键词。(2)在第二行中放置创建的日期,以及创建者的姓名。(3)

每个输入和输出变量的变量名定义。(4)

程序中调用的每个用户自定义函数名称。输入部分:放置输入数据和/或输入函数,其允许输入数据。计算部分:放置计算。

输出部分:放置那些以所需格式传递的输出函数。控制输入和输出MATLAB为从用户获取输入以及为格式化输出(执行MATLAB命令而获得的结果)提供了许多有用的命令。

令说

明disp(A)显示数组A的内容,而不是数组的名称disp(‘text’)显示单引号内部的文本串fprintf执行格式化的写入到屏幕或者写入到一个文件x=input('text')显示单引号中的文本,等待用户的键盘输入,并且将输入数据存储在x中x=input('text','s')显示单引号中的文本,等待用户的键盘输入,并且将输入的字符串存储在x中k=menu('title','option1','option2',...显示菜单,该菜单的名称在字符串变量'title'中,并且菜单的选项是'option1'、'option2'等等输入与输出用户输入input函数用以在屏幕上显示文本,等待用户从键盘输入某些内容,然后再将输入内容存储在指定变量之中。input('提示信息','选项'),用户输出

disp函数:用来显示表达式的结果。disp('hello!')disp(3^4)fprintf函数:将格式化的输出显示出来。fprintf('Thevalueis%d!\n',3^4)%d整数%f浮点数%c单个字符%s字符串\n是换行符fprintf(‘%20.6f’,c)浮点数20位,小数点后面有6位脚本文件示例%程序Falling_Speed.m:绘制一个下落物体的速度图形。%%输入变量:%tf=最终时间(单位为秒)%%输出变量:%t=计算速度的时间数组(单位为秒)%v=速度数组(米/秒)%参数值:g=9.81;%以SI为单位的重力加速度%%输入部分:tf=input('Enterthefinaltimeinseconds:');%%计算部分:dt=tf/500;t=[0:dt:tf];%创建一个有501个时间值的数组。v=g*t;%%输出部分:plot(t,v),xlabel('Time(seconds)'),ylabel('Speed(meters/second)')

MATLAB语言的函数的基本结构函数的结构变元个数:nargin、nargout注释语句:由%引导联机帮助的编写变元检测允许函数有不同的调用方式functiony=test1(a,b)ifnargin==0a=0;b=0;elseifnargin==1b=0;endy=a+b;endnargin是用来判断输入变量个数的函数nargout是用来判断输出变量个数的函数。nargin和nargout本身都是函数,不是变量,所以不能赋值,也不能显示。nargin和nargout:functioncalculate_distance(varargin)%求两点间距离%使用方法:calculate_distance([23]),calculate_distance([23],[45])ifnargin==0disp('未输入,请至少输入一点坐标值')endifnargin==1x1=varargin{1};d=sum(x1.^2)^0.5;disp('输入只有一点,则求其距原点距离为:')disp(['距离d='num2str(d)])endifnargin==2x1=varargin{1};x2=varargin{2};x=x1-x2;d=sum(x.^2)^0.5;disp('输入有两点,则求这两点距离为:')disp(['距离d='num2str(d)])endifnargin>2disp('输入超过两个点,请至多输入两点坐标值')endendvarargin提供了一种函数可变参数列表机制,用来存入输入变量,以元胞数组形式存储。varargout可变的数个返回值,用来存入输出变量,以元胞数组形式存储。MATLAB函数的跟踪调试使用MATLAB程序编辑界面medit局部变量值可以由跟踪调试程序测出跟踪调试功能设置断点单步执行函数跳入下级函数单步执行取消断点在断点处一次执行完成取消跟踪调试伪代码与代码保密处理伪代码:能保持原*.m函数的功能,但代码被变成二进制的不可读代码为什么需要伪代码提高执行速度代码保密注意事项:自行保留原*.m文件,不可恢复命令格式pcodemytestpcodemytest–inplacepcode*.mMATLAB语言下图形的绘制与技巧可以绘制出各种二维曲线可以由数据绘图,也可以由格式绘图本节主要内容基本二维图形绘制语句带有其他选项的绘图函数二维曲线的标注方法在MATLAB图形上添加文字标注特殊图形绘制函数及举例隐函数的曲线绘制基本二维图形绘制语句已知数据点(实验点或计算点)可以容易地绘制出二维“曲线”曲线是折线,不是真正的曲线如果数据点足够密,则绘制的折线看起来像曲线,另外还可以对曲线进行光滑处理Plot()函数的扩展t是向量,y是矩阵,能同时绘制多条曲线t,y是同样维数的矩阵,能绘制多条曲线多组t,y值绘图语句选项双纵坐标曲线绘制曲线绘制举例正弦曲线绘制正弦余弦曲线绘制双纵坐标曲线绘制二维曲线的标注方法二维曲线修饰方法坐标轴设置其他设置text、xlim、ylim函数x轴上下限设定xlim([a,b]);y轴上下限设定ylim([a,b])text(x,y,string)

使用text函数可以根据指定位置和属性添加文字说明。该函数调用格式为:

text(x,y,z,’说明文字’,属性名1,属性值1…)其中x,y,z为位置坐标。说明文字中除使用标准的ASCII字符外,还可使用LaTeX格式的控制字符。

>>x=0:0.05:7;y=log10(x);plot(x,y)text(2,0.2,'\leftarrowLog(x)','fontsize',20)函数字符代表符号函数字符代表符号函数字符代表符号\alphaa\upsilonu\sim~\betab\phif\leq£\gammag\OmegaW\infty¥\deltad\psiY\proptoµ\epsilone\omegaw\diamondsuit¨\pip\GammaG\heartsuit©\etah\DeltaD\spadesuitª\thetaq\ThetaQ\leftrightarrow«\rhor\LambdaL\leftarrow¬\sigmas\XiX\uparrow\kappak\PiP\rightarrow®\lambdal\SigmaS\downarrow¯\mum\UpsilonU\circ°\nun\PhiF\pm±\xix\Psiy\geq³使用latexTex字符的字体设置①\bf:设置字体为粗体字。②\it:设置字体为斜体字。③\sl:设置字体为斜体字,很少使用。④\rm:设置字体为正常字体。⑤\fontname{字体名}:设置字体名。例如:\fontname{宋体}。⑥\fontsize{字体大小}:设置字体大小。例如:\fontsize{16}。>>title('{\itAe}^{-\alpha\itt}sin\beta{\itt}\alpha<<\beta')xlabel('Time\musec.')ylabel('Amplitude')Tex字符的位置有2种设置。①_:表示下标。②^:表示上标。Tex字符的颜色设置①\color{颜色名}颜色名:颜色名有12种,分别为red、green、yellow、magenta、blue、black、white、cyan、gray、barkGreen、orange和lightBlue。例如:\color{magenta}magenta。②\color[rgb]{abc}:设置字体颜色为RGB矩阵[abc]所表示的颜色。a、b和c都在[01]范围内。例如:color[rgb]{0.5.5}。>>str='黑{\color{red}红\color{green}绿\color[rgb]{001}蓝}黑'text(0.1,0.5,str,'fontsize',24,'fontname','黑体')特殊图形绘制函数及举例条形图:t=0:0.2:2*pi;y=cos(t);bar(y)阶梯图:x=0:pi/20:2*pi;y=sin(x);stairs(x,y)彗星图:t=-pi:pi/500:pi;

y=tan(sin(t))-sin(tan(t));comet(t,y)loglog():x轴、y轴都使用常用对数刻度semilogx():x轴使用常用对数刻度semilogy():y轴使用常用对数刻度x=logspace(-1,2);loglog(x,exp(x),'-s')gridonx=logspace(-1,2);plot(x,exp(x),'-s')gridonx=logspace(-1,2);semilogy(x,exp(x),'-s')gridonx=logspace(-1,2);semilogx(x,exp(x),'-s')gridonlogspace(a,b,n),其中a、b、n分别表示开始值(10^a)、结束值(10^b)、元素个数(n)。子窗口分割子窗口分割不同子窗口下绘制不同的曲线>>t=-pi:0.3:pi;y=1./(1+exp(-t));subplot(2,2,1),plot(t,y);title('plot(t,y)')subplot(2,2,2),stem(t,y);title('stem(t,y)')subplot(2,2,[3,4]),stairs(t,y);title('stairs(t,y)')>>m=[2,2,3,-3];n=[3,-3,5,5];t=0:0.001:1;fork=1:4x=2*cos(20*m(k)*pi.*t)+cos(20*n(k)*pi.*t);y=2*sin(20*m(k)*pi.*t)+sin(20*n(k)*pi.*t);subplot(2,2,k)plot(x,y)end某质点的位移由x(t)和y(t)确定,试绘制其运动轨迹x(t)=2cos(20mπt)+cos(20nπt)y(t)=2sin(20mπt)+sin(20nπt)m223-3n3-355要求:1.m、n分别取上表中的四个数值2.绘制1秒内的运动轨迹,每隔0.001秒取一个点;3.四种情况的运动轨迹绘制在一个图形窗口的四个坐标轴中,排成2行2列。隐函数的曲线绘制隐函数绘制函数ezplot()椭圆绘制复杂隐函数参数方程三维图形的绘制方法1三维曲线的绘制方法三维曲线例,三维曲线MATLAB绘制命令>>t=[0:0.1:10*pi];x=2*t;y=sin(t);z=cos(t);plot3(x,y,z);2二维数据网格:meshgrid()[X,Y]=meshgrid(x,y)由向量x和y生成二维数组X和Y,用来计算二元函数f(x,y)的值Z=f(X,Y)。>>x=-4:0.5:4;y=-4:0.5:4;[X,Y]=meshgrid(x,y);Z=sin(sqrt(X.^2+Y.^2));plot3(X,Y,Z)3三维网格图:mesh()mesh(x,y,z):绘制由数组x,y,z所确定的曲面网格图x,y可以为数组也可以为向量,但z必须为二维数组[m,n]=size(z),length(x)=n,length(y)=mmeshc(x,y,z):增加等高线。meshz(x,y,z):屏蔽边界面。>>x=-4:0.2:4;[X,Y]=meshgrid(x);Z=sin(sqrt(X.^2+Y.^2));mesh(X,Y,Z);>>x=-10:0.5:10;[X,Y]=meshgrid(x);r=sqrt(X.^2+Y.^2)+eps;Z=sin(r)./r;meshc(X,Y,Z)4三维表面图:surf()surf(x,y,z):绘制由数组x,y,z所确定的曲面图surfc(x,y,z):增加等高线>>x=-10:0.5:10;[X,Y]=meshgrid(x);r=sqrt(X.^2+Y.^2)+eps;Z=sin(r)./r;surf(X,Y,Z)mesh()/surf()属性设置>>x=-10:0.5:10;[X,Y]=meshgrid(x);r=sqrt(X.^2+Y.^2)+eps;Z=sin(r)./r;h=mesh(X,Y,Z,'edgecolor','black')set(h,'facecolor','r')set(h,'linewidth',2)>>x=-10:0.5:10;[X,Y]=meshgrid(x);r=sqrt(X.^2+Y.^2)+eps;Z=sin(r)./r;surf(X,Y,Z,'edgecolor','none')5利用surf()绘制一些常用的三维表面图绘制三维曲面的方法:(1)根据X,Y,Z数组确定网格点(2)用网格线连接在同一行中的网格点(3)用网格线连接在同一列中的网格点(4)用颜色数组C确定网格线(面)的颜色>>A=[1;0;2];B=[3;0;3];C=[1;0;0];D=[3;0;0];P=[A,B;C,D]X=P([1,4],:)Y=P([2,5],:)Z=P([3,6],:);h=surf(X,Y,Z);set(h,'facecolor','b');axis([0,4,-1,1,0,4])思路:把四个顶点分成2行2列,将相应的坐标放进X,Y,Z数组即可绘图。用surf()绘制四边形平面>>A=[1;0;2];A=[3;0;3];C=[1;0;0];D=[3;0;0];P=[A,A;C,D]X=P([1,4],:)Y=P([2,5],:)Z=P([3,6],:);h=surf(X,Y,Z);set(h,'facecolor','b');axis([0,4,-1,1,0,4])思路:想象下有两个点,只不过完全重合,这样就有四个顶点了,可以分成2行2列,将相应的坐标放进X,Y,Z数组即可绘图。用surf()绘制三角形平面绘制长方体表面图>>L=rand(1);W=rand(1);H=rand(1);A=rand(3,1);B=A+[L;0;0];C=B+[0;W;0];D=A+[0;W;0];r1=repmat(A,1,5);r2=[A,B,C,D,A];r3=r2+repmat([0;0;H],1,5);r4=repmat(r3(:,1),1,5);P=[r1;r2;r3;r4];X=P(1:3:end,:);Y=P(2:3:end,:);Z=P(3:3:end,:);surf(X,Y,Z,'facecolor','b','edgecolor','none')axisvis3dholdonx=X(2:3,:);y=Y(2:3,:);z=Z(2:3,:);plot3(x,y,z,'r','linewidth',3)plot3(x',y',z','r','linewidth',3)axisvis3d:保持高、宽比不变,用于三维旋转时避免图形大小变化B=repmat(A,m,n)将矩阵A复制m×n块,即把A作为B的元素,B由m×n个A平铺而成。>>z1=0;z2=5;M=20;N=20;R=5;r=2;t=0:2*pi/N:2*pi;X=[R*cos(t);r*cos(t)];Y=[R*sin(t);r*sin(t)];Z=[z1*ones(size(t));z2*ones(size(t))];t=linspace(0,2*pi,N);s=linspace(0,2*pi,M)';r=(2+sin(s));h=linspace(z1,z2,M)';X=r*cos(t);Y=r*sin(t);Z=h*ones(size(t));surf(X,Y,Z)绘制正棱柱面z1=0%底面所在的平面z2=0%顶面所在的平面M=20%纬线数目N=20%经线数目横截面半径变化规律:r=2+sinθ0<θ<2πr=(sinθ)/θ0<θ<5π绘制球面>>r=2;M=30;N=30;phi=0:2*pi/M:2*pi;theta=linspace(0,pi,N)';X=r*sin(theta)*cos(phi);Y=r*sin(theta)*sin(phi);Z=r*cos(theta)*ones(size(phi));surf(X,Y,Z)axissquareaxisimage:纵横坐标采用等长刻度,

且坐标框紧贴数据范围axisnormal:默认矩形坐标系axissquare:产生正方形坐标系axistight:把数据范围直接设为坐标范围MATLAB图形用户界面设计技术图形界面的优劣往往决定着软件的档次MATLAB的图形用户界面(GraphicalUserInterface,GUI)设计技术对设计出良好的通用软件十分重要本节主要内容图形界面设计工具Guide句柄图形学及句柄对象属性菜单系统设计界面设计举例与技巧工具栏设计句柄图形学简介句柄图形学(handlegraphics)的概念,为面向对象的图形处理提供了十分有用的工具在图形绘制时,每个图形元素(比如其坐标轴或图形上的曲线、文字等)都是一个独立的对象用户可以对其中任何一个图形元素进行单独地修改,而不影响图形的其他部分向量化的绘图。这种向量化的绘图要求给每个图形元素分配一个句柄(handle)以后再对该图形元素做进一步操作时,则只需对该句柄进行操作即可。RooTFigureUIObjectsAxesHiddenAnnotationAxesCoreObjectsPlotObjectsGroupObjectsAnnotationObjectsroot句柄为0figure句柄为正整数其他图形对象的句柄为浮点数图形对象是由其属性来描述的。底层绘图函数用句柄设置图形对象的属性。句柄属性的设置与修改:get获得句柄图形对象的属性和返回某些对象的句柄值set改变图形对象的属性delete(h)删除句柄为h的图形对象专用函数:gcf返回当前窗口对象的句柄gca返回当前轴对象的句柄gco返回当前图形对象的句柄rootroot是关联计算机屏幕的一个图形对象,matlab系统中只有一个root,它没有父对象,子对象是figure。root对象无法删除的。root的属性screensize:默认单位为像素,由屏幕的左下角坐标、宽度、高度四个参数确定。以像素为单位,左下角坐标为(1,1)以inches为单位,左下角坐标为(0,0)ss=get(0,'screensize')figure>>x=0:pi/10:2*pi;ss=get(0,'screensize');W=ss(3);H=ss(4);figure(1)set(gcf,'position',[W/2,H/2,W/3,H/4])set(gcf,'name','sin(x)的图像','numbertitle','off')plot(x,sin(x))h=figureset(h,'position',[W/2,H/10,W/3,H/4])set(h,'name','cos(x)的图像','color',[1,1,1])set(1,'toolbar','none','menubar','none')plot(x,cos(x))axis图形窗口内部采用归一化坐标,左下角坐标为(0,0),右上角坐标为(1,1)。x=0:pi/20:2*pi;y=sin(x);plot(x,y)h=get(gca,'title');set(h,'string','abc','color','r','BackgroundColor','g','FontAngle','italic','Fontsize',50)h1=get(gca,'xlabel');set(h1,'string','x','color','b','Fontsize',30)h2=get(gca,'ylabel');set(h2,'string','y','color','k','Fontsize',40)图形界面设计工具Guide在命令窗口给出guide命令可以启动图形用户界面设计程序,得出如下选项建立一个默认的空白界面(BlankGUI)带有一些控件的界面(GUIwithUicontrols)带有坐标轴和菜单的界面(GUIwithAxesandMenu)基本模态对话框(ModalQuestionDialog打开现有的GUI(OpenExistingGUI)Matlab为GUI设计一共准备了4种模板,分别是:BlankGUI(Default)(空白模板,默认);GUIwithUicontrols(带控件对象的GUI模板);GUIwithAxesandMenu(带坐标轴与菜单的GUI模板);ModalQuestionDialog(带模式问题对话框的GUI模板)。按钮(PushButtons):执行某种预定的功能或操作;开关按钮(ToggleButton):产生一个动作并指示一个二进制状态(开或关),当鼠点击它时按钮将下陷,并执行callback(回调函数)中指定的内容,再次点击,按钮复原,并再次执行callback中的内容;单选框(RadioButton):单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能在一组状态中选择单一的状态,或称为单选项;复选框(CheckBox):单个的复选框用来在两种状态之间切换,多个复选框组成一个复选框组时,可使用户在一组状态中作组合式的选择,或称为多选项;文本编辑器(EditText):用来使用键盘输入字符串的值,可以对编辑框中的内容进行编辑、删除和替换等操作;静态文本框(StaticText):仅用于显示单行的说明文字;滚动条(Slider):可输入指定范围的数量值;边框(Frames):在图形窗口圈出一块区域;列表框(ListBox):在其中定义一系列可供选择的字符串;弹出式菜单(Pop-upMenus):让用户从一列菜单项中选择一项作为参数输入;此外还有坐标轴(Axes),用于显示图形和图像。控件对象的公共属性Children取值为空矩阵,因为控件对象没有自己的子对象;Tag取值为字符串,定义了控件的标识值,在任何程序中都可以通过这个标识值控制该控件对象;Type

取值为uicontrol,表明图形对象的类型;Visible取值为on或off。UserDate取值为空矩阵,用于保存与该控件对象相关的重要数据和信息;Parent取值为某个图形窗口对象的句柄,该句柄表明了控件对象所在的图形窗口;BackgroundColor取值为颜色的预定义字符或RGB数值;缺省值为浅灰色;Callback取值为字符串,可以是某个M文件名或一小段Matlab语句,当用户激活某个控件对象时,应用程序就运行该属性定义的子程序;Enable取值为on(缺省值),inactive和off;Extend取值为四元素矢量[0,0,width,height],记录控件对象标题字符的位置和尺寸;ForegroundColor取值为颜色的预定义字符或RGB数值,该属性定义控件对象标题字符的颜色;缺省值为黑色;Max,Min取值都为数值,缺省值分别为1和0;String取值为字符串矩阵或块数组,定义控件对象标题或选项内容;Style取值可以是pushbutton(缺省值),radiobutton,checkbox,edit,text,slider,frame,popupmenu或listbox;Units取值可以是pixels(缺省值),normalized(相对单位),inches,centimeters(厘米)或points(磅);Value取值可以是矢量,也可以是数值,其含义及解释依赖于控件对象的类型。控件对象的基本控制属性FontAngle取值为normal(正体,缺省值),italic(斜体),oblique(方头);FontName取值为控件标题等字体的字库名;FontSize取值为数值;FontUnits取值为points(缺省值),normalized,inches,centimeters或pixels;FontWeight取值为normal(缺省值),light,demi和bold,定义字符的粗细;HorizontalAligment取值为left,center(缺省值)或right,定义控件对象标题等的对齐方式。控件对象的修饰控制属性ListboxTop取值为数量值,用于listbox控件对象;SliderStep取值为两元素矢量[minstep,maxstep],用于slider控件对象;Selected取值为on或off(缺省值);SlectionHoghlight取值为on或off(缺省值)。控件对象的辅助属性BusyAction取值为cancel或queue(缺省值);ButtDownFun取值为字符串,一般为某个M文件名或一小段Matlab程序;Creatfun取值为字符串,一般为某个M文件名或一小段Matlab程序;DeletFun取值为字符串,一般为某个M文件名或一小段Matlab程序;HandleVisibility取值为on(缺省值),callback或off;Interruptible取值为on或off(缺省值)。Callback管理属性包括图形用户界面的设计和功能设计两个方面。GUI程序设计例1使用PushButton按钮与静态文本框设计GUI,在窗口中显示单击按钮次数。(1)在界面上安装一个命令按钮和一个静态文本框(2)使用对象的属性窗口设置控件的属性打开该GUI的m文件ex10.m,该文件中已经自动生成了许多代码。找到函数functionpushbutton1_Callback(hObject,eventd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论