1、MATLAB软件使用基础简介,1.1 MATLAB 软件使用入门 1.2 MATLAB变量表达式与数据格式 1.3 矩阵与数组 1.4 M文件与程序设计 1.5 MATLAB绘图 1.6数据导入导出,MATLAB是Matrix Laboratory的缩写,是一种解释式语言。简单易学、代码短小高效、计算功能强大、图形绘制和处理容易、可扩展性强。MATLAB 是一个功能强大的常用数学软件, 数值计算问题, 符号演算问题, 绘出各种函数图形。适用于Windows操作系统的MATLAB7.0版本,1.1 MATLAB 软件使用入门,1.1.1 MATLAB进入/退出 1.1.2 MATLAB 操作的注
2、意事项 1.1.3 MATLAB的帮助及演示功能,图1.1,1.1.1 MATLAB进入/退出,通过更改View菜单选项显示不同的窗口模式。 图1.2的空白区域是MATLAB 的工作区,图1.2,在此可输入和执行命令,1.1.2 MATLAB 操作的注意事项,在工作区输入MATLAB命令后, 还须按下Enter键; MATLAB 是区分字母大小写的; 一般,每输入一个命令并按下Enter键, 计算机就会显示此次输入的执行结果; (以下用表示回车或省略) 如果不想显示此次输入的结果,在输入命令的后面再加上一个分号“;”即可。,如:x= 2 + 3 x=5 x = 2 + 3 ; 不显示结果5,可
3、输入字母,但标点符号必须在英文状态下书写;不需要专门定义变量的类型,系统可以自动根据表达式的值或输入的值来确定变量的数据类型;命令行与M文件中的百分号“%”标明注释。在语句行“%”后面的语句被忽略而不被执行,在M文件中“%”后面的语句可以用Help命令打印出来。,-,1.1.3 MATLAB的帮助及演示功能,Demos提供了大量的演示文件; 在线帮助功能及 网络共享资源; .或 等,下面介绍一下通过search for 来查找sin函数,进入帮助界面以后选中search进入到如下界面并在后面的空白处输入sin点击go按钮就会看到如图1.4的结果。,1.1.3 MATLAB的帮助及演示功能,图1
4、.4,1.2 MATLAB变量表达式与数据格式,1.2.1 MATLAB变量与表达式 1.2.2 MATLAB的数据显示格式 1.2.3 MATLAB 中的常用函数,1.2.1 MATLAB变量与表达式,变量名是用一个字母打头,后面最多跟19个字母或数字来定义的。MATLAB中的变量名是区分大小写字母的。不要用MATLAB中的内部函数或命令名作为变量名。 列出当前工作空间中的变量命令为who 将内存中的当前变量以简单形式列出; whos 列出当前内存变量的名称、大小、类型等信息; clear 清除内存中的所有变量与函数。 clc 清空命令窗口的所有输入和输出,类似于清屏。,x,y,asdf,d
5、3er45,ab与 Ab表示两个不同的变量,MATLAB的运算符数学运算符:+(加号),-(减号),*(乘号), (左除) , / (右除) , (乘幂) 关系运算符:(大于), = (大于等于),= =(等于), = (不等于)逻辑运算符:&(逻辑与运算), |( 逻辑或运算), ( 逻辑非运算),MATLAB 语句的2种最常见的形式为:表达式运算后产生的结果如果为数值类型,系统自动赋值给变量ans,并显示在屏幕上。例1.1 用两种形式计算算术运算结果。 解:Matlab命令为 形式1: 56+sin(pi)+exp(3) ans = 1.5645e+004,形式1:表达式,形式2: a=5
6、6+sin(pi)+exp(3) a = 1.5645e+004 如果在表达式的后面加“;”,有a=56+sin(pi)+exp(3); 执行后不显示运算结果。,形式2:变量=表达式,1.2.2 MATLAB的数据显示格式,Format命令的格式和作用如下:Format|format short 5位定点表示 Format long 15位定点表示 Format short e 5位浮点表示 Format long e 15位浮点表示 Format short g 系统选择5位定点和5位浮点中更好的表示,Format long g 系统选择15位定点和15位浮点中更好的表示 Format ra
7、t 近似的有理数的表示 Format hex 十六进制的表示 Format bank 用元 角分(美制)定点表示 Format compact 变量之间没有空行 Format loose 变量之间有空行,Format命令的格式和作用如下:,1.2.3 MATLAB 中的常用函数,表1.1 常用的三角函数,1.3 矩阵与数组,1.3.1 MATLAB中矩阵的生成 1.3.2 MATLAB矩阵操作 1.3.3 数组创建与运算,1.3.1 MATLAB中矩阵的生成,MATLAB的基本单位是矩阵。直接输入创建矩阵整个矩阵以“”和“ ”作为首尾; 同行的元素用“,”或空格隔开; 不同行的元素用“;”或按
8、Enter键来分隔; 矩阵的元素可以为数字也可以为表达式; 如果进行的是数值计算,表达式中不可包含未知的变量。,学好的关键,例1.4 直接输入创建矩阵解:MATLAB命令为 A = 1,2,3; 4,15,60; 7,8,9 A =1 2 34 15 607 8 9,例1.5 生成3阶单位矩阵。解:Matlab命令为 eye(3) ans =1 0 00 1 00 0 1,例1.6 生成3阶元素全为1的矩阵。解:Matlab命令为 ones(3) ans =1 1 11 1 11 1 1,例1.7 生成3阶元素全为0的矩阵。解:Matlab命令为 zeros(3) ans =0 0 00 0
9、00 0 0,1:5 %步长为1的等差数列。 Ans =1 2 3 4 5,操作符“:”的说明,1.3.2 MATLAB矩阵操作,例1.7 已知矩阵 ,解:A=1 23 56;sin(3) 7 9;log(2) 6 1 A =1.0000 23.0000 56.00000.1411 7.0000 9.00000.6931 6.0000 1.0000A(2,3) %求矩阵A的第二行第三列元素。ans =9,抽取与修改矩阵A的一些元素.,A(4) %求矩阵A的第四个元素。 ans =23 A(2:4) %取矩阵A的A(2),A(3),A(4)。 ans =0.1411 0.6931 23.0000
10、A(1,:) %取矩阵A的第一行。 ans =1 23 56,A(:,3) %取矩阵A的第三列 ans =5691a=A(1,3) %把矩阵A的第一行第三列元素赋值给变量a。 a =56,矩阵的运算,1.3.3 数组创建与运算,特殊数组的创建: linspace(a,b,n) 给出区间a,b的n个等分点数据例1.12:利用如上命令给出区间0,1 的6个等分点数据.linspace(0,1,6) %给出区间0,1 的6个等分点数据ans =0 0.2000 0.4000 0.6000 0.8000 1.0000,乘法:.* ,左除:. ,右除:./ ,乘幂:,数组的运算:,除了作为1n的矩阵应遵
11、循矩阵的运算规则外,还提供了一些特殊的运算:点运算,例1.13:数组运算a=1:5 %定义数组a a =1 2 3 4 5 b=3:2:11 %定义数组b b =3 5 7 9 11,a.2 %数组a的每一个元素求平方 ans =1 4 9 16 25 a.*b %数组a的每一个元素乘以对应数组b的元素 ans =3 10 21 36 55,1.4 M文件与程序设计,1.4.1 文件的操作 1.4.2 命令文件 1.4.3 M函数文件 1.4.4 程序设计语句,表达式后面接分号,其结果仍保存在内存中,M文件名以字母开头,不要与内置函数重名,M文件有两种形式:命令文件和M函数文件。,由若干MAT
12、LAB语句或命令组成的文件,两种文件的扩展名都是.m,若程序为命令文件,则程序执行完以后,中间变量仍予以保留;,若程序为函数文件,则程序执行完以后,中间变量被全部删除。,1.4.1 文件的操作,新建M文件在命令窗口中选择File|New|M-File打开MATLAB自带的“M函数与M文件编辑器”用鼠标单击M-File ,,也可以对已经存在的M文件进行编辑、存储、修改和读取。,可在此编辑窗口编辑新M文件,图 1.5,图 1.6,图1.5,图1.6,1.4.2 命令文件,命令文件的一般形式为: .ma1.m, pp.m M文件有两种运行方式: 一是在命令窗口直接写文件名,按Enter键; 二是在编
13、辑窗口打开菜单Tools,再单击Run。 M文件保存的路径 一定要在搜索路径上,否则M文件不能运行。,例1.15 用M命令文件画出衰减振荡曲线 及其它的包络线 。t的取值范围是解:1.打开MATLAB命令窗口,单击File|New|Mfile(见图1.5)打开编辑窗口;,2.在编辑窗口逐行写下列语句; t=0:pi/50:4*pi; y0=exp(-t/3); y=exp(-t/3).*sin(3*t); plot(t,y,-r,t,y0,:b,t,-y0,:b) 3.保存M文件,并保存在搜索路径上,文件名为a1.m;4.运行M文件,在命令窗口写a1,并按Enter键,或者在编辑窗口打开菜单T
14、ools,在选择Run。,图 1.7 衰减振荡曲线与包络,1.4.3 M函数文件,M函数文件的一般形式为:function =()例1.16:设可逆方阵为A,编写同时求的M函数文件。,M函数文件可以有多个因变量和多个自变量,当有多个因变量时用括起来。,解:1.打开MATLAB命令窗口单击File|New|Mfile打开编辑窗口;2.在编辑窗口逐行写下列语句;function da,a2,inva,traa=comp4(x)%M函数文件comp4.m同时求矩阵x的四个值da=det(x) %da为矩阵x的行列式a2=x2 %a2为矩阵x的平方inva=inv(x) %inva为矩阵x的逆矩阵tr
15、aa=x %traa为矩阵x的转置3.保存M函数文件在搜索路径上,文件名为comp4.m;,4.命令窗口执行下列语句:A=1,2;5,8; %输入矩阵A。 comp4(A) %调用comp4.m函数计算矩阵A的。 da =-2 a2 =11 1845 74 inva =-4.0000 1.00002.5000 -0.5000 traa =1 52 8,练习:编写函数M文件,实现两个同阶方阵A*B以及A.*B,并调用此函数.,1.4.4 程序设计语句,for循环 for循环的语句为:for i=表达式 可执行语句1 可执行语句nend,for循环的循环体中,可多次嵌套for和其它的结构体,表达式
16、是一个向量,m:n,m:s:n, 字符串、字符串矩阵等,例1.17 利用for循环求1100的整数之和。 解: 1.建立命令文件exam117.m。%利用for循环求1100的整数之和sum=0;for i=1:100sum=sum+i; endsum 2. 执行命令文件exam117.m。exam117sum =5050,while循环 while循环的语句为: while 表达式循环体语句 end,只要表达式的值非零, 即为逻辑为“真“, 程序就继续循环;,表达式一般是由逻辑运算 和关系运算及一般的运算 组成的表达式,以判断循 环要继续进行还是停止。,只要表达式的值为零 就停止循环。,if
17、-else-end分支此分支结构有3种形式: if 表达式 执行语句end,如果表达式的值为真,就执行语句,否则执行end后面的语句。,if 表达式执行语句1else执行语句2end,功能:如果表达式的值为真,就执行语句1,否则执行语句2。,if-else-end分支,if 表达式1 执行语句1 elseif 表达式2执行语句2 else语句n end,否则判断表达式2,如果 表达式2的值为真,就执 行语句2,然后跳出if执 行语句。,如果表达式1的值为真, 就执行语句1,然后跳 出if执行语句;,否则,依此类推,一直进行下去。 如果所有的表达式的值都为假,就执行end后面的语句。,if-el
18、se-end分支,例1.20(学生练习) 编一函数计算函数值,解:1.建立M函数文件yx.m。 function y=yx(x) if x1y=x,elseif x=1 & x10 & x=30y=3*x-11 elsey=sin(x)+log(x) end 2.调用M函数文件计算 result=yx(0.2),yx(2),yx(30),yx(10*pi) result =0.2000 3.0000 79.0000 3.4473,1.5 Matlab绘图,1.5.1 plot(y) 1.5.2 plot(x,y) 1.5.3 plot(x1,y1,x2,y2,x3,y3) 1.5.4 ezpl
19、ot(F,xmin,xmax) 1.5.5 二维特殊图形 1.5.6 三维网格命令mesh,1.5.1 plot(y),功能: 画一条或多条折线图。其中y是数值向量或数值矩阵 说明: y是数值向量,直线段连接顶点(i,y(i)画出折线图; y是数值矩阵时,为矩阵的每一列画出一条折线.,例1.22 画出向量1,3,2,9,0.5折线图。解:y=1,3,2,9,0.5; plot(y) ,1.5.2 plot(x,y),功能:画一条或多条折线图。 x可以是长度为n的数值向量或是nm的数值矩阵; y 也可以是长度为n的数值向量或是nm的数值矩阵.说明: x ,y 都是长度为n的数值向量,直线段连接顶
20、点(x(i),y(i)画出一条折线图; x 是长度为n的数值向量且y是nm的数值矩阵,在同一坐标系中绘出m条不同颜色的折线图.,例1.23 画出函数 在-5 x 5的图形。解:x=-5:.1:5; %取绘图横坐标向量点xy=sin(x.2); plot(x,y),grid on %图1.9曲线y=sinx2,图1.9曲线,1.5.3 plot(x1,y1,x2,y2,x3,y3),功能:在同一图形窗口画出多条不同颜色曲线,曲线关系为 。例1.25 在同一图形窗口画出三个函数 ,y = x的图形,-2 x 2 。解:Matlab命令:x=-2:.1:2; plot(x,cos(2*x),x,x.
21、2,x,x) legend(cos(2x),x2,x) ,图1.11 例1.25的绘图结果,1.5.4 ezplot(F,xmin,xmax)功能:画出符号函数F在区间xmin,xmax内的图像 说明: F是只含有一个变量的函数。如果区间xmin,xmax缺省,默认区间为 .,解: syms t Ezplot(2/3*exp(-t/2)*cos(3/2*t),0,4*pi),图1.12 符号函数的图形,1.5.6 三维网格命令mesh函数mesh用来生成函数的网格曲面。 函数mesh 有如下三种形式:mesh(X,Y,Z) X,Y,Z是同维数的矩阵 mesh(x,y,Z) x,y是向量,而Z是
22、矩阵。等价于,mesh(Z) 若提供参数x,y,等价于mesh(x,y,Z),否则默认;x=1:n,y=1:m, 其中 .,例1.28 画出函数,在-3 x ,y 3及,在-10 x,y 10上的图形。,解: (1)建立命令文件me.m %函数 z=sin(x+siny) t1=-3:.1:3; x1,y1=meshgrid(t1); %生成格点矩阵 z1=sin(x1+sin(y1); %计算格点处的函数值,subplot(1,2,1),mesh(x1,y1,z1),title(sin(x+siny) %马鞍面z=x2-2y2 t2=-10:.3:10; x2,y2=meshgrid(t2)
23、;z2=x2.2-2*y2.2; subplot(1,2,2),mesh(x2,y2,z2),title(马鞍面),(2)执行命令文件me.mme,图1.14函数z = sin (x+sin y)与马鞍面的网格图,在图形上加格栅、图例和标注,定制坐标,图形保持,分割窗口,缩放图形,改变视角,图形处理,动 画,1、在图形上加格栅、图例和标注,(1)GRID ON: 加格栅在当前图上GRID OFF: 删除格栅,处理图形,(2) xlabel(string): 在当前图形的x轴上加图例string,ylabel(string): 在当前图形的y轴上加图例string,title(string):
24、在当前图形的顶端上加图例string,zlabel(string): 在当前图形的z轴上加图例string,例 在区间0,2*pi画sin(x)的图形,并加注图例“自变量X”、“函数Y”、“示意图”, 并加格栅.,解 x=linspace(0,2*pi,30);y=sin(x);plot(x,y)xlabel(自变量X)ylabel(函数Y)title(示意图)grid on,(3) gtext(string),命令gtext(string)用鼠标放置标注在现有的图上. 运行命令gtext(string)时,屏幕上出现当前图形,在 图形上出现一个交叉的十字,该十字随鼠标的移动移动, 当按下鼠标
25、左键时,该标注string放在当前十交叉的位 置.,例 在区间0,2*pi画sin(x),并分别标注“sin(x)”cos(x)”.,解 x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,y,x,z)gtext(sin(x);gtext(cos(x),2、定制坐标,Axis(xmin xmax ymin ymax zmin zmax),例 在区间0.005,0.01显示sin(1/x)的图形。,解 x=linspace(0.0001,0.01,1000);y=sin(1./x);plot(x,y)axis(0.005 0.01 -1 1),定制图形坐
26、标,将坐标轴返回到自动缺省值,Axis auto,3、图形保持,(1) hold onhold of,例 将y=sin(x)、z=cos(x)分别用点和线画出在同一屏幕上。,解 x=linspace(0,2*pi,30);y=sin(x);z=cos(x)plot(x,z)hold onplot(x,y),保持当前图形, 以便继续画图到当前图上,释放当前图形窗口,(2) figure(h),例 区间0,2*pi新建两个窗口分别画出y=sin(x);z=cos(x)。,解 x=linspace(0,2*pi,100);y=sin(x);z=cos(x);plot(x,y);title(sin(x
27、);pausefigure(2);plot(x,z);title(cos(x);,新建h窗口,激活图形使其可见,并把它置于其它图形之上,4、分割窗口,h=subplot(mrows,ncols,thisplot),划分整个作图区域为mrows*ncols块(逐行对块访问)并激活第thisplot块,其后的作图语句将图形画在该块上。,激活已划分为mrows*ncols块的屏幕中的第thisplot块,其后的作图语句将图形画在该块上。,命令Subplot(1,1,1)返回非分割状态。,subplot(mrows,ncols,thisplot),subplot(1,1,1),解x=linspace(
28、0,2*pi,100);y=sin(x); z=cos(x); a=sin(x).*cos(x);b=sin(x)./(cos(x)+eps)subplot(2,2,1);plot(x,y),title(sin(x)subplot(2,2,2);plot(x,z),title(cos(x)subplot(2,2,3);plot(x,a),title(sin(x)cos(x)subplot(2,2,4);plot(x,b),title(sin(x)/cos(x),例 将屏幕分割为四块,并分别画出y=sin(x),z=cos(x),a=sin(x)*cos(x),b=sin(x)/cos(x)。,
29、1.6数据的导入,一、导入文本文件 1. load函数、dlmread函数文本文件需要具备统一的行列模式,使用分隔符作为数据项间隔,这些分隔符包括空格、逗号、tab、分号或其它。数据文件可能附带标题行和行列头标签。 数值数据 对于数值数据可以直接使用load函数装载,例如my_data.txt中数据如下: 1 2 3 4 5 6 7 8 9 10 命令A = load(my_data.txt)装载该文本文件数据。,如果数值数据使用其它分隔符,可以使用dlmread读入,假设my_data.txt中数据如下: 7.2;8.5;6.2;6.6 5.4;9.2;8.1;7.2 命令A = dlmread(my_data.txt, ;)读入该数据. 2.数据向导file-import data,