




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
。 MATLAB数值计算MATLAB的数学计算数值计算符号计算其中符号计算是指使用未定义的符号变量进行运算,而数值计算不允许使用未定义的变量。2.1 变量和数据2.1.1数据类型数据类型包括:数值型、字符串型、元胞型、结构型等数值型双精度型、单精度型和整数类整数类无符号类(uint8、uint16、uint32、uint64)和符号类整数(int8、int16、int32、int64)。2.1.2数据1. 数据的表达方式 可以用带小数点的形式直接表示 用科学计数法 数值的表示范围是10-30910309。以下都是合法的数据表示:-2、5.67、2.56e-56(表示2.5610-56)、4.68e204(表示4.6810204)2. 矩阵和数组的概念在MATLAB的运算中,经常要使用标量、向量、矩阵和数组,这几个名称的定义如下: 标量:是指11的矩阵,即为只含一个数的矩阵。 向量:是指1n或n1的矩阵,即只有一行或者一列的矩阵。 矩阵:是一个矩形的数组,即二维数组,其中向量和标量都是矩阵的特例,00矩阵为空矩阵()。 数组:是指n维的数组,为矩阵的延伸,其中矩阵和向量都是数组的特例。3. 复数 复数由实部和虚部组成,MATLAB用特殊变量“i”和“j”表示虚数的单位。复数运算不需要特殊处理,可以直接进行。复数可以有几种表示:z=a+b*i或z=a+b*jz=a+bi或z=a+bj(当b为标量时)z=r*exp(i*theta)l 得出一个复数的实部、虚部、幅值和相角。a=real(z) %计算实部b=imag(z) %计算虚部r=abs(z) %计算幅值theta=angle(z) %计算相角说明:复数z的实部a=r*cos();复数z的虚部b=r*sin();复数z的幅值;复数z的相角theta=arctg(b/a),以弧度为单位。 a=1-2*i a = 1.0000 - 2.0000i real(a) ans = 1 imag(a) ans = -2 abs(a) ans = 2.2361 angle(a)*180/pi %以角度为单位计算相角ans = -63.4349 2.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、/、0i或 ji=j=nargin函数的输入变量数目nargout函数的输出变量数目realmin最小的可用正实数realmax最大的可用正实数l 在MATLAB中系统将计算的结果自动赋给名为“ans”的变量。 2*pi ans = 6.2832 2.2 矩阵和数组MATLAB最基本也是最重要的功能就是进行实数或复数矩阵的运算。2.2.1矩阵输入(1) 矩阵元素应用方括号()括住;(2) 每行内的元素间用逗号或空格隔开;(3) 行与行之间用分号或回车键隔开;(4) 元素可以是数值或表达式。1. 通过显式元素列表输入矩阵 c=1 2;3 4;5 3*2 % 表示构成矩阵,分号分隔行,空格分隔元素c = 1 2 3 4 5 6 用回车键代替分号分隔行: c=1 23 45 6 1 2 3 4 5 6 2. 通过语句生成矩阵(1) 使用from:step:to方式生成向量from:tofrom:step:to说明:from、step和to分别表示开始值、步长和结束值。当step省略时则默认为step=1;当step省略或step0而fromto时为空矩阵,当step0而from1 %得出逻辑向量b b = 0 1 0 1 1 0 1 1 1 a(b) %按单下标顺序排成长列 ans = 3 5 2 4 6 9 3. 矩阵的赋值 全下标方式:a(i,j)=b,给a矩阵的部分元素赋值则b矩阵的行列数必须等于a矩阵的行列数。 clear a a(1:2,1:3)=1 1 1;1 1 1 %给第一、二行元素赋值为全1a = 1 1 1 1 1 1 单下标方式:a(s)=b,b为向量,元素个数必须等于a矩阵的元素个数。 a(5:6)=2 3 %给第5、6元素赋值a = 1 1 2 1 1 3 全元素方式:a(:)=b,给a矩阵的所有元素赋值则b矩阵的元素总数必须等于a矩阵的元素总数,但行列数不一定相等。 a=1 2;3 4;5 6 a = 1 2 3 4 5 6 b=1 2 3;4 5 6 b = 1 2 3 4 5 6 a(:)=b %按单下标方式给a赋值a = 1 5 4 3 2 6 4. 矩阵元素的删除删除操作就是简单地将其赋值为空矩阵(用表示)。a=1 2 0;3 4 0;5 6 9 a = 1 2 0 3 4 0 5 6 9 a(:,3)= %删除一列元素a = 1 2 3 4 5 6 a(1)= %删除一个元素,则矩阵变为行向量a = 3 5 2 4 6 a= %删除所有元素为空矩阵a = 5. 生成大矩阵在MATLAB中,可以通过方括号“”实现将小矩阵联接起来生成一个较大的矩阵。 a=1 2 0;3 4 0;5 6 9 a = 1 2 0 3 4 0 5 6 9 a;a %联接成63的矩阵ans = 1 2 0 3 4 0 5 6 9 1 2 0 3 4 0 5 6 9 a=1 2 0;3 4 0;5 6 9 a a %联接成36的矩阵ans = 1 2 0 1 2 0 3 4 0 3 4 0 5 6 9 5 6 9 a=1 2 0;3 4 0;5 6 9 a(1:2,1:2) 10*a(1:2,2:3) %计算并联接ans = 1 2 20 0 3 4 40 0 6. 矩阵的翻转a = 1 2 0 3 4 0 5 6 9表2.3 常用矩阵翻转函数函数名功能例子输入结果triu(X)产生X矩阵的上三角矩阵,其余元素补0。triu(a) ans = 1 2 0 0 4 0 0 0 9 tril(X)产生X矩阵的下三角矩阵,其余元素补0。tril(a) ans = 1 0 0 3 4 0 5 6 9 flipud(X)使矩阵X沿水平轴上下翻转flipud(a) ans = 5 6 9 3 4 0 1 2 0 fliplr(X)使矩阵X沿垂直轴左右翻转fliplr(a) ans = 0 2 1 0 4 3 9 6 5 flipdim(X,dim)使矩阵X沿特定轴翻转。dim=1,按行维翻转;dim=2,按列维翻转。flipdim(a,1) ans = 5 6 9 3 4 0 1 2 0 rot90(X)使矩阵X逆时针旋转900rot90(a) ans = 0 0 9 2 4 6 1 3 5 2.2.3字符串在MATLAB中,字符串是作为字符数组来引入的;一个字符串由多个字符组成,用单引号()来界定;字符串是按行向量进行存储的,每一字符(包括空格)是以其ASCII码的形式存放。clear str1=Hello str1 =Hello str2=I like MATLAB %重复单引号来输入含有单引号的字符串str2 =I like MATLAB str3=你好! %支持中文str3 =你好! 1. 字符串占用的字节 whos Name Size Bytes Class str1 1x5 10 char array str2 1x15 30 char array str3 1x3 6 char arrayGrand total is 23 elements using 46 bytes 2. 字符串函数 length:用来计算字符串的长度(即组成字符的个数)。 double:用来查看字符串的ASCII码储存内容,包括空格(ASCII码为32)。 char:用来将ASCII码转换成字符串形式。 class或ischar:用来判断某一个变量是否为字符串。class函数返回char则表示为字符串,而ischar函数返回1表示为字符串。 strcmp(x,y):比较字符串x和y的内容是否相同。返回值如果为1则相同,为0则不同。 findstr(x,x1):寻找在某个长字符串x中的子字符串x1,返回其起始位置。 deblank(x ):删除字符串尾部的空格。由于MATLAB将字符串以其相对应的ASCII码储存成一个行向量,因此如果字符串直接进行数值运算,则其结果就变成一般数值向量的运算,而不再是字符串的运算。 length(str1) %字符串长度ans = 5 x1=double(str1) %查看字符串的ASCII码x1 = 72 101 108 108 111 x2=str1+1 %字符串的数值运算x2 = 73 102 109 109 112 char(x1) %将ASCII码转换成字符串形式ans =Hello char(x2) ans =Ifmmp class(str1) %判断变量类型 ans =char class(x1) ans =double ischar(str1) ans = 1 3. 使用一个变量来储存多个字符串(1) 多个字符串组成一个新的行向量将多个字符串变量直接用“,”连接,构成一个行向量,就可以得到一个新字符串变量。clear str1=Hello; str2=I like MATLAB; str3=你好! str4=str1,! ,str2 %多个字符串并排成一个行向量str4 =Hello! I like MATLAB (2) 使用二维字符数组将每个字符串放在一行,多个字符串可以构成一个二维字符数组,但必须先在短字符串结尾补上空格符,以确保每个字符串(即每一行)的长度一样。否则MATLAB会提示出错: str5=str1;str3 ? Error using = vertcatAll rows in the bracketed expression must have the same number of columns. str5=str1;str3, %将str3添加两个空格str5 =Hello你好! (3) 使用str2mat、strvcat和char函数使用专门的str2mat、strvcat和char函数可以构造出字符串矩阵,而不必考虑每行的字符数是否相等,总是按最长的设置,不足的末尾用空格补齐。 str6=str2mat(str1,str2,str3) str6 =Hello I like MATLAB你好! str7=char(str1,str2,str3) str7 =Hello I like MATLAB你好! str8=strvcat(str1,str2) str8 =Hello I like MATLAB whos Name Size Bytes Class str1 1x5 10 char array str2 1x15 30 char array str3 1x3 6 char array str4 1x22 44 char array str5 2x5 20 char array str6 3x15 90 char array str7 3x15 90 char array str8 2x15 60 char arrayGrand total is 186 elements using 350 bytes 5. 执行字符串如果需要直接“执行”某一字符串,可以使用eval命令,效果就如同直接在MATLAB命令窗口内输入此命令。 str9=a=2*5 str9 =a=2*5 eval(str9) %执行字符串a = 10 6. 显示字符串字符串可以直接使用disp命令显示出来,即使后面加分号(;)也显示。 disp(请输入2*2的矩阵a) 请输入2*2的矩阵a disp(str1) Hello 2.2.4矩阵和数组运算矩阵运算有明确而严格的数学规则,矩阵运算规则是按照线性代数运算法则定义的;数组运算是按数组的元素逐个进行的。1. 矩阵运算的函数a = 1 2 3 4 5 6 7 8 9表2.4 常用矩阵运算函数函数名功能例子输入结果det(X)计算方阵行列式det(a) ans = 0 rank(X)求矩阵的秩,得出的行列式不为零的最大方阵边长。rank(a) ans = 2 inv(X)求矩阵的逆阵,当方阵X的det(X)不等于零,逆阵X-1才存在。X 与X-1相乘为单位矩阵。inv(a ) Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.541976e-018.ans = 1.0e+016 * -0.4504 0.9007 -0.4504 0.9007 -1.8014 0.9007 -0.4504 0.9007 -0.4504 v,d=eig(X)计算矩阵特征值和特征向量。如果方程Xv=vd存在非零解,则v为特征向量,d为特征值。v,d=eig(a) v = -0.2320 -0.7858 0.4082 -0.5253 -0.0868 -0.8165 -0.8187 0.6123 0.4082d = 16.1168 0 0 0 -1.1168 0 0 0 -0.0000 diag(X)产生X矩阵的对角阵diag(a) ans = 1 5 9 l,u=lu(X)方阵分解为一个准下三角方阵和一个上三角方阵的乘积。l为准下三角阵,必须交换两行才能成为真的下三角阵。l,u=lu(a) l = 0.1429 1.0000 0 0.5714 0.5000 1.0000 1.0000 0 0u = 7.0000 8.0000 9.0000 0 0.8571 1.7143 0 0 0.0000 q,r=qr(X)mn阶矩阵X分解为一个正交方阵q和一个与X同阶的上三角矩阵r的乘积。方阵q的边长为矩阵X的n和m中较小者,且其行列式的值为1。q,r=qr(a) q = -0.1231 0.9045 0.4082 -0.4924 0.3015 -0.8165 -0.8616 -0.3015 0.4082r = -8.1240 -9.6011 -11.0782 0 0.9045 1.8091 0 0 -0.0000 u,s,v=svd(X)mn阶矩阵X分解为三个矩阵的乘积,其中u,v为nn阶和mm阶正交方阵,s为mn阶的对角阵,对角线上的元素就是矩阵X的奇异值,其长度为n和m中的较小者。u,s,v=svd(a) u = -0.2148 0.8872 0.4082 -0.5206 0.2496 -0.8165 -0.8263 -0.3879 0.4082s = 16.8481 0 0 0 1.0684 0 0 0 0.0000v = -0.4797 -0.7767 -0.4082 -0.5724 -0.0757 0.8165 -0.6651 0.6253 -0.4082 说明:在上表中det(a)=0或det(a)虽不等于零但数值很小接近于零,则计算inv(a)时,其解的精度比较低,用条件数(求条件数的函数为cond)来表示,条件数越大,解的精度越低, MATLAB会提出警告:“条件数太大,结果可能不准确”。a=1 2 3;4 5 6;7 8 9 a = 1 2 3 4 5 6 7 8 9 inv(a) Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.541976e-018.ans = 1.0e+016 * -0.4504 0.9007 -0.4504 0.9007 -1.8014 0.9007 -0.4504 0.9007 -0.4504 2. 矩阵和数组的算术运算(1) 矩阵和数组的加、减运算l A和B矩阵必须大小相同才可以进行加减运算。l 如果A、B中有一个是标量,则该标量与矩阵的每个元素进行运算。(2) 矩阵和数组的乘法*运算l 矩阵A的列数必须等于矩阵B的行数,除非其中有一个是标量。l 数组的乘法运算符为“.*”,表示数组A和B中的对应元素相乘。A和B数组必须大小相同,除非其中有一个是标量。x1=1 2;3 4;5 6; x2=eye(3,2) x2 = 1 0 0 1 0 0 x1+x2 %矩阵相加ans = 2 2 3 5 5 6 x1.*x2 %数组相乘ans = 1 0 0 4 0 0 x1*x2 %矩阵相乘x1列数不等于x2行数? Error using = *Inner matrix dimensions must agree. x3=eye(2,3) x3 = 1 0 0 0 1 0 x1*x3 %矩阵相乘ans = 1 2 0 3 4 0 5 6 0 (3) 矩阵和数组的除法 矩阵运算符为“”和“/”分别表示左除和右除。AB=A-1*BA/B=A*B-1。其中:A-1是矩阵的逆,也可用inv(A)求逆矩阵。 数组的除法运算表达式“A.B”和“A./B”,分别为数组的左除和右除,表示数组相应元素相除。A和B数组必须大小相同,除非其中有一个是标量。【例2.12】已知方程组,用矩阵除法来解线性方程组。解:将该方程变换成AX=B的形式。其中:, A=2 -1 3;3 1 -5;4 -1 1 A = 2 -1 3 3 1 -5 4 -1 1 B=5;5;9 B = 5 5 9 X=AB X = 2 -1 0 l 在线性方程组A*X=B中,mn阶矩阵A的行数m表示方程数,列数n表示未知数的个数。l n=m,A为方阵,ABinv(A)*B。l m n,是最小二乘解,X=inv(A*A)*(A*B)l m ,则是令X中的n-m个元素为零的一个特殊解。X=inv(A*A)*(A*B)(4) 矩阵和数组的乘方 矩阵乘方的运算表达式为“AB”,其中A可以是矩阵或标量。当A为矩阵,必须为方阵:B为正整数时,表示A矩阵自乘B次;B为负整数时,表示先将矩阵A求逆,再自乘|B|次,仅对非奇异阵成立;B为矩阵时不能运算,会出错;B为非整数时,将A分解成A=W*D/W,D为对角阵,则有AB=W*DB/W。当A为标量:B为矩阵时,将A分解成A=W*D/W,D为对角阵,则有AB=W*diag(D.B)/W。 数组乘方的运算表达式“A.B”。当A为矩阵,B为标量时,则将A(i,j)自乘B次;当A为矩阵,B为矩阵时,A和B数组必须大小相同,则将A(i,j)自乘B(i,j)次;当A为标量,B为矩阵时,将A B(i,j)构成新矩阵的第i行第j列元素。【例2.13】矩阵和数组的除法和乘方运算。 x1=1 2;3 4; x2=eye(2) x2 = 1 0 0 1 x1/x2 %矩阵右除ans = 1 2 3 4 inv(x1) %求逆矩阵ans = -2.0000 1.0000 1.5000 -0.5000 x1x2 %矩阵左除ans = -2.0000 1.0000 1.5000 -0.5000 x1./x2 %数组右除Warning: Divide by zero.(Type warning off MATLAB:divideByZero to suppress this warning.)ans = 1 Inf Inf 4 x1.x2 %数组左除ans = 1.0000 0 0 0.2500 x12 %矩阵乘方ans = 7 10 15 22 x1-1 %矩阵乘方,指数为-1与inv相同ans = -2.0000 1.0000 1.5000 -0.5000 x10.2 %矩阵乘方,指数为小数ans = 0.8397 + 0.3672i 0.2562 - 0.1679i 0.3842 - 0.2519i 1.2239 + 0.1152i 2x1 %标量乘方ans = 10.4827 14.1519 21.2278 31.7106 2.x1 %数组乘方ans = 2 4 8 16 x1.x2 %数组乘方ans = 1 1 1 4 3. 矩阵和数组的转置 矩阵的转置运算“A”表示矩阵A的转置,如果矩阵A为复数矩阵,则为共轭转置。 数组的转置运算“A.”表示数组A的转置,如果数组A为复数数组,则不是共轭转置。【例2.14】矩阵和数组转置运算。 x1=1 2;3 4; x2=eye(2); x3=x1+x2*i x3 = 1.0000 + 1.0000i 2.0000 3.0000 4.0000 + 1.0000i x3 %矩阵转置ans = 1.0000 - 1.0000i 3.0000 2.0000 4.0000 - 1.0000i x3. %数组转置为共轭转置ans = 1.0000 + 1.0000i 3.0000 2.0000 4.0000 + 1.0000i 4. 矩阵和数组的数学函数MATLAB中数学函数对数组的每个元素进行运算。数组的基本函数如表2.5所示。表2.5 基本函数函数名含义函数名含义abs绝对值或者复数模rat有理数近似sqrt平方根mod模除求余real实部round4舍5入到整数imag虚部fix向最接近0取整conj复数共轭floor向最接近-取整sin正弦ceil向最接近-取整cos余弦sign符号函数tan正切rem求余数留数asin反正弦exp自然指数acos反余弦log自然对数atan反正切log10以10为底的对数atan2第四象限反正切pow22的幂sinh双曲正弦bessel贝赛尔函数cosh双曲余弦gamma伽吗函数tanh双曲正切【例2.15】使用数组的算术运算函数。 t=linspace(0,2*pi,6) t = 0 1.2566 2.5133 3.7699 5.0265 6.2832 y=sin(t) %计算正弦y = 0 0.9511 0.5878 -0.5878 -0.9511 -0.0000 y1=abs(y) %计算绝对值,将正弦曲线变成全波整流y1 = 0 0.9511 0.5878 0.5878 0.9511 0.0000 1-exp(-t).*y %计算按指数衰减的正弦曲线ans = 1.0000 0.7293 0.9524 1.0136 1.0062 1.0000 S为标量,A、B为矩阵。表2.6 矩阵和数组运算对比表数组运算矩阵运算命令含义命令含义A+B对应元素相加A+B与数组运算相同A-B对应元素相减A-B与数组运算相同S.*B标量S分别与B元素的积S*B与数组运算相同A.*B数组对应元素相乘A*B内维相同矩阵的乘积S./BS分别被B的元素左除SBB矩阵分别左除SA./BA的元素被B的对应元素除A/B矩阵A右除B即A的逆阵与B相乘B.A结果一定与上行相同BAA左除B(一般与上行不同)A.SA的每个元素自乘S次ASA矩阵为方阵时,自乘S次A.SS为小数时,对A各元素分别求非整数幂,得出矩阵ASS为小数时,方阵A的非整数乘方S.B分别以B的元素为指数求幂值SBB为方阵时,标量S的矩阵乘方A.非共轭转置,相当于conj(A)A共轭转置exp(A)以自然数e为底,分别以A的元素为指数求幂expm(A)A的矩阵指数函数log(A)对A的各元素求对数logm(A)A的矩阵对数函数sqrt(A)对A的各元素求平方根sqrtm(A)A的矩阵平方根函数f(A)求A各个元素
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电力驿站文旅客服经理竞聘面试常见问题及高频答案
- 机电安装施工课件
- 课件Flash步骤教学课件
- 2025年政府会计准则制度考试备考手册及答案
- 2025年基金会筹资笔试高频解析题库
- 2025年房地产估价师专业技能考核试题及答案解析
- 2025年电子商务经理资格认证考试试题及答案解析
- 诸葛亮《出师表》课件
- 2025年传播总监慈善考试预测
- 2025年财务管理笔试模拟题及答案
- 2025云南昆明巫家坝建设发展有限责任公司招聘23人笔试备考题库及答案解析
- 2024年山东省节能与双碳促进中心招聘真题
- 热电厂锅炉安全知识培训课件
- 2025年汽车驾驶员技师资格证书考试及考试题库含答案
- 化工防护用品知识培训课件
- 高二奋发+勇攀高峰+课件-2025-2026学年高二上学期开学第一课主题班会
- 中资企业在非洲的安全风险应对策略与启示
- 2025年高考(陕西、山西、青海、宁夏卷)历史真题及答案
- 役前训练考试试题及答案
- 危急值报告制度及流程图
- T∕CVIA 41-2014 液晶电视屏主流尺寸规范
评论
0/150
提交评论