1、第2章 MATLAB数据 2.1 MATLAB数据的特点 2.2 变量和赋值 2.3 MATLAB矩阵 2.4 MATLAB运算 2.5 字符串 2.6 结构和单元2.1 MATLAB数据的特点1)矩阵是MATLAB最基本、最重要的数据对象。单个数据(标量)可以看成是矩阵的特例。2)MATLAB数据类型-只有一种双精度型双精度型v 数值数据:双精度型双精度型(64)、单精度数(32)、带符号整数和无符号整数。v 字符数据(8)。v 结构(Structure)和单元(Cell)。v 多维矩阵和稀疏矩阵(Sparse)。2.2 变量和赋值2.2.1 变量的命名v在MATLAB中,变量名是以字母开头
2、,后接字母、数字或下划线的字符序列,最多19个字符。v在MATLAB中,变量名区分字母的大小写。MATLAB提供的标准函数名以及命令名必须用小写字母。2.2.2 赋值语句 赋值就是把数赋予代表常量或变量的标识符。赋值就是把数赋予代表常量或变量的标识符。MATLAB中的变量或常量都代表矩阵。中的变量或常量都代表矩阵。MATLAB赋值语句有两种格式:(1)变量=表达式(或数)(2)表达式一般地,运算结果在命令窗口中显示出来。如一般地,运算结果在命令窗口中显示出来。如果在语句的最后加分号,那么,果在语句的最后加分号,那么,MATLAB仅仅仅执行赋值操作,不再显示运算的结果。仅执行赋值操作,不再显示运
3、算的结果。在在MATLAB语句后面可以加上注释,注释以语句后面可以加上注释,注释以%开头,后面是注释的内容。开头,后面是注释的内容。矩阵的值放在矩阵的值放在“”中,同一行元素之间以中,同一行元素之间以“,”或或空格空格分开;分开;句尾用句尾用“,”或或回车回车,此时显示,此时显示结果;若不希望显示结果以结果;若不希望显示结果以“;”号结尾再回车。号结尾再回车。a=1 2 3;4 5 6;7 8 9a=1 2 3 4 5 6 7 8 9x=-1.3 sqrt(3)(1+2+3)/5*4x=-1.3000 1.7321 4.8000v 变量的元素用圆括号变量的元素用圆括号“()”中的数字中的数字(
4、下标)表示。一维矩阵(数组)中的(下标)表示。一维矩阵(数组)中的元素用一个下标表示;二维矩阵用两个元素用一个下标表示;二维矩阵用两个下标表示,以逗号分开下标表示,以逗号分开a=1 2 3 4 5 6 7 8 9a(2,3)ans=6x(2)ans=1.7321x=-1.3 sqrt(3)(1+2+3)/5*4v 如果赋值元素的下标超出原来矩阵的如果赋值元素的下标超出原来矩阵的大小,矩阵的行列会自动扩展大小,矩阵的行列会自动扩展x(5)=abs(x(1)x=Columns 1 through 5 -1.3000 1.7321 4.8000 0 1.3000 a(4,3)=6.5a=1.0000
5、 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 0 0 6.5000a(5,:)=5,4 3a=1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 0 0 6.5000 5.0000 4.0000 3.0000给给a的第五行全的第五行全行赋值,用行赋值,用:号号v 把把a的第的第2行和第行和第4行及第行及第1列和第列和第3列交列交点上的元素提出,构成一个新矩阵点上的元素提出,构成一个新矩阵ba=1.0000 2.0000 3.0000 4.0000 5.0
6、000 6.0000 7.0000 8.0000 9.0000 0 0 6.5000 5.0000 4.0000 3.0000b=a(2 4,1 3)b=4.0000 6.0000 0 6.5000v 要抽去要抽去a中的第中的第2行,第行,第4行,第行,第5行,可用空行,可用空矩阵矩阵 的概念的概念v 空矩阵空矩阵是指没有元素的矩阵,元素都消失掉是指没有元素的矩阵,元素都消失掉 零矩阵零矩阵元素是存在的,只是值为零元素是存在的,只是值为零a(2,4,5,:)=a=1 2 3 7 8 9a=1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.00
7、00 9.0000 0 0 6.5000 5.0000 4.0000 3.0000复数 实数是复数的特例,复数的虚数部分实数是复数的特例,复数的虚数部分用用i或或j表示表示 c=3+5.2i c=3.0000+5.2000i复数的赋值方法两种复数的赋值方法两种将矩阵元素逐个赋予复数将矩阵元素逐个赋予复数z=1+2i,3+4i;5+6i,7+8iz=1.0000+2.0000i 3.0000+4.0000i 5.0000+6.0000i 7.0000+8.0000i将矩阵的实部和虚部分别赋值将矩阵的实部和虚部分别赋值z=1,3;5,7+2,4;6,8*iz=1.0000+2.0000i 3.00
8、00+4.0000i 5.0000+6.0000i 7.0000+8.0000i如果在前面其它程序中曾给如果在前面其它程序中曾给i,j赋过值,则赋过值,则i,j此时已不是虚数符号。此时应键入此时已不是虚数符号。此时应键入 clear i,j 把曾赋值的把曾赋值的i,j清除掉,恢复为虚数标识符清除掉,恢复为虚数标识符MATLAB中所有的运算符和函数对复数中所有的运算符和函数对复数有效有效f=sqrt(1+2i)f=1.2720+0.7862i f*fans=1.0000+2.0000i变量检查v 在调试程序时,要检查工作空间中的变量及其阶数 变量检查用who命令whoYour variables
9、 are:a ans b c f x z 详细特征用详细特征用whos命令命令whos Name Size Bytes Class a 2x3 48 double array ans 1x1 16 double array(complex)b 2x2 32 double array c 1x1 16 double array(complex)f 1x1 16 double array(complex)x 1x5 40 double array z 2x2 64 double array(complex)Grand total is 22 elements using 232 bytes每个实元
10、素占8个字节复元素占16个字节 介绍介绍Inf(无穷大无穷大infinite)和和NaN(非数(非数not a number)Inf (1/0)1/0Warning:Divide by zero.ans=Inf NaN(0/0,0*Inf,Inf/Inf)Inf/Infans=NaN基本赋值矩阵ans预设的计算结果的变量名预设的计算结果的变量名pi内建的内建的值值Inf值,无限大值,无限大()NaN无法定义一个数目无法定义一个数目()i 或或 j 虚数单位虚数单位i=j=-1Nargin 函数输入参数个数函数输入参数个数nargout函数输出参数个数函数输出参数个数realmax最大的正实数最
11、大的正实数realmin最小的正实数最小的正实数flops浮点运算次数浮点运算次数epsMATLAB定义的正的极小值定义的正的极小值=2.2204e-16名称名称含义含义名称名称含义含义zeros全零矩阵全零矩阵(mXn阶阶)logspace对数均分向量对数均分向量(1Xn阶数组阶数组)ones全么矩阵全么矩阵(mXn阶阶)freqspace频率特性的频率区间频率特性的频率区间rand随机数矩阵随机数矩阵(mXn阶阶)meshgrid画三阶曲面时的画三阶曲面时的X,Y网络网络randn正态随机数矩阵正态随机数矩阵(mXn阶阶):将元素按列取出排成一列将元素按列取出排成一列eye(n)单位矩阵单
12、位矩阵(方阵方阵)prod总乘积总乘积linespace均分向量均分向量(1Xn阶数组阶数组)基本矩阵基本矩阵 矩阵结构形式提取和变换矩阵结构形式提取和变换名称名称含义含义名称名称含义含义fiplr矩阵左右翻转矩阵左右翻转diag产生或提取对角阵产生或提取对角阵fipud矩阵上下翻转矩阵上下翻转tril产生下三角产生下三角fipdim矩阵特定维翻转矩阵特定维翻转triu产生上三角产生上三角Rot90矩阵反时针矩阵反时针90翻转翻转 特殊矩阵特殊矩阵companCompanion矩矩阵阵magic魔方矩阵魔方矩阵galleryHigham矩阵矩阵pascalPascal矩阵矩阵handmardH
13、andmard矩矩阵阵rosser经典的对称特经典的对称特征值测试矩阵征值测试矩阵hankelHankel矩阵矩阵toeplizeToeplize矩阵矩阵hilbHilbert矩阵矩阵vanderVandermonde矩阵矩阵invhilbHilbert逆矩逆矩阵阵wilkinsonWilkinsons特征值测试矩特征值测试矩阵阵 例例2.1 2.1 计算表达式的值,并将结果赋给计算表达式的值,并将结果赋给变量变量x x,然后显示出结果。,然后显示出结果。在MATLAB命令窗口输入命令:x=(5+cos(47*pi/180)/(1+sqrt(7)-2*i)%计算表达式的值x=1.1980+0.
14、6572i 2.2.3 数据的输出格式 MATLAB用十进制数表示一个常数,具体可采用日常记数法和科学记数法两种表示方法。数据输出时用户可以用format命令设置或改变数据输出格式。format命令的格式为:format 格式符 注意,format命令只影响数据输出格式,而不影响数据的计算和存储。2.2.4 预定义变量 在MATLAB工作空间中,还驻留几个由系统本身定义的变量。它们有特定的含义,在使用时,应尽量避免对这些变量重新赋值。2.2.5 内存变量的管理 1.内存变量的显示与删除 who和whos这两个命令用于显示在MATLAB工作空间中已经驻留的变量名清单。clear命令用于删除MAT
15、LAB工作空间中的变量。注意,预定义变量不能被删除。2.工作空间浏览器 (1)工作空间浏览器的启动 (2)工作空间浏览器的操作 3.内存变量文件v利用MAT文件(.mat)可以把当前MATLAB工作空间中的一些有用变量长久地保留下来。vMAT文件的生成和装入由save和load命令来完成。常用格式为:save 文件名 变量名表 -append-ascii load 文件名 变量名表 -ascii2.3 MATLAB矩阵 2.3.1 矩阵的建立 1.直接输入法 将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。例如 A=1 2
16、3;4 5 6;7 8 9A=1 2 3 4 5 6 7 8 9 2.利用M文件建立矩阵 对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。例2.2 利用M文件建立MYMAT矩阵。(1)启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵.(2)把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。(3)运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用。3.利用MATLAB函数建立矩阵 几个产生特殊矩阵的函数:zeros、ones、eye、rand、randn。这几个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。其调用格式是:zeros(
17、m)产生mm零矩阵 zeros(m,n)产生mn零矩阵。zeros(size(A)产生与矩阵A同样大小的零矩阵 相关的函数有:length(A)给出行数和列数中的较大者,即length(A)=max(size(A);ndims(A)给出A的维数。例例2.3 2.3 分别建立分别建立3 33 3、3 32 2和与矩阵和与矩阵A A同样大小同样大小的零矩阵。的零矩阵。(1)建立一个33零矩阵:zeros(3)(2)建立一个32零矩阵:zeros(3,2)(3)建立与矩阵A同样大小零矩阵:zeros(size(A)此外,常用的函数还有reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩
18、阵A重新排成mn的二维矩阵。4.建立大矩阵 大矩阵可由方括号中的小矩阵建立起来。例如 A=1 2 3;4 5 6;7 8 9;C=A,eye(size(A);ones(size(A),A C=1 2 3 1 0 0 4 5 6 0 1 0 7 8 9 0 0 1 1 1 1 1 2 3 1 1 1 4 5 6 1 1 1 7 8 9 2.3.2 冒号表达式 冒号表达式的一般格式:e1:e2:e3 还可以用linspace函数产生行向量:linspace(a,b,n)linspace(a,b,n)与a:(b-a)/(n-1):b等价。2.3.3 矩阵的拆分1.矩阵元素 MATLAB允许用户对一个
19、矩阵的单个元素进行赋值和操作。例如 A(3,2)=200 A=1 2 3 4 5 6 7 200 9 也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先第一列,再第二列,依次类推。以mn矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。其相互转换关系也可利用sub2ind和ind2sub函数求得。2.矩阵拆分 (1)利用冒号表达式获得子矩阵 A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。A(i:i+m,:)表示取A矩阵第ii+m行的全部元素;A(:,k:k+m)表示取A矩阵第kk+m列的全部元
20、素,A(i:i+m,k:k+m)表示取A矩阵第ii+m行内,并在第kk+m列中的所有元素。此外,还可利用一般向量和end运算符等来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。(2)利用空矩阵删除矩阵的元素 在MATLAB中,定义为空矩阵。给变量X赋空矩阵的语句为X=。注意,X=与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间,只是维数为0。将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。2.3.4 多维矩阵以三维矩阵为例,常用的方法有4种:(1)对二维矩阵进行扩充得到三维矩阵。(2)若干个同样大小的二维矩阵进行组合得到三维矩
21、阵。(3)除产生单位矩阵的eye函数外,前面介绍的建立矩阵的函数都可以延伸到三维矩阵。(4)用cat函数构建多维矩阵。一般调用格式是:cat(n,A1,A2,An)cat函数把大小相同的若干矩阵,沿第n维方向串接成高维矩阵。当n=1和2时,沿行和列的方向串接,结果是二维矩阵。当n=3时,沿页的方向串接,结果是三维矩阵。2.4 MATLAB运算 2.4.1 2.4.1算术运算算术运算 1.基本算术运算基本算术运算 MATLAB的基本算术运算有:(加加)、(减减)、*(乘乘)、/(/(右除右除)、(左除左除)、(乘方乘方)。注意:运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。2.2.点
22、运算点运算 点运算符有.*、././、.和和.。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。3 3MATLABMATLAB常用数学函数常用数学函数经经 典典 的的 算算 术术 运运 算算 符符 运运 算算 符符MATLAB表达表达式式加加+a+b减减-a-b乘乘*a*b 除除/或或 a/b或或ab 幂幂ab 2.4.2 2.4.2 关系运算关系运算 MATLAB提供了6种关系运算符:(小于)、(大于)、=(大于或等于)、=(等于)、=(不等于)。关系运算符的运算法则。指令指令含义含义小于小于大于大于=大于等于大于等于=等于等于=不等于不等于关系运算关系运算指令指令含
23、义含义&逻辑逻辑 and|逻辑逻辑 or逻辑逻辑 not逻辑运算逻辑运算MATLAB常用数学函数常用数学函数名称名称含义含义名称名称含义含义名称名称含义含义sin正弦正弦csc余割余割atanh反双曲正切反双曲正切cos余弦余弦asec反正割反正割acoth反双曲余切反双曲余切tan正切正切acsc反余割反余割sech双曲正割双曲正割cot余切余切sinh双曲正弦双曲正弦csch双曲余割双曲余割asin反正弦反正弦cosh双曲余弦双曲余弦asech反双曲正割反双曲正割acos反余弦反余弦tanh双曲正切双曲正切acsch反双曲余割反双曲余割atan反正切反正切coth双曲余切双曲余切atan2
24、四象限反正切四象限反正切acot反余切反余切asinh反双曲正弦反双曲正弦 sec正割正割acosh反双曲余弦反双曲余弦 l 三角函数和双曲函数指数函数指数函数名称名称含义含义名称名称含义含义名称名称含义含义expE为底的指数为底的指数log1010为底的对数为底的对数pow22的幂的幂log自然对数自然对数log22为底的对数为底的对数sqrt平方根平方根 复数函数复数函数名称名称含义含义名称名称含义含义名称名称含义含义abs绝对值绝对值conj复数共轭复数共轭real复数实部复数实部angle相角相角imag复数虚部复数虚部 名称名称含义含义名称名称含义含义ceil向向+取整取整rem求余
25、数求余数fix向向0取整取整round向靠近整数取整向靠近整数取整floor向向-取整取整sign符号函数符号函数mod模除求余模除求余 矩矩阵阵变变换换函函数数名称名称含义含义名称名称含义含义fiplr矩阵左右翻转矩阵左右翻转diag产生或提取对角阵产生或提取对角阵fipud矩阵上下翻转矩阵上下翻转tril产生下三角产生下三角fipdim矩阵特定维翻转矩阵特定维翻转triu产生上三角产生上三角Rot90矩阵反时针矩阵反时针90翻转翻转 取取整整函函数数和和求求余余函函数数名称名称含义含义名称名称含义含义min最小值最小值max最大值最大值mean平均值平均值median中位数中位数std标准
26、差标准差diff相邻元素的差相邻元素的差sort排序排序length个数个数norm欧氏(欧氏(Euclidean)长度)长度sum总和总和prod总乘积总乘积dot内积内积cumsum累计元素总和累计元素总和cumprod累计元素总乘积累计元素总乘积cross外积外积 其他函数其他函数 例例2.4 2.4 产生产生5 5阶随机方阵阶随机方阵A A,其元素为,其元素为10,9010,90区间的随机整数,然后判断区间的随机整数,然后判断A A的的元素是否能被元素是否能被3 3整除。整除。(1)生成5阶随机方阵A。A=fix(90-10+1)*rand(5)+10)A=86 71 59 42 14
27、 28 46 74 85 38 59 11 84 84 75 49 76 69 43 10 82 46 24 82 21 (2)判断A的元素是否可以被3整除。P=rem(A,3)=0P=0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 1 0 1 2.4.3 2.4.3 逻辑运算逻辑运算 MATLAB提供了3种逻辑运算符:&(与)、|(或)和(非)。运算法则。例例2.5 2.5 在在0,30,3区间,按要求求区间,按要求求y=sin(x)y=sin(x)的值:的值:方法1:x=0:pi/100:3*pi;y=sin(x);y1=(x2*pi).*y;%消去
28、负半波q=(xpi/3&x7*pi/3&x=0).*y;%消去负半波p=sin(pi/3);y2=(y=p)*p+(yp).*y1;%按要求处理第(2)步 2.5 字符串 字符串是用单撇号括起来的字符序列。例如,Central South University。若字符串中的字符含有单撇号,则该单撇号字符应用两个单撇号来表示。字符串是以ASCII码形式存储的。abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。相反,char函数可以把ASCII码矩阵转换为字符串矩阵。例例2.6 2.6 建立一个字符串向量,然后对该向建立一个字符串向量,然后对该向量做如下处理:量做如下处
29、理:(1)取第15个字符组成的子字符串。(2)将字符串倒过来重新排列。(3)将字符串中的小写字母变成相应的大写字母,其余字符不变。(4)统计字符串中小写字母的个数。与字符串有关的另一个重要函数是eval,其调用格式为:eval(t)其中t为字符串。它的作用是把字符串的内容作为对应的MATLAB语句来执行。例如 t=pi;m=t,sin(t),cos(t);y=eval(m)2.6 结构和单元2.6.1 结构数据 MATLAB通过使用结构(Structure)数据类型把一组不同类型的数据同时又是在逻辑上相关的数据组成一个有机的整体,以便于管理和引用。1.结构矩阵的建立与引用 2.结构成员的修改
30、2.6.2 单元数据 单元(Cell)数据的概念与结构有些类似,也是把不同属性的数据放在一个变量中。所不同的是,结构变量的各个元素下有成员,每个成员都有自己的名字,对成员的引用是:结构变量名.成员名。而单元矩阵的各个元素就是不同类型的数据,用带有大括号下标的形式引用单元矩阵元素。第第4 4章章 MATLABMATLAB绘图绘图 4.1 4.1 二维图形二维图形 4.2 4.2 三维图形三维图形 4.3 4.3 三维图形的精细处理三维图形的精细处理 4.4 4.4 图像与动画图像与动画 4.5 4.5 低层绘图操作低层绘图操作 4.1 4.1 二维图形二维图形4.1.1绘制二维曲线的最基本函数1
31、.plot函数的基本用法plot函数的基本调用格式为:plot(x,y)其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。例例4.1 4.1 在在00X2X2 区间内,绘制曲线区间内,绘制曲线y=2ey=2e-0.5x0.5xsin(2x)sin(2x)。程序如下:x=0:pi/100:2*pi;y=2*exp(-0.5*x).*sin(2*pi*x);plot(x,y)说明:(1)当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。(2)当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同色彩的曲线。曲线条数等于y矩阵的另一维数,x被作为
32、这些曲线共同的横坐标。(3)plot函数最简单的调用格式是只包含一个输入参数:plot(x)。例例4.2 4.2 某工厂某工厂20002000年各月总产值(单位:万元)年各月总产值(单位:万元)分别为分别为2222、6060、8888、9595、5656、2323、9 9、1010、1414、8181、5656、2323,试绘制折线图以显示出该厂总产,试绘制折线图以显示出该厂总产值的变化情况。值的变化情况。程序如下:p=22,60,88,95,56,23,9,10,14,81,56,23;plot(p)2含多个输入参数的plot函数含多个输入参数的plot函数调用格式为:plot(x1,y1,
33、x2,y2,xn,yn)3含选项的plot函数含选项的plot函数调用格式为:plot(x1,y1,选项1,x2,y2,选项2,xn,yn,选项n)例例4.3 4.3 用不同线型和颜色在同一坐标内绘用不同线型和颜色在同一坐标内绘制曲线制曲线y=2ey=2e-0.5x-0.5xsin(2x)sin(2x)及其包络线。及其包络线。程序如下:x=(0:pi/100:2*pi);y1=2*exp(-0.5*x)*1,-1;y2=2*exp(-0.5*x).*sin(2*pi*x);x1=(0:12)/2;y3=2*exp(-0.5*x1).*sin(2*pi*x1);plot(x,y1,g:,x,y2
34、,b-,x1,y3,rp);4双纵坐标函数plotyy plotyy函数是MATLAB 5.X新增的函数。它能把函数值具有不同量纲、不同数量级的两个函数绘制在同一坐标中。调用格式为:plotyy(x1,y1,x2,y2)其中x1y1对应一条曲线,x2y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1y1数据对,右纵坐标用于x2y2数据对。例4.4 用不同标度在同一坐标内绘制曲线y1=e-0.5xsin(2x)及曲线y2=1.5e-0.1xsin(x)。程序如下:x1=0:pi/100:2*pi;x2=0:pi/100:3*pi;y1=exp(-0.5*x1).*sin(2*p
35、i*x1);y2=1.5*exp(-0.1*x2).*sin(x2);plotyy(x1,y1,x2,y2);4.1.2 绘制图形的辅助操作 1.图形标注 有关图形标注函数的调用格式为:title(图形名称)xlabel(x轴说明)ylabel(y轴说明)text(x,y,图形说明)legend(图例1,图例2,)例例4.5 4.5 给图形添加图形标注。给图形添加图形标注。程序如下:x=(0:pi/100:2*pi);y1=2*exp(-0.5*x)*1,-1;y2=2*exp(-0.5*x).*sin(2*pi*x);x1=(0:12)/2;y3=2*exp(-0.5*x1).*sin(2*
36、pi*x1);plot(x,y1,g:,x,y2,b-,x1,y3,rp);title(曲线及其包络线);%加图形标题 xlabel(independent variable X);%加X轴说明 ylabel(independent variable Y);%加Y轴说明 text(2.8,0.5,包络线);%在指定位置添加图形说明 text(0.5,0.5,曲线y);text(1.4,0.1,离散数据点);legend(包络线,包络线,曲线y,离散数据点)%加图例 2.坐标控制函数的调用格式为:axis(xmin xmax ymin ymax zmin zmax)axis函数功能丰富,常用的用
37、法还有:axis equal 纵、横坐标轴采用等长刻度axis square 产生正方形坐标系(缺省为矩形)axis auto 使用缺省设置axis off 取消坐标轴axis on 显示坐标轴grid on/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。box on/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。例例4.6 4.6 用图形保持功能在同一坐标内绘制曲线用图形保持功能在同一坐标内绘制曲线y=2ey=2e-0.5x-0.5xsin(2x)sin(2x)及其包络线,并加网格线。及其包络线,并加网格线。程序如下:x=(0
38、:pi/100:2*pi);y1=2*exp(-0.5*x)*1,-1;y2=2*exp(-0.5*x).*sin(2*pi*x);plot(x,y1,b:);axis(0,2*pi,-2,2);%设置坐标 hold on;%设置图形保持状态 plot(x,y2,k);grid on;%加网格线 box off;%不加坐标边框 hold off;%关闭图形保持 3.3.图形窗口的分割图形窗口的分割 subplot函数的调用格式为:subplot(m,n,p)例例4.7 4.7 在一个图形窗口中以子图形式同时绘制在一个图形窗口中以子图形式同时绘制正弦、余弦、正切、余切曲线。正弦、余弦、正切、余切
39、曲线。程序如下:x=linspace(0,2*pi,60);y=sin(x);z=cos(x);t=sin(x)./(cos(x)+eps);ct=cos(x)./(sin(x)+eps);subplot(2,2,1);plot(x,y);title(sin(x);axis(0,2*pi,-1,1);subplot(2,2,2);plot(x,z);title(cos(x);axis(0,2*pi,1,1);subplot(2,2,3);plot(x,t);title(tangent(x);axis(0,2*pi,-40,40);subplot(2,2,4);plot(x,ct);title(
40、cotangent(x);axis(0,2*pi,-40,40);对图形窗口灵活分割。请看下面的程序。对图形窗口灵活分割。请看下面的程序。x=linspace(0,2*pi,60);y=sin(x);z=cos(x);t=sin(x)./(cos(x)+eps);ct=cos(x)./(sin(x)+eps);subplot(2,2,1);%选择22个区中的1号区 stairs(x,y);title(sin(x)-1);axis(0,2*pi,-1,1);subplot(2,1,2);%选择21个区中的2号区 stem(x,y);title(sin(x)-2);axis(0,2*pi,-1,1
41、);subplot(4,4,3);%选择44个区中的3号区 plot(x,y);title(sin(x);axis(0,2*pi,-1,1);subplot(4,4,4);%选择44个区中的4号区 plot(x,z);title(cos(x);axis(0,2*pi,-1,1);subplot(4,4,7);%选择44个区中的7号区 plot(x,t);title(tangent(x);axis(0,2*pi,-40,40);subplot(4,4,8);%选择44个区中的8号区 plot(x,ct);title(cotangent(x);axis(0,2*pi,-40,40);4.1.3 绘
42、制二维图形的其他函数1.其他形式的线性直角坐标图在线性直角坐标系中,其他形式的图形有条形图、阶梯图、杆图和填充图等,所采用的函数分别是:bar(x,y,选项)stairs(x,y,选项)stem(x,y,选项)fill(x1,y1,选项1,x2,y2,选项2,)例例4.8 4.8 分别以条形图、填充图、阶梯图和杆分别以条形图、填充图、阶梯图和杆图形式绘制曲线图形式绘制曲线y=2ey=2e-0.5x-0.5x。程序如下:x=0:0.35:7;y=2*exp(-0.5*x);subplot(2,2,1);bar(x,y,g);title(bar(x,y,g);axis(0,7,0,2);subpl
43、ot(2,2,2);fill(x,y,r);title(fill(x,y,r);axis(0,7,0,2);subplot(2,2,3);stairs(x,y,b);title(stairs(x,y,b);axis(0,7,0,2);subplot(2,2,4);stem(x,y,k);title(stem(x,y,k);axis(0,7,0,2);2 2极坐标图极坐标图polar函数用来绘制极坐标图,其调用格式为:polar(theta,rho,选项)其中theta为极坐标极角,rho为极坐标矢径,选项的内容与plot函数相似。例例4.9 4.9 绘制绘制=sin(2)cos=sin(2)c
44、os(2)(2)的极坐标图。的极坐标图。程序如下:theta=0:0.01:2*pi;rho=sin(2*theta).*cos(2*theta);polar(theta,rho,k);3 3对数坐标图形对数坐标图形 MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为:semilogx(x1,y1,选项1,x2,y2,选项2,)semilogy(x1,y1,选项1,x2,y2,选项2,)loglog(x1,y1,选项1,x2,y2,选项2,)例4.10 绘制y=10 x2的对数坐标图并与直角线性坐标图进行比较。程序如下:x=0:0.1:10;y=10*x.*x;subplot(2,2
45、,1);plot(x,y);title(plot(x,y);grid on;subplot(2,2,2);semilogx(x,y);title(semilogx(x,y);grid on;subplot(2,2,3);semilogy(x,y);title(semilogy(x,y);grid on;subplot(2,2,4);loglog(x,y);title(loglog(x,y);grid on;4.4.对函数自适应采样的绘图函数对函数自适应采样的绘图函数fplot函数的调用格式为:fplot(fname,lims,tol,选项)例4.11 用fplot函数绘制f(x)=cos(ta
46、n(x)的曲线。先建立函数文件myf.m:function y=myf(x)y=cos(tan(pi*x);再用fplot函数绘制myf.m函数的曲线:fplot(myf,-0.4,1.4,1e-4)5.5.其他形式的图形其他形式的图形MATLAB提供的绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图、复数的相量图等等。例例4.12 4.12 绘制图形:绘制图形:(1)(1)某次考试优秀、良好、中等、及格、不及格的人数分别某次考试优秀、良好、中等、及格、不及格的人数分别为:为:7,17,23,19,57,17,23,19,5,试用饼图作成绩统计分析。,试用饼图作成绩统计分析。(2)(
47、2)绘制复数的相量图:绘制复数的相量图:3+2i3+2i、4.5-i4.5-i和和-1.5+5i-1.5+5i。程序如下:subplot(1,2,1);pie(7,17,23,19,5);title(饼图);legend(优秀,良好,中等,及格,不及格);subplot(1,2,2);compass(3+2i,4.5-i,-1.5+5i);title(相量图);4.2 4.2 三维图形三维图形 4.2.14.2.1绘制三维曲线的最基本函数绘制三维曲线的最基本函数 plot3函数与plot函数用法十分相似,其调用格式为:plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,xn,yn,
48、zn,选项n)例例4.13 4.13 绘制空间曲线。绘制空间曲线。程序如下:t=0:pi/50:2*pi;x=8*cos(t);y=4*sqrt(2)*sin(t);z=-4*sqrt(2)*sin(t);plot3(x,y,z,p);title(Line in 3-D Space);text(0,0,0,origin);xlabel(X),ylabel(Y),zlabel(Z);grid;4.2.2 4.2.2 三维曲面三维曲面1平面网格坐标矩阵的生成(1)利用矩阵运算生成。x=a:dx:b;y=(c:dy:d);X=ones(size(y)*x;Y=y*ones(size(x);(2)利用
49、meshgrid函数生成。x=a:dx:b;y=c:dy:d;X,Y=meshgrid(x,y);例例4.14 4.14 已知已知6x306x30,15y3615y36,求不定方程,求不定方程2x+5y=1262x+5y=126的整数解。的整数解。程序如下:x=5:29;y=14:35;x,y=meshgrid(x,y);%在5,2914,35区域生成网格坐标z=2*x+5*y;k=find(z=126);%找出解的位置 x(k),y(k)%输出对应位置的x,y即方程的解ans=8 13 18 23 28ans=22 20 18 16 14运行结果:2.2.绘制三维曲面的函数绘制三维曲面的函数
50、 surf函数和mesh函数的调用格式为:mesh(x,y,z,c)surf(x,y,z,c)例4.15 用三维曲面图表现函数z=sin(y)cos(x)。程序程序1:x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x);mesh(x,y,z);xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(mesh);程序程序2:x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x);surf(x,y,z);xlabel(x-axis),ylabel(y-axis),zlabel(
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。