控制工程基础教案实验1MATLAB数值计算

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

MATLAB数值计算MATLAB的数学计算=数值计算+符号计算其中符号计算是指使用未定义的符号变量进行运算,而数值计算不允许使用未定义的变量。2.1变量和数据2.1.1数据类型数据类型包括:数值型、字符串型、元胞型、结构型等数值型=双精度型、单精度型和整数类整数类=无符号类(uint8、uint16、uint32、uint64)和符号类整数(int8、int16、int32、int64)。2.1.2数据1.数据的表达方式可以用带小数点的形式直接表示用科学计数法数值的表示范围是10-309~10309。以下都是合法的数据表示:-2、5.67、2.56e-56(表示2.56×10-56)、4.68e204(表示4.68×10204)2.矩阵和数组的概念在MATLAB的运算中,经常要使用标量、向量、矩阵和数组,这几个名称的定义如下:标量:是指1×1的矩阵,即为只含一个数的矩阵。向量:是指1×n或n×1的矩阵,即只有一行或者一列的矩阵。矩阵:是一个矩形的数组,即二维数组,其中向量和标量都是矩阵的特例,0×0矩阵为空矩阵([])。数组:是指n维的数组,为矩阵的延伸,其中矩阵和向量都是数组的特例。3.复数复数由实部和虚部组成,MATLAB用特殊变量“i”和“j”表示虚数的单位。复数运算不需要特殊处理,可以直接进行。复数可以有几种表示:z=a+b*i或z=a+b*jz=a+bi或z=a+bj(当b为标量时)z=r*exp(i*theta)得出一个复数的实部、虚部、幅值和相角。a=real(z)%计算实部b=imag(z)%计算虚部r=abs(z)%计算幅值theta=angle(z)%计算相角说明:复数z的实部a=r*cos(θ);复数z的虚部b=r*sin(θ);复数z的幅值22bar;复数z的相角theta=arctg(b/a),以弧度为单位。a=1-2*ia=1.0000-2.0000ireal(a)ans=1imag(a)ans=-2abs(a)ans=2.2361angle(a)*180/pi%以角度为单位计算相角ans=-63.43492.1.3变量1.变量的命名规则变量名区分字母的大小写。例如,“a”和“A”是不同的变量。变量名不能超过63个字符,第63个字符后的字符被忽略,对于MATLAB6.5版以前的变量名不能超过31个字符。变量名必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和标点符号(如,。%等)。例如,“6ABC”、“AB%C”都是不合法的变量名。关键字(如if、while等)不能作为变量名。2.特殊变量MATLAB有一些自己的特殊变量,当MATLAB启动时驻留在内存。表2.1特殊变量表特殊变量取值ans运算结果的默认变量名pi圆周率πeps计算机的最小数flops浮点运算数inf无穷大,如1/0NaN或nan非数,如0/0、∞/∞、0×∞i或ji=j=nargin函数的输入变量数目nargout函数的输出变量数目realmin最小的可用正实数realmax最大的可用正实数在MATLAB中系统将计算的结果自动赋给名为“ans”的变量。2*pians=6.28322.2矩阵和数组MATLAB最基本也是最重要的功能就是进行实数或复数矩阵的运算。2.2.1矩阵输入(1)矩阵元素应用方括号([])括住;(2)每行内的元素间用逗号或空格隔开;(3)行与行之间用分号或回车键隔开;(4)元素可以是数值或表达式。1.通过显式元素列表输入矩阵c=[12;34;53*2]%[]表示构成矩阵,分号分隔行,空格分隔元素c=123456用回车键代替分号分隔行:c=[123456]1234562.通过语句生成矩阵(1)使用from:step:to方式生成向量from:tofrom:step:to说明:from、step和to分别表示开始值、步长和结束值。当step省略时则默认为step=1;当step省略或step0而fromto时为空矩阵,当step0而fromto时也为空矩阵。【例2.1】使用“from:step:to”方式生成以下矩阵。x1=2:5x1=2345x2=2:0.5:4x2=2.00002.50003.00003.50004.0000x3=5:-1:2x3=5432x4=2:-1:3%空矩阵x4=Emptymatrix:1-by-0x5=2:-1:0.5x5=21x6=[1:2:5;1:3:7]%两行向量构成矩阵x6=135147(2)使用linspace和logspace函数生成向量linspace(a,b,n)说明:a、b、n三个参数分别表示开始值、结束值和元素个数。生成从a到b之间线性分布的n个元素的行向量,n如果省略则默认值为100。logspace用来生成对数等分向量,它和linspace一样直接给出元素的个数而得出各个元素的值。logspace(a,b,n)说明:a、b、n三个参数分别表示开始值、结束值和数据个数,n如果省略则默认值为50。生成从10a到10b之间按对数等分的n个元素的行向量。【例2.2】用linspace和logspace函数生成行向量。x1=linspace(0,2*pi,5)%从0到2*pi等分成5个点x1=01.57083.14164.71246.2832x2=logspace(0,2,3)%从1到100对数等分成3个点x2=1101003.由矩阵生成函数产生特殊矩阵MATLAB提供了很多能够产生特殊矩阵的函数,各函数的功能如表2.2所示。表2.2矩阵生成函数函数名功能例子输入结果zeros(m,n)产生m×n的全0矩阵zeros(2,3)ans=000000ones(m,n)产生m×n的全1矩阵ones(2,3)ans=111111rand(m,n)产生均匀分布的随机矩阵,元素取值范围0.0~1.0。rand(2,3)ans=0.95010.60680.89130.23110.48600.7621randn(m,n)产生正态分布的随机矩阵randn(2,3)ans=-0.43260.1253-1.1465-1.66560.28771.1909magic(N)产生N阶魔方矩阵(矩阵的行、列和对角线上元素的和相等)magic(3)ans=816357492eye(m,n)产生m×n的单位矩阵eye(3)ans=100010001注意:zeros、ones、rand、randn和eye函数当只有一个参数n时,则为n×n的方阵;当eye(m,n)函数的m和n参数不相等时则单位矩阵会出现全0行或列。【例2.3】查看eye函数的功能。X1=eye(2,3)X1=100010X2=eye(3,2)X2=1001004.通过MAT数据文件加载矩阵通过“load”命令或选择菜单“File”→“ImportData”命令加载MAT数据文件来创建矩阵。5.在M文件中创建矩阵M文件实际上是一种包含MATLAB代码的文本文件;通过在MATLAB命令窗口中运行M文件创建矩阵。2.2.2矩阵元素和操作矩阵和多维数组都是由多个元素组成的,每个元素通过下标来标识。1.矩阵的下标(1)全下标方式矩阵中的元素可以用全下标方式标识,即由行下标和列下标表示,一个m×n的a矩阵的第i行第j列的元素表示为a(i,j)。注意:如果在提取矩阵元素值时,矩阵元素的下标行或列(i,j)大于矩阵的大小(m,n),则MATLAB会提示出错;而在给矩阵元素赋值时,如果行或列(i,j)超出矩阵的大小(m,n),则MATLAB自动扩充矩阵,扩充部分以0填充。a=[12;34;56]a=123456a(3,3)%提取a(3,3)的值???Indexexceedsmatrixdimensions.a(3,3)=9%给a(3,3)赋值a=120340569(2)单下标方式先把矩阵的所有列按先左后右的次序连接成“一维长列”,然后对元素位置进行编号。以m×n的矩阵a为例,若元素a(i,j)则对应的“单下标”为s=(i-1)×m+j。2.子矩阵块的产生子矩阵是从对应矩阵中取出一部分元素构成,用全下标和单下标方式取子矩阵。(1)用全下标方式矩阵a为图2.2所示,则:取行数为1、3,列数为2、3的元素构成子矩阵。a([13],[23])ans=2069取行数为1~3,列数为2~3的元素构成子矩阵,“1:3”表示1、2、3行下标。a(1:3,2:3)ans=204069取所有行数即为1~3,列数为3的元素构成子矩阵,“:”表示所有行或列。a(:,3)ans=009取行数为1~3,列数为3的元素构成子矩阵,用“end”表示某一维数中的最大值,即3。a(1:3,end)ans=009(2)用单下标方式取单下标为1、3、2、6的元素构成子矩阵。a([13;26])ans=1536(3)逻辑矩阵子矩阵也可以利用逻辑矩阵来标识;逻辑矩阵是大小和对应矩阵相同,而元素值为0或者1的矩阵。可以用a(L1,L2)来表示子矩阵,其中L1、L2为逻辑向量,当L1、L2的元素为0则不取该位置元素,反之则取该位置的元素。【例2.5】利用逻辑矩阵来提取矩阵,其中矩阵a如上图2.2所示。l1=logical([101])%给出逻辑向量l1l1=101l2=logical([110])%给出逻辑向量l2l2=110a(l1,l2)%取出1、3行且1、2列的元素ans=1256【例2.5续】逻辑矩阵可以由矩阵进行逻辑运算得出。b=a1%得出逻辑向量bb=010110111a(b)%按单下标顺序排成长列ans=3524693.矩阵的赋值全下标方式:a(i,j)=b,给a矩阵的部分元素赋值则b矩阵的行列数必须等于a矩阵的行列数。clearaa(1:2,1:3)=[111;111]%给第一、二行元素赋值为全1a=111111单下标方式:a(s)=b,b为向量,元素个数必须等于a矩阵的元素个数。a(5:6)=[23]%给第5、6元素赋值a=112113全元素方式:a(:)=b,给a矩阵的所有元素赋值则b矩阵的元素总数必须等于a矩阵的元素总数,但行列数不一定相等。a=[12;34;56]a=123456b=[123;456]b=123456a(:)=b%按单下标方式给a赋值a=1543264.矩阵元素的删除删除操作就是简单地将其赋值为空矩阵(用[]表示)。a=[120;340;569]a=120340569a(:,3)=[]%删除一列元素a=123456a(1)=[]%删除一个元素,则矩阵变为行向量a=35246a=[]%删除所有元素为空矩阵a=[]5.生成大矩阵在MATLAB中,可以通过方括号“[]”实现将小矩阵联接起来生成一个较大的矩阵。a=[120;340;569]a=120340569[a;a]%联接成6×3的矩阵ans=120340569120340569a=[120;340;569][aa]%联接成3×6的矩阵ans=120120340340569569a=[120;340;569][a(1:2,1:2)10*a(1:2,2:3)]%计算并联接ans=12200344006.矩阵的翻转a=120340569表2.3常用矩阵翻转函数函数名功能例子输入结果triu(X)产生X矩阵的上三triu(a)ans=角矩阵,其余元素补0。120040009tril(X)产生X矩阵的下三角矩阵,其余元素补0。tril(a)ans=100340569flipud(X)使矩阵X沿水平轴上下翻转flipud(a)ans=569340120fliplr(X)使矩阵X沿垂直轴左右翻转fliplr(a)ans=021043965flipdim(X,dim)使矩阵X沿特定轴翻转。dim=1,按行维翻转;dim=2,按列维翻转。flipdim(a,1)ans=569340120rot90(X)使矩阵X逆时针旋转900rot90(a)ans=0092461352.2.3字符串在MATLAB中,字符串是作为字符数组来引入的;一个字符

1 / 47
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功