《Matlab基础知识点.doc》由会员分享,可在线阅读,更多相关《Matlab基础知识点.doc(94页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、|MATLAB 讲义第一章 MATLAB 系统概述1.1 MATLAB 系统概述MATLAB(MATrix LABoratory)矩阵实验室的缩写,全部用 C 语言编写。特点:(1)以复数矩阵作为基本编程单元,矩阵运算如同其它高级语言中的语言变量操作一样方便,而且矩阵无需定义即可采用。(2)语句书写简单。(3)语句功能强大。(4)有丰富的图形功能。如 plot,plot3 语句等。(5)提供了许多面向应用问题求解的工具箱函数。目前,有 20 多个工具箱函数,如信号处理、图像处理、控制系统、系统识别、最优化、神经网络的模糊系统等。(6)易扩充。1.2 MATLAB 系统组成(1)MATLAB 语
2、言MATLAB 语言是高级的矩阵、矢量语言,具有控制流向语句、函数、数据结构、输入输出等功能。同时 MATLAB 又具有面向对象编程特色。MATLAB 语言包括运算符和特殊字符、编程语言结构、字符串、文件输入/输出、时间和日期、数据类型和结构等部分。(2)开发环境MATLAB 开发环境有一系列的工具和功能体,其中大部分具有图形用户界面,包括 MATLAB 桌面、命令窗口、命令历史窗口、帮助游览器、工作空间、文件和搜索路径等。(3)图形处理图形处理包括二维、三维数据可视化,图像处理、模拟、图形表示等图形命令。还包括低级的图形命令,供用户自由制作、控制图形特性之用。(4)数学函数库有求和、正弦、余
3、弦等基本函数到矩阵求逆、求矩阵特征值和特征矢量等。MATLAB 数学函数库可分为基本矩阵和操作、基本数学函数、特殊化数学函数、线性矩阵函数、数学分析和付里叶变换、多项式和二重函数等。(5)MATLAB 应用程序接口(API)MATLAB 程序可以和 C/C+语言及 FORTRAN 程序结合起来,可将以前编写的 C/C+、FORTRAN 语言程序移植到 MATLAB 中。1.3 MATLAB 的应用范围包括:MATLAB 的典型应用包括: 数学计算 算法开发 建模、仿真和演算 数据分析和可视化 科学与工程绘图 应用开发(包括建立图形用户界面)以矩阵为基本对象第二章 Matlab 基础2.1 MA
4、TLAB 快速入门(1)搜索路径搜索路径也被看作是 MATLAB 的路径,其包含的文件被认为在路径上。搜索路径设置存放在文件pathdef.m 中,称为当前目录,当要在 MATLAB 中打开一个文件时,就以当前目录为开始点。|当输入一变量 value 时,MATLAB 的搜索路径次序:value 是否为变量value 是否为内部函数当前目录中是否存在 value.m 文件搜索路径上是否存在 value.m 文件path 函数可以控制 MATLAB 的目录搜索路径,主要使用的格式:path 显示当前的搜索路径p=path 把当前的搜索路径存到字符变量 P 中path(newpath) 设置路径为
5、newpathpath(path,newpath) 向当前路径添加一个新目录addpath 函数向 MATLAB 的搜索目录中添加一个新目录。addpath 路径名 path(path,路径名):增加搜索路径rmpath 函数从 MATLAB 的搜索路径删除一个目录。rmpath 路径名:删除路径还可以利用菜单:File-setpath(路径浏览器)what:显示出搜索路径上的文件名what 路径名:路径名中的文件名type value:显示变量内容edit 文件名:对 m 文件进行编辑 (2)工作空间(Workspace)工作空间是一个重要而且比较抽象的概念,它是指运行 MATLAB 程序或
6、命令所生成和存储在内存中的所有变量和 MATLAB 提供的常量构成的集合。通过使用函数、运行 M 文件和装载保存的工作空间,可以向工作空间增加变量。 save 保存整个工作空间或一部分变量,使用方式:save workspace as 文件名或save 文件名 变量名 load 恢复工作空间,使用方式:load workspaceload 文件名 工作空间浏览器:File-Show Workspace 还有一组命令来管理这些变量。who,whos:显示出工作空间中的变量列表。clear 变量名:清除变量(3)MATLAB 命令窗口 输入命令和输出结果。如输入:help 函数名a=62.2 矩阵
7、、变量、运算和表达式(1)矩阵的输入A直接输入:注意:(1)行元素间用空格或逗号(, )隔开;(2)行与行之间用分号(;)或回车;(3)整个元素列表用括起。直接输入的矩阵为一全局变量,一直保存在内存中。例: a=1 2 3;4 5 6a=1 2 34 5 6a=1,2,3;4,5,6;7,8,9 a=1 2 3; 4 5 6; 7 8 9|矩阵元素:可以灵活地描述矩阵元素, 矩阵元素 ai,j 按列存放通过下标单独对元素赋值例:a(1,1)=1,a(3,2)=a(1,1) 得到a =1a =1 00 00 1即自动形成一个 3 行 2 列矩阵,对未赋值的元素充值 0。 矩阵的元素可以用任意形式
8、的表达式例:算术表达式x=-1,sqrt(5),(2+7)4x =1.0e+003 *-0.0010 0.0022 6.5610 大矩阵可以用小矩阵作为元素例:a=1 2;3 4b=a a+5;a-5 zeros(size(a)例:A=1,2,3;4,5,6A =1 2 34 5 6B=A;7,8,9B =1 2 34 5 67 8 9 可以从矩阵中抽取某些元素构成新矩阵C=A(1:2,:)C =1 2 34 5 6例:a=3,4,5;6,7,8b=+2,4*5,6c=sin(0.5*pi),sqrt(4),0d=a;b;c 复数的表示MATLAB 支持复数的运算,复数的虚部用 i 或 j 表
9、示。例:a=1+2i 或 a=1+2j 二者表示的结果一样。复数可以直接运算,例:a=3+4i;b=5+6ja+b输出:ans=8.0000+10.0000i复数运算的一些常用函数:abs 返回复数的模angle 返回复数的相角conj 返回共轭复数imag 返回复数的实部|real 返回复数的虚部B.用语句或函数产生:a=randn(5,5) 产生正态分布 5*5 的随机矩阵。C.用 M-文件或外部数据文件产生:M-文件是一个以.m 为后缀的文本文件,文件内容为一系列 MATLAB 命令,在 MATLAB 环境下键入该文件名(不包括后缀) ,文件中的全部命令会依次逐个执行;M-文件名(不包括
10、后缀)相当于一个宏命令.例如:一个名为 magik.m 的文件包含了如下的内容, (假设 magik.m 在当前目录下)A = 16.0 3.0 2.0 13.05.0 10.0 11.0 8.09.0 6.0 7.0 12.04.0 15.0 14.0 1.0 在 Matlab 环境下执行如下命令:magikAA =16 3 2 135 10 11 89 6 7 124 15 14 1 D.用矩阵编辑器创建和修改矩阵:使用 File-Show workspace(2)矩阵运算运算符 +,-,*,/(右除),(左除) 和(幂)。右除:C=A/B 即 C 满足 CB=A,当 B 可逆时,A/B=
11、AB-1 左除:C=AB 即 C 满足 AC=B,当 A 可逆时,AB=A-1B 幂 An = A*A; A 必须是方阵。例:矩阵的加减法:a=1:3;4:6;7:9b=a; c=a+b; c=a-b注:矩阵相加减必须有相同的维数。例:矩阵的点乘运算,运算时矩阵必须为方阵,且只能与数字运算。d=a*b 必须符合 m*n 与 n*l 的结构。d=a.*b 矩阵的点乘运算例:(左除):AB=inv(A)*B,其中 inv(A)表示 A 逆阵,例如求解 AX=B。A=1 0 0;0 4 0;0 0 9;B=1 2 3;0 1 0;0 1 1;X=AB/(右除): A/B=A*inv(B),例如求解
12、XA=B。X=B/A(3)变量与表达式 Matlab 的赋值语句有两种形式:其一为:=表达式;其二为:表达式,将表达式的值赋于一个自动定义的变量 ans。注:A:如果以;结尾,则不显示计算结果,否则显示计算结果。B:除保留字外,变量可以用字母开头,后跟 19 个字母或数字。变量名区分大小写,变量使用时不需要先定义,也不必定义变量的类型。 可以用 who 或 whos 来显示已定义的变量例如:whoYour variables are:A B C a ans |whosName Size Bytes ClassA 2x3 48 double arrayB 3x3 72 double arrayC
13、 2x3 48 double arraya 3x2 48 double arrayans 1x1 8 double arrayGrand total is 28 elements using 224 bytes 一些常用的变量pi 3.14159265 / 值i sqrt(-1 ) /虚数单位j same as i eps floating-point relative precision, 2.2204e-016 /容量变量realmin smallest floating-point number, 2.2251e-308 /最小浮点数realmax largest floating-po
14、int number, 1.7977e+308 /最大浮点数inf infinity (任意一个非零数除以 0) /正无穷大nan Not-a-number (0/0 或 inf-inf) /非数如:r=1/0r=inf1/rans=0(4)矩阵的其他简单运算:A: 矩阵转置inv(A):A-1sum(A):得到一个行向量,其元素为 A 的每一列的和a=1 2 3;4 5 6sum(a) sum(a)diag(A):得到一个列向量,其元素为 A 的对角元sum(diag(a)冒号(:)运算符:a:b:c:生成一个由等差数列构成的行向量 X,X(i+1)-X(i)=b例:0:pi/4:pians
15、 =0 0.7854 1.5708 2.3562 3.1416如果省略 b,则等差数列的公差为 1a=0:0.05:1x=linspace(0,1,75)a=1:4;b=1:2:7;c=b,a等比数列:logspace(0,2,11) 创建起点为 10,终点为 102,11 个元素,公比为 100.2矩阵的变换:rot90: 矩阵逆时针旋转 n*90 度。fliplr: 矩阵左右翻转。flipud: 矩阵上下翻转。稀疏矩阵的存储:sparse(A):用于把完全矩阵压缩为稀疏矩阵。A=0,1,0,0;0,3,0,4;5,0,0,0;0,0,0,7sparse(A)ans=(3,1) 5(1,2)
16、 1(2,2) 3(2,4) 4|(4,4) 7sparse(i,j,u):函数直接造成稀疏矩阵,i,j 为向量分别对应行号和列号,u 也为向量,存储非元素的值.i=1,2,2,3,4j=2,2,4,1,4u=1,3,4,5,7A=sparse(i,j,u)full 函数把稀疏矩阵还原为完全矩阵。(5)数组及其运算:数组可以看作是行向量,实质为阵列运算。是元素对元素的运算,用句号(.)来区别。数组和矩阵之间的区别在于运算规则不同,矩阵运算由线性代数规则来定义。运算符:+,-和.*, ./, .,.A.*B:A 与 B 对应的元素相乘A.B:B 的元素除以 A 的相应元素A./B: A 的元素除
17、以 B 的相应元素A.B:A 的元素为底,B 的相应元素为幂的数组如:a=1:3;4:6;7:9b=a; c=a+b; c=a-b查看下列运算的结果:a*b a.*b a/b a./b ab a.b ab(指数和底数均为矩阵,无法求解) a.b a a.2.3 基本数学函数abs(绝对值或复数模)sqrt (平方根)real(复数的实部)imag (复数的虚部)conj(复数的共轭)round (舍入为最接近的整数) /round(-0.5)=-1 round(0.4)=0fix (向 0 方向舍入为整数) /fix(0.99)=0 fix(1.01)=1floor (向负无穷大舍入为整数)
18、/floor(-0.5)=-1 floor(0.5)=0ceil (向正无穷大舍入为整数) /ceil(-0.5)=0 ceil(0.6)=1sign (符号函数)rem(x,y) (取余数函数) /得到 x/y 的余数,rem(11,4)=3sin cos tan asin atan /三角函数都是面向阵列中的元素操作,角度单位均为弦度。atan2(y,x) /-pi = atan2(y,x) = pisinh (双曲正弦) cosh tanhexp (以 e 为底的指数)log (自然对数)log10 (常用对数)bessel (贝塞尔函数)gamma (伽码函数)rat (无理数的分式有
19、理逼近)N, D = rat(x,tol), 要求:abs(x-N/D)=tol*abs(x), tol 的缺省值为 tol = 1.e-6*norm(X(:),1) 其中:norm( X ( : ),1) = max(sum(abs(X)2.4 关于矩阵的一些有用的工具产生矩阵的工具: 表示空矩阵空矩阵不包含任何元素,它的维数为 0*0;空矩阵可以在运算中传递。例:A=1,2,3;4,5,6;7,8,9A(2,:)=输出:|A=1 2 3 7 8 9空矩阵有矩阵缩维的作用。 eye:单位矩阵:对角线元素为 1。A=eye(3,3)A=1 0 00 1 00 0 1 zeros:所有的元素都是
20、 0Z = zeros(2,4)Z =0 0 0 00 0 0 0 ones:所有的元素都是 1Z= 5*ones(3,3)Z =5 5 55 5 55 5 5 rand: 矩阵元素是用均匀分布在0.0,1.0内产生的随机数 rand(n):产生一个 n 阶(0-1)的随机矩阵Z=rand(3)Z =0.1094 0.6599 0.17850.9888 0.3514 0.35730.5860 0.8495 0.5347rand(m,n): 产生一个 m*n 阶(0-1)的随机矩阵Z=rand(1,6)Z =0.5976 0.4628 0.7678 0.5902 0.3969 0.1927产生-
21、a,a之间均匀分布的随机数的公式:R=a-2*a*rand(m,n) randn:矩阵元素是用期望为 0,方差为 1 的正态分布产生的随机数Z=randn(3)Z =-0.4326 0.2877 1.1892-1.6656 -1.1465 -0.03760.1253 1.1909 0.3273产生均值为 b,方差为 q2 的正态分布随机数的公式:S=q*randn(m,n)+b 其它特殊矩阵:例:a=1 2 3;4 5 6;7 8 91diag(a) % 生成矩阵 a 的对角矩阵ans =1592compan:伴随矩阵例:u = 1 0 -7 6A = compan(u)|A =0 7 -61
22、 0 00 1 0eig(compan(u)ans = -3.00002.00001.0000即方程的根。3magic:魔方矩阵(矩阵的元素由 110 组成,行、列和对角线之和相等)例:magic(5)ans =17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 94tril(a) % 生成矩阵 a 的下三角矩阵ans =1 0 04 5 07 8 95triu(a) %生成矩阵 a 的上三角矩阵ans =1 2 30 5 60 0 9注:1.下标引用:在 Matlab 中,矩阵元素的引用可用两个下标来表示,如矩阵 A 中,第
23、 i 行第 j 列的元素用 A(i,j)引用,也可以用一个下标来表示,用单个下标表示元素并不只限于矢量。对于矩阵,由于 Matlab 的运算基本上都是对列操作的,矩阵可以认为是按列优先排列的一个长的列矢量,从而可用单下标引用。例如 2*2 的矩阵,A(1)表示第一列的第一个元素,A(2) 表示第一列的第二个元素,A(3)表示第二列的第一个元素,A(4)表示第二列的第二个元素,当矩阵的下标超出矩阵的实际元素的下标时,将给出错误信息。但是,当某个值被赋给矩阵的一个新的元素时,Matlab 会自动增加矩阵的维数大小。例如4*4 的矩阵 A,执行命令 A(4,5)=17 后,矩阵 A 将变成 4*5
24、的矩阵。在下标的表达式里使用冒号表示矩阵的一部分。例如矩阵 A(1:k,j)表示矩阵 A 的第 j 列的前 k 个元素。例如 sum(a(1:4,4),表示计算第四列的前四个元素元素的和。A(:,j)表示矩阵 A 的第 j 列的所有元素。由于有了冒号运算符,例如求矩阵 A 的第 j 列元素之和 ,表示式为 sum(A(:,j)。2如何建立多维矩阵:在科学研究与工程运算中,要建立多维矩阵,方法之一是扩展二维矩阵。例:先建立一个简单的二维矩阵:a=5 7 8;0 1 9;4 3 6为 a 矩阵扩展第三维a(:,:,2)=1 0 4;3 5 6;9 8 7方法之二,使用 cat 函数。它将现有的矩阵
25、按照指定的维数建立新的多维矩阵。B=cat(dim,A1,A2,.)例:b=cat(3,2 8;0 5,1 3;7 9)2.5 复杂的矩阵运算一些矩阵运算:|size(A): 得到矩阵的阶,得到矩阵的 n 行 m 列.rank(A): 得到矩阵的秩det(A): 行列式eig(A): 特征值和特征向量e=eig(A) 得到特征值v,d=eig(A): A*v=v*dsvd(A): 矩阵的奇异值分解u,s,v=svd(A), u,v 正交阵,s 对角阵,A=usvcond(A):得到矩阵的条件数 (最大奇异值和最小奇异值的比值)lu(A): LU 分解(A 必须是一个方阵)l,u=lu(A):
26、u 上三角阵,l:一个下三角阵和一个置换矩阵的积l,u,p=lu(A):u 上三角阵,l:下三角阵,p:置换矩阵qr(A): QR 分解q,r=qr(A):r:上三角阵,q:正交阵2.6 矩阵输出格式格式命令(数字)X=4/3 1.2345e-6;format short:以定点数形式显示,小数后面保留 4 位有效数字XX =1.3333 0.0000format short e:以浮点数形式显示,小数后面保留 4 位有效数字XX =1.3333e+000 1.2345e-006format short g:以定点数或浮点数的最佳形式显示,小数后面保留 4 位有效数字XX =1.3333 1.
27、2345e-006format long:以定点数形式显示,小数后面保留 14 位有效数字XX =1.33333333333333 0.00000123450000format long e 以浮点数形式显示,小数后面保留 14 位有效数字XX =1.333333333333333e+000 1.234500000000000e-006format long g 以定点数或浮点数的最佳形式显示,小数后面保留 14 位有效数字XX =1.33333333333333 1.2345e-006format bank 以货币方式显示XX =1.33 0.00format rat 用有理数近似表示XX
28、=4/3 1/810045format hex 用 16 进制表示XX =|3ff5555555555555 3eb4b6231abfd271format compact 以紧凑形式显示 (format loose 以松散形式显示)XX =3ff5555555555555 3eb4b6231abfd271长命令行 用“”来表示连接第三章 图形在分析问题的结果的时候,图形往往是一种很有用的工具,它可以帮助我们直观地了解结果的某些性态。Matlab 提供了很强的图形功能,能够在根据向量或矩阵给定数据来生成图形。Matlab 图形有数据可视化和图形处理两大功能,在数据的可视化部分,Matlab 可使
29、用户计算所得的数据根据其不同情况转化成相应的图形。用户可以选择直角坐标、极坐标等不同的坐标系;它可以表现出平面曲线、空间曲线,绘制直方图、向量图、柱状图及空间网状面图、空间表面图等。图形函数有 4 种:通用图形函数、二维图形函数、三维图形函数、特殊图形函数.建立一个图形的步骤:步 骤 典型代码1)准备数据 x=0:0.2:12y1=bessel(1,x);y2=bessel(2,x);y3=bessel(3,x);2)选择窗口,决定绘图位置 figure(1)subplot(2,2,1)3)调用基本绘图函数 h=plot(x,y1,x,y2,x,y3);4)设置绘图线条样式和标记 set(h,
30、LineWidth,2,LineStyle,.-;:;-.set(h,Color,r;g;b)5)设置坐标轴范围、刻度和栅格线 axis0 12 -0.5 1)grid on6)标记图形坐标轴、图形图例以及其它文字 xlable(Time)ylable(Amplitude)legend(h,First,Second,Third)title(Bessel Functions)y,ix=min(y1);text(x(ix),y,First Minrightarrow.HoizontalAlignment,right)7)打印图形 print -dps23.1 图形窗口图形窗口(Figure Window)是所有 Matlab 的图形输出的专用窗口。figure:用来打开一个绘图窗口,以供后续绘图命令输出图形。创建图形窗口的命令:figure两种格式:figurefigure(n)图形窗口的名称是按照该窗口创建的时间顺序依次命名的:Figure No.1,Figure No.2.Figure No.n,命令 figure 将创建一个名为 figure No.n+1 的新的空白图形窗口,而 figure(n)命令则若 figure No.n 窗口已存在,则成为当前窗口。h=figure(n)可得到图形窗口的句柄。