资源描述
1本章目标l了解MATLAB的基本环境l熟悉变量的定义l掌握MATLAB矩基本运算的方法l掌握MATLAB的几种基本控制转移语句l掌握MATLAB的基本绘图l掌握MATLAB文件的读写2lMATLAB的基本环境l变量的定义与初值化l矩矩阵的运算的运算lMATLAB的几种基本控制转移语句lMATLAB的绘图lMATLAB文件的读写3操作桌面的缺省外貌4Command Window 指令窗简介5l【例1.3.2-1】求12+2(7 4)32的算术运算结果。l(1)用键盘在MATLAB 指令窗中输入以下内容(12+2*(7-4)/32(2)在上述表达式输入完成后,按【Enter】键,该就指令被执行。(3)在指令执行后,MATLAB 指令窗中将显示以下结果。ans=26l 1 2 3l简单矩阵A=4 5 6l 7 8 9。l(1)在键盘上输入下列内容lA=1,2,3;4,5,6;7,8,9l(2)按【Enter】键,指令被执行。l(3)在指令执行后,MATLAB 指令窗中将显示以下结果:lA=l1 2 3l4 5 6l7 8 97编辑调试器l编辑调试器一般用于器一般用于创建建M 文件,或者修改已文件,或者修改已存在的存在的M 文件。当你打开或修改一个文件。当你打开或修改一个M 文文l件,件,编辑调试器会自器会自动被被调用。用。创建一个建一个M 文文件的方法:件的方法:l一、在菜一、在菜单按按“File/New/M-file”创建;建;l二、二、单击图标。l打开一个已存在的打开一个已存在的M 文件也有两个方法:文件也有两个方法:l一、按路径一、按路径“File/Open”打开;打开;8当M 文件保存完后,在命令窗口(The Command Windows)中输入这个M 文件的名字,它就可以被执行了91.8.2 函数文件函数文件l如果M文件的第一行包含单词“function”,那么这个文件就是函数文件。函数文件与文本文件不同,它的变量将不出现在工作空间里。l例如:M文件cai2.mlfunction y=f(x)cai2(2)ans=4ly=x 2;cai2(9)ans=81 l cai2(20)ans=40010l1.8.3 删除M文件l在Matlab的工作空间中,使用“delete”命令可以删除M 文件,例如delete cai2.m 可以永久删除M 文件cai2.m。11MATLAB 工作区l像 z=10 这样的语句创建了一个变量z,把10 存储在其内,它保存在计算机的一段内存中,就是我们所常说的工作区。l用whos 命令将会产生一个在当前工作区内的所有变量和数组状况表。就以M 文件calc_area 为说明,当两文件执行后,这个工作区所包含的变量有:12l可用clear 命令删除在本工作区的变量,格式如下lclear var1,var2.lvar1,var2 是要删除变量的变量名。clear variables 命令或clear 命令用于清除当前工l作区中的所有变量。13数值、变量和表达式l数值的记述(1)z1=3+4iz1=3.0000+4.0000iz2=1+2*iz3=2*exp(i*pi/6)z=z1*z2/z3141.3.3 变量和表达式l变量的命名方式:量的命名方式:l变量名由字母、数字和下划线组成;l变量名中的英文字母大小写是有区别的;l变量名的最大长度是有规定的l不同版本的系统规定不同:19个字符、31或63个字符等l可调用namelengthmax函数得到系统规定长度15变量的使用clear%删除工作区中所有定义过的变量whos%查看当前工作区内变量信息,无显示表示没有定义的变量 xy=1;yx=2;%对变量赋值 xy%查看变量xy的当前数值xy=1 whos Name Size Bytes Class xy 1x1 8 double array yx 1x1 8 double arrayGrand total is 2 elements using 16 bytes clear xy yx%删除变量xy及yx whos xy%这时变量xy已经不存在了?Undefined function or variable xy.16一个语句一般以回车键表示终止。如果语句的最后一个字符是分号“;”,则执行后的结果将不被显示,但语句照常完成。若最后一个字符为逗号“,”或无任何字符,则结果将进行显示。如果表达式很复杂,无法在一行中写完,那么可用两重或多重省略号“.”后紧跟回车键表明下一行是该行的续行。例如:lS=1 1/2+1/3 1/4+1/5-1/6+1/7.l-1/8+1/9-1/10+1/11 17MATLAB 变量的初始化变量的初始化当变量初始化时,MATLAB 将会自动建立变量。有三种方式初始化MATLAB 中的变量:1用赋值语句初始化变量2用input 函数从键盘输入初始化变量3从文件读取一个数据18l赋值语句的一般形式如下var=expression19l用捷径表达式(short expressions)来赋值它的一般顺序始下first:incr:lastfirst 代表数组的每一个值,incr 代表步增量,last 代表这个数组的最后一个值。如果步增量为1,那么步增量可省略,而变成了first:last 格式。20用关键字input 初始化变量l关键字 input 用来提示使用者和直接从键盘输入初始化变量linput(提示信息,输入格式)下面的赋值语句:my_val=input(enter an input value:)in2=input(enter data:,s)212.矩阵的构造l通通过直接直接输入矩入矩阵的元素构造矩的元素构造矩阵:l用中括号 把所有矩阵元素括起来l同一行的不同数据元素之间用空格或逗号间隔l用分号(;)指定一行结束l可分成几行进行输入,用回车符代替分号l数据元素可以是表达式,系统将自动计算结果22例:输入矩阵例:输入矩阵A、B的值的值A=1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16B=1,sqrt(25),9,13;2,6,10,7*2;3+sin(pi),7,11,15,4,abs(-8),12,16232.1.2 矩阵下标与子矩阵提取矩阵下标与子矩阵提取lA(m,n)提取第提取第m行,第行,第n列元素列元素lA(:,n)提取第提取第n列元素列元素lA(m,:)提取第提取第m行元素行元素lA(m1:m2,n1:n2)提取第提取第m1行到第行到第m2行和第行和第n1列到第列到第n2列的所有元素列的所有元素lA(m:end,n)提取从第提取从第m行到最末行和第行到最末行和第n列的子列的子块lA(:)得到一个得到一个长列矢量,列矢量,该矢量的元素按矩矢量的元素按矩阵的列的列进行排列行排列24例:例:修改矩阵A中元素的数值A=1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16;A(1,1)=0;A(2,2)=A(1,2)+A(2,1);A(4,4)=cos(0);则矩阵变为:A=0 2 3 4 5 7 7 8 9 10 11 12 13 14 15 1252.1.3 矩阵的算术运算l1矩矩阵的加减运算:的加减运算:(加加)、(减减)l2矩矩阵乘法:乘法:*(乘乘)l3矩矩阵除法:除法:/(右除右除)、(左除左除)l4矩矩阵的乘方:的乘方:(乘方乘方)l5矩矩阵转置:置:(转置运算符置运算符)26l在在Matlab中有两种矩中有两种矩阵除法符号:除法符号:“”即左即左除和除和“”即右除如果即右除如果A矩矩阵是非奇异方是非奇异方阵,则AB是是A的逆矩的逆矩阵乘乘B,即,即inv(A)*B;而;而B/A是是B乘乘A的逆矩的逆矩阵,即,即B*inv(A)通常:x=AB就是A*x=B的解;x=B/A就是x*A=B的解.272.1.6 矩阵函数函函 数数功功 能能det计算矩阵所对应的行列式的值diag抽取矩阵对角线元素eig求特征值和特征向量inv求矩阵的逆阵lu三角分解Poly求特征多项式Rank求矩阵的秩Svd奇异值分解281求矩阵的行列式的值 X=1 2 3 0;5 6 0 8;9 0 11 12;0 14 15 16;det(X)ans=-5464292求矩阵的秩 X=1,2,3;2,3-5;4 7 1;rank(X)ans=2303求逆矩阵 X=1 2 3 0;5 6 0 8;9 0 11 12;0 14 15 16;Y=inv(X)Y=0.2299 0.0908 0.0351 -0.0717 0.1940 0.0798 -0.0659 0.0095 0.1274 -0.0835 0.0322 0.0176 -0.2892 0.0084 0.0275 0.0377Y*X%矩矩阵与其逆与其逆阵相乘相乘结果是果是单位矩位矩阵ans=1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 X*Y%矩矩阵的逆的逆阵是唯一的是唯一的ans=1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000314求特征值和特征向量 X=-2 1 1;0 2 0;-4 1 3;V D=eig(X)V=-0.7071 -0.2425 0.3015 0 0 0.9045 -0.7071 -0.9701 0.3015D=-1 0 0 0 2 0 0 0 2325矩阵分解 A=2-1 3;1 2 1;2 4 3;L,U=lu(A)%三角分解三角分解 L=1.0000 0 0 0.5000 0.5000 1.0000 1.0000 1.0000 0U=2.0000 -1.0000 3.0000 0 5.0000 0 0 0 -0.5000336求解线形方程组34应用举例35 数组运算数组运算l 数组的加减运算l数组的加减运算与矩阵的算法一样,所以“”、“”既可以表示矩阵运算,也可以表示数组运算。l1.3.2 数组的乘法运算数组的乘法用.*表示。如果A 与B 具有相同的维数,那么A.*B 表示这样一个数组,其元素分别是A 与B 两数组对应元素之积。例如,如果有:X=1 2 3;Y=4 5 6;lZ=X.*YlZ=l4 10 1836l表达式A./B 和A.B 将给出各对应元素之商,例如:lZ=X.YlZ=l4.0000 2.5000 2.0000lZ=X./YlZ=l0.2500 0.4000 0.500037MATLAB的几种基本控制转移语句的几种基本控制转移语句l按照程序按照程序设计的的观点点,任何算法功能都可以通任何算法功能都可以通过由程序模由程序模块组成的三种基本程序成的三种基本程序结构的构的组合来合来实现:l顺序结构:程序按程序语句或模块在执行流中的顺序逐个执行。l选择结构:程序按设定的条件实现程序执行流的多路分支。l循环结构:程序按给定的条件重复地执行指定的程序段或模块。383.2.2 选择结构l在在MATLAB中,中,选择结构由构由两种两种语句句结构构实现:lif语句lswitch语句条件条件程序模块程序模块1成立成立不成立不成立程序模块程序模块23.2.2 选择结构39if语句if表达式表达式 程序模程序模块1 else 程序模程序模块2end40if语句的两种变形l(1)单分支分支if语句:只有一个分支的句:只有一个分支的选择结构构 if表达式 程序模块endl(2)多分支多分支if语句:超句:超过2个的个的选择if表达式1 程序模块1 elseif 表达式2 程序模块2 elseif 表达式n 程序模块n else 程序模块n+1end41例:将百分制的学生成绩转换为五级制的成绩输出clearn=input(输入入n=);if n=90 r=Aelseif n=80 r=Belseif n=70 r=Celseif n=60 r=Delse r=Eend运行结果:运行结果:输入n=87r=B422.switch语句 switch 表达式表达式 case 数数值1 程序模程序模块1;case 数数值2 程序模程序模块2;otherwise 程序模程序模块n end43例:将百分制的学生成绩转换为五级制的成绩输出使用switch语句 clearn=input(输入入n=);switch fix(n/10)case 10,9 r=A case 8 r=B case 7 r=C case 6 r=D otherwise r=Eend运行结果:运行结果:输入n=65r=D443.2.3 循环结构l在在MATLAB中,循中,循环结构可构可以由两种以由两种语句句结构构实现:lfor语句循环结构lwhile语句循环结构程序模块程序模块不成立不成立成立成立条件条件3.2.2 选择结构451for语句循环结构语句循环结构for循循环变量起始量起始值:步:步长:终止止值循循环体体end46例:使用for结构计算1+2+3+100clearsum=0;for i=1:100 sum=sum+i;endsum运行结果:运行结果:sum=505047 例 写出下列程序的执行结果。s=0;a=12,13,14;15,16,17;18,19,20;21,22,23;for k=a s=s+k;end disp(s);482while语句循环结构语句循环结构 while表达式表达式 循循环体体end49例:使用while结构计算1+2+3+100clearsum=0;i=0;while i100i=i+1;sum=sum+i;endsum运行结果:运行结果:sum=505050MATLAB的绘图功能的绘图功能l二二维图形形l 图图形修形修饰饰与控制与控制l三三维图形形51 二维图形lplot函数函数绘制二制二维曲曲线,常用格式有:,常用格式有:lplot(x):缺省自变量的绘图格式,x可为向量或矩阵。lplot(x,y):基本格式,x和y可为向量或矩阵。lplot(x1,y1,x2,y2,):多条曲线绘图格式,在同一坐标系中绘制多个图形。lplot(x,y,s):开关格式,开关量字符串s设定了图形曲线的颜色、线型及标示符号。52图形颜色、标记和线形参数表色彩字符色彩字符所定颜色所定颜色线型字符线型字符线型格式线型格式标记符号标记符号数据点形式数据点形式标记符号标记符号数据点形式数据点形式y黄黄-实线(默认)实线(默认).点点右三角形右三角形53例 x=3 5 7 6 12 24 15 33 6 9 7 2;plot(x)%绘制以序号制以序号为横坐横坐标,元素,元素值为纵坐坐标的曲的曲线 x=0:pi/10:2*pi;y=sin(x);plot(x,y)%绘制以制以x为横坐横坐标,y为纵坐坐标的曲的曲线54例 x=linspace(0,7);y1=sin(2*x);y2=sin(x.2);y3=(sin(x).2;%曲曲线1:红色色实线,+号号显示数据点示数据点%曲曲线2:黑色点:黑色点线,*号号显示数据点示数据点%曲曲线3:蓝色虚色虚线,上三角形,上三角形显示数据点示数据点 plot(x,y1,r+-,x,y2,k*:,x,y3,b-)55 图形修饰与控制图形修饰与控制ltitle 给图形加形加标题lxlable 给x轴加加标注注lylable 给y轴加加标注注ltext 在在图形指定的任意位置加形指定的任意位置加标注注lgtext 利用鼠利用鼠标将将标注加到注加到图形任意位置形任意位置lgrid on 打开坐打开坐标网格网格线lgrid off关关闭坐坐标网格网格线llegend 添加添加图例例laxis 控制坐控制坐标轴刻度刻度56例:绘制正弦和余弦曲线,并加入网格和标注cleart=0:0.1:10;y1=sin(t);y2=cos(t);plot(t,y1,r,t,y2,b-);x=1.7*pi;1.6*pi;y=-0.3;0.7;s=sin(t);cos(t);text(x,y,s);指定位置加指定位置加标注注title(正弦和余弦曲正弦和余弦曲线);标题legend(正弦正弦,余弦余弦)%添加添加图例注解例注解xlabel(时间)x坐坐标名名ylabel(正弦正弦&余弦余弦)y坐坐标名名grid on%添加网格添加网格axis square%将将图形形设置置为正方形正方形57MATLAB的图形编辑窗口58采用采用hold函数对图形进行比较显示函数对图形进行比较显示 cleart=0:pi/10:2*pi;y1=sin(t);y2=cos(t);y3=sin(t)-cos(t);plot(t,y1);hold on;%后后续图形叠加形叠加显示示plot(t,y2);plot(t,y3);59采用图形窗口分割方法进行比较显示采用图形窗口分割方法进行比较显示 cleart=0:pi/10:2*pi;y1=sin(t);y2=cos(t);y3=cos(t+pi/2);y4=cos(t+pi);%将将图形窗口分割成两行两列,要画的形窗口分割成两行两列,要画的图形形为第第1行第行第1列列subplot(2,2,1);plot(t,y1);%将将图形窗口分割成两行两列,要画的形窗口分割成两行两列,要画的图形形为第第1行第行第2列列subplot(2,2,2);plot(t,y2);%将将图形窗口分割成两行两列,要画的形窗口分割成两行两列,要画的图形形为第第2行第行第1列列subplot(2,2,3);plot(t,y3);%将将图形窗口分割成两行两列,要画的形窗口分割成两行两列,要画的图形形为第第2行第行第2列列subplot(2,2,4);plot(t,y4);60三维图形三维图形l三三维曲曲线图lplot3函数可以绘制三维曲线:plot3(x1,y1,z1,s1,x2,y2,z2,s2)l三三维网格网格图lmesh函数为数据点绘制网格线:mesh(z)z为nm的矩阵,x与y坐标为元素的下标位置mesh(x,y,z)x,y,z分别为三维空间的坐标位置l三三维曲面曲面图l三维曲面的绘图是由surf函数完成的,用法和mesh类似。61例:函数plot3绘制的三维曲线图 cleart=0:pi/50:10*pi;plot3(t,sin(t),cos(t),r:)grid on62例:分别用mesh函数和surf函数绘制高斯矩阵z=peaks(40);mesh(z);%网格网格线 figure%产生新的生新的图形窗口形窗口surf(z);%着色表面着色表面图63文件的读写l文件可分文件可分为两两类:l文本文件 l由字符和与字符的显示格式有关的控制符构成l常见扩展名:“TXT”、“BAT”、“HTM”l二进制文件 l 二进制文件为非文本文件l常见扩展名:“COM”、“EXE”、“BMP”、“WAV”64MATLAB中基本的低级文件I/O指令:l1打开和关打开和关闭文件文件lfopen、fclosel2格式格式读写写lfprintf、fscanfl3非格式非格式读写写lfread、fwrite658.1.1文件的打开与关闭文件的打开与关闭l1fopen函数函数lfidfopen(filename,permission)lfid,message=fopen(filename,permssion)lfilename,permission,machineformat=fopen(fid)lfid=fopen(all)l2fclose函数函数lstatus=fclose(fid)l status=fclose(all)例:打开一个名为std.dat的数据文件并进行读操作,命令为:fidfopen(my.txt,r)668.1.2格式化数据的读写格式化数据的读写lfprintf函数函数l count=fprintf(fid,format,A.)lfscanf函数函数lA,count=fscanf(fid,format,size)67例8-1l计算当算当x=0 1时f(x)=ex的的值,并将,并将结果写入到果写入到文件文件my.txt中。中。l程序程序 x=0:0.1:1;y=x;exp(x);%y有两行数据有两行数据fid=fopen(my.txt,w);fprintf(fid,%6.2f%12.8fn,y);fclose(fid);68例8-2l从上例中生成的文件从上例中生成的文件my.txt中中读取数据,并将取数据,并将结果果输出到屏幕。出到屏幕。l程序程序 fid=fopen(my.txt,r);a,count=fscanf(fid,%f%f,2 inf);fprintf(1,%f%fn,a);fclose(fid);l输出出 同例同例8-1文件中的数据格式。文件中的数据格式。698.1.5二进制数据文件的读写二进制数据文件的读写lfwrite函数:用于向一个文件写入二函数:用于向一个文件写入二进制数据制数据lcount=fwrite(fid,A,precision)。lfread函数:用于从文件中函数:用于从文件中读二二进制数据制数据lA,count=fread(fid,size,precision)l注意:使用函数注意:使用函数fread()和和fwrite()读写文件写文件时,必必须以二以二进制方式打开文件制方式打开文件70例8-5将将5行行5列列“魔方魔方阵”存入二存入二进制文件中。制文件中。程序程序fid=fopen(my.dat,w);a=magic(5);fwrite(fid,a,long);fclose(fid);71例8-6从二从二进制文件中制文件中读取取“魔方魔方阵”。程序程序fid=fopen(my.dat,r);A,count=fread(fid,5,inf,long);fclose(fid);A72 图像、声音文件的读写图像、声音文件的读写l1imread函数:从文件中函数:从文件中读入入图像像lA=imread(filename,fmt)lA,map=imread(filename,fmt)l2image函数:函数:显示示图像像limage(A)l3imwrite函数:将函数:将图像写入文件像写入文件limwrite(A,filename,fmt)limwrite(A,map,filename,fmt)73例例8-7显示一幅真彩示一幅真彩(RGB)图像。像。程序程序x,map=imread(C:MATLAB7toolboxmatlabdemosstreet1.jpg);image(x);74 将图像写入文件程序程序x,map=imread(C:MATLAB7toolboxmatlabdemosstreet1.jpg);imwrite(x,my.bmp);%将将图像保存像保存为真彩色真彩色的的bmpx,map=imread(my.bmp);image(x);75图像、声音文件的读写图像、声音文件的读写l4imfinfo函数:函数:查询图像文件信息像文件信息linnfo imflnfo(filename)l5wavread函数:用于函数:用于读取取扩展名展名为“.wav”的声音文的声音文件件 ly=wavread(file)ly,fs,nbits=wavread(file)l6wavwrite函数:用于将数据写入到函数:用于将数据写入到扩展名展名为“wav”的声音文件中的声音文件中lwavwrite(y,fs,nbits,wavefile)l7wavplay函数:利用函数:利用windows音音频输出出设备播放声音播放声音lwavplay(y,fs)76例8-9读取一个音取一个音频数据文件,以不同数据文件,以不同频率播放,并率播放,并显示声音波形。示声音波形。程序:程序:y=wavread(C:MATLAB7toolboxsimulinksimdemossimgeneraltoilet.wav)plot(y);wavplay(y);wavplay(y,11025);wavplay(y,44100);77精品课件精品课件!78精品课件精品课件!79l下列MATLAB语句用于画出函数y(x)=2e0.2x在0,10的值。编写一个程序,计算出坐标系中用户指定两点(X1,Y1)和(X2,Y2)之间的距离.在编个程序时,注意培养好的编程习惯.这两点之间距离的计算公式为d=(x1 x2)2+(y1 y2)2
展开阅读全文