第二章+MATLAB基本语法.ppt_第1页
第二章+MATLAB基本语法.ppt_第2页
第二章+MATLAB基本语法.ppt_第3页
第二章+MATLAB基本语法.ppt_第4页
第二章+MATLAB基本语法.ppt_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2.1 MATLAB的数据类 2.2 简单的数学运算 2.3 向量及其运算 2.4 矩阵的初等运算 2.5 关系和逻辑运算,2.1 MATLAB的数据类型,MATLAB语言不要求对所使用的变量进行事先说明,而且它也不需要指定变量的类型,系统会根据该变量被赋予的值或对该变量所进行的操作来自动确定变量的类型。对于数值型数据系统默认为双精度格式double(8个字节)。 变量名长度不超过63位,超过63位的字符系统将忽略不计。 变量名区分大小写。 变量名必须以字母开头,变量名中可以包含字母、数字或下划线,但不允许出现标点符号和中文字符。,2,3,2.1.1 字符和字符串,MATLAB 对字符串的设定

2、非常简单,只需用两个单引号()将需设定的字符串引注即可。字符包括字母、空格、汉字和其它类型。字符串显示使用disp函数。,4, str=今天,是2005年10月25日, 我们班一起去上海旅游。 str = 今天,是2005年10月25日, 我们班一起去上海旅游。 disp(str) 今天,是2005年10月25日, 我们班一起去上海旅游。 disp(str) str,2.1.2 数值类数据,A 常量 在MATLAB中有一些特定的变量,它们已经被预定义了某个特定的值,因此这些变量被称为常量。在添加新的变量的时候,不要与常量重名。,5,B 数值变量(1)整数,6,(2)浮点数,几乎在所有的情况下,

3、MATLAB的数据都是以双精度数值来表示的,这些双精度数在系统内部用二进制来表示。这是计算机通常的表示数据的方式。,7,(3)复数,数字后面加“i”或“j”表示虚数,8, a=1+2i a = 1.0000 + 2.0000i b=3-4j b = 3.0000 - 4.0000i c=3+i5 ? Undefined function or variable i5. whos Name Size Bytes Class Attributes a 1x1 16 double complex b 1x1 16 double complex,1.直接输入法 在命令窗口输入表达式后,按Enter键,

4、该就指令被执行,结果赋值与临时变量ans。,2.存储变量法 : 变量=表达式(数值) grade1=3*30 grade1 = 90,9,2.2 简单的数学运算,3*30+3*35+4*30+4*32 ans = 443, grade2=3*35 grade2 = 105, total=grade1+grade2 total = 195,如果不需要显示运算结果,在输入表达式后加一分号“;”,MATLAB返回空白提示符。 a=magic(3) a = 8 1 6 3 5 7 4 9 2 a=magic(3); ,检查单个变量的维数,一维可用lengh,二维可用size命令。 a=magic(3)

5、; m,n=size(a) m = 3 n = 3,如果想需要检查工作空间的变量及其维数,除了直接在工作空间观察外,还可在命令窗口输入who 或者whos命令。 b=你好; c=3+4j; who Your variables are: a b c whos %如想单独查看a变量,whos a Name Size Bytes Class Attributes a 3x3 72 double b 1x2 4 char c 1x1 16 double complex,检查一个变量是否已经存在,A exist 命令 exist(a) ans = 1 %返回值为1,变量存在 exist(a) ans

6、= 0 %返回值为0,变量不存在,B 直接输入变量名 c c = 3.0000 + 4.0000i %返回结果,变量存在 d ? Undefined function or variable d. %出错信息,变量不存在,如果想删除工作空间的变量,可在命令窗口输入clear clear c %清楚变量,或者恢复变量为默认值 whos Name Size Bytes Class Attributes a 3x3 72 double b 1x2 4 char 如果单独输入clear则清除全部变量或恢复默认变量的值 clear pi,数值运算符号,14,15,2.3 向量及其运算 2.3.1在命令窗

7、口中直接输入向量 向量元素用“ ”括起来,用空格或逗号生成行向量;用分号生成列向量。,a1=15;21;27;93;101; a1 a1 = 15 21 27 93 101, a2 =15 21 27 93 101; a2 = 15 21 27 93 101,可以用转置命令在行向量和列向量之间转化,注意非共轭置“.”与共轭转置”的区别。,非共轭转置,a=1 2i 3 4+5i ; a. ans = 1.0000 0 + 2.0000i 3.0000 4.0000 + 5.0000i,共轭转置, a=1 2i 3 4+5i; a ans = 1.0000 0 - 2.0000i 3.0000 4

8、.0000 - 5.0000i,16,17,2.3.2 等差、等比向量元素的生成,当向量的元素过多,此时采用直接输入法将过于繁琐。可以利用向量各元素宋之问的规律,可以使用下面几种方法来生成元素向量。,a. 冒号(起点:步长:终点), (起点:终点)时默认步长为1 vec1=10:5:60 vec1 = 10 15 20 25 30 35 40 45 50 55 60 b. linspace(起点,终点,个数) 函数 vec2=linspace (10,60,11) vec2 = 10 15 20 25 30 35 40 45 50 55 60 c. logspace函数来生成10的幂次之间的等

9、比元素向量。 vec3=logspace(0,1,5) vec3 = 1.0000 1.7783 3.1623 5.6234 10.0000,18,2.3.3 向量与常数的四则运算,a.向量与常数的加法(减法):向量中的每个元素与数的加法(减法)运算。 vec1=80:-9:10 vec1 = 80 71 62 53 44 35 26 17 vec1+101 ans = 181 172 163 154 145 136 127 118 b.向量与常数的乘法(除法):向量中的每个元素与数的乘法(除法)运算。 vec1*6 ans = 480 426 372 318 264 210 156 102,

10、19,2.3.4 向量寻址,通过对向量下标的访问来实现对向量元素的寻址。 A=rand(1,5) A = 0.9501 0.2311 0.6068 0.4860 0.8913 A(4) %第4个元素 ans = 0.4860 A(2,5) %第2,5个元素 ans = 0.2311 0.8913 A(:) %所有元素,等同于A(1,2,3,4,5) A = 0.9501 0.2311 0.6068 0.4860 0.8913,20,2.4 矩阵的初等运算,2.4.1 矩阵的生成 一般矩阵 在命令窗口中直接输入矩阵(在“ ”中同一行元素以逗号或空格隔开,不同行元素之间以分号分隔) 通过语句和函数

11、产生矩阵 在M文件中建立矩阵 从外部的数据文件中导入矩阵,21, matrix=1 ,1, 1, 1;2, 2, 2, 2;3, 3, 3, 3;4, 4, 4, 4 matrix = 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4, a=1 2 3 4 5 6 7 8 9 a = 1 2 3 4 5 6 7 8 9,22,b. 特殊矩阵的生成,全零矩阵和全幺矩阵的生成 (zeros 、ones) 随机矩阵的生成 (rand、randn ) 单位矩阵(eye) Hilbert矩阵和反Hilbert矩阵的生成 (hilb、invhilb ) 对角矩阵的生成 (diag) 范德蒙德

12、矩阵的生成 (vander) 魔方矩阵的生成 (magic) 当函数括号中只有一个正整数(n)时,表示生成nn维矩阵,括号中有两个正整数(m,n)时,表示生成mn维矩阵。,23,特殊矩阵的生成举例,matrix1=rand(2,3) %平均值为0.5,0 1之间的随机矩阵 matrix1 = 0.3050 0.0150 0.9708 0.8744 0.7680 0.9901, eye(3) ans = 1 0 0 0 1 0 0 0 1, matrix2=ones(4) matrix2 = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1, matrix2=randn(4) %平

13、均值为0,正态分布的随机矩阵 matrix2 = 0.2916 0.6966 -1.1658 2.5855 0.1978 0.8351 -1.1480 -0.6669 1.5877 -0.2437 0.1049 0.1873 -0.8045 0.2157 0.7223 -0.0825,2.4.2 矩阵分析,a = 2 9 0 0; 0 4 1 4; 7 5 5 1; 7 8 7 4 a = 2 9 0 0 0 4 1 4 7 5 5 1 7 8 7 4 det(a) %行列式的值,只对方阵有效 ans = -275 rank(a) %秩,最大无关向量数 ans = 4 rref(a) %矩阵的

14、约化 ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1,inv(a) %求逆,等同A-1 ans = -0.0727 0.4255 0.7855 -0.6218 0.1273 -0.0945 -0.1745 0.1382 0 -0.6000 -0.8000 0.8000 -0.1273 0.4945 0.3745 -0.3382 trace(a) %迹,对角元素的和 ans = 15 cond(a) %条件数,越大表示矩阵越病态 ans = 33.4763 norm(a) %范数 ans = 18.3247,25,2.4.3 矩阵的结构操作,矩阵的标识 矩阵的扩充 和

15、合并 矩阵的部分删除 矩阵的修改 矩阵结构的改变 矩阵的旋转和翻转 矩阵的提取 矩阵的分解,26,a 矩阵的标识, A=rand(2,4) A = 0.7382 0.4057 0.9169 0.8936 0.1763 0.9355 0.4103 0.0579, A(:,2) %第二列所有元素 ans = 0.4057 0.9355 A(2,2,4)%第二行第2、4元素 ans = 0.9355 0.0579, A(1,3) ans = 0.9169 A(5) ans = 0.9169,矩阵A元素排列顺序为 1 3 5 7 2 4 6 8,b 矩阵的扩充和合并, A=magic(3) A = 8

16、 1 6 3 5 7 4 9 2 A(4,2)=5 A = 8 1 6 3 5 7 4 9 2 0 5 0 空缺的部分填0补上。, a=ones(2,3); b=zeros(2,3); a,b %具有相同的行数 ans = 1 1 1 0 0 0 1 1 1 0 0 0 a;b %具有相同的列数 ans = 1 1 1 1 1 1 0 0 0 0 0 0,27,c 矩阵的部分删除,B = 1.1892 0.2877 -0.4326 -0.0376 -1.1465 -1.6656 0.3273 1.1909 0.1253 B(2,:)= %对某一行或者列赋予空矩阵 B = 1.1892 3.00

17、00 -0.4326 0.3273 1.1909 0.1253,28,d 矩阵的修改,对某一元素重新赋值 B(1,2)=3 B = 1.1892 3.0000 -0.4326 -0.0376 -1.1465 -1.6656 0.3273 1.1909 0.1253 对几个相邻元素重新赋值 B(2,1,3)=2.5,4.6 B = 1.1892 0.2877 -0.4326 2.5000 -1.1465 4.6000 0.3273 1.1909 0.1253,对某一行或者列重新赋值 B(2,:)=1 2 3 B = 1.1892 0.2877 -0.4326 1.0000 2.0000 3.00

18、00 0.3273 1.1909 0.1253 对多个元素重新赋值 B(1 3,1 3)=1 2; 3 4 B = 1.0000 0.2877 2.0000 -0.0376 -1.1465 -1.6656 3.0000 1.1909 4.0000,e 矩阵结构的改变, A=magic(2) A = 1 3 4 2 C=A(:) C = 1 4 3 2,B = 0.4120 0.2679 0.9334 0.2126 0.7446 0.4399 0.6833 0.8392 reshape(B,4,2) %元素个数不变 ans = 0.4120 0.9334 0.7446 0.6833 0.2679

19、 0.2126 0.4399 0.8392,30,31,f 矩阵的旋转和翻转,A=randn(3) A = -0.4326 0.2877 1.1892 -1.6656 -1.1465 -0.0376 0.1253 1.1909 0.3273 C=rot90(A) %逆时针旋转 C = 1.1892 -0.0376 0.3273 0.2877 -1.1465 1.1909 -0.4326 -1.6656 0.1253, =fliplr(A) %左右翻转 B = 1.1892 0.2877 -0.4326 -0.0376 -1.1465 -1.6656 0.3273 1.1909 0.1253 C

20、=flipud(A) %上下翻转 C = 0.1253 1.1909 0.3273 -1.6656 -1.1465 -0.0376 -0.4326 0.2877 1.1892,g 矩阵的提取, A=magic(3) A = 8 1 6 3 5 7 4 9 2, B=tril(A)%左下部分 B = 8 0 0 3 5 0 4 9 2, C=triu(A)%右上部分 C = 8 1 6 0 5 7 0 0 2,33,8 矩阵的分解运算,Cholesky分解(chol) 奇异值分解(svd) 舒尔分解(shur) 三角分解(lu) 正交分解(qr) 特征值分析(eig),I Cholesky分解(

21、chol),把矩阵分解为一个上三角矩阵的转置矩阵和其乘积,矩阵必须是对称正定的(行列式的值大于零)。, C=chol(A) C = 1 1 1 1 0 1 2 3 0 0 1 3 0 0 0 1 C*C ans = 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20,34, A=pascal(4) A = 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20,II奇异值分解(svd),把mn阶矩阵A分解为一个mm 阶的正交矩阵U(U*U为单位矩阵),一个 mn阶的非负对角矩阵S ,一个nn阶的正交矩阵V的乘积。, A A = 8 1 6 3 5 7 4 9 2

22、, U,S,V=svd(A) U = -0.5774 0.7071 0.4082 -0.5774 0.0000 -0.8165 -0.5774 -0.7071 0.4082 S = 15.0000 0 0 0 6.9282 0 0 0 3.4641 V = -0.5774 0.4082 0.7071 -0.5774 -0.8165 -0.0000 -0.5774 0.4082 -0.7071,35,III舒尔分解(schur),把方阵A分解为一个正交矩阵U,一个块对角矩阵S ,A=U*S*U。A的特征值由S的对角线元素给出。, U,S=schur(A) U = -0.5774 -0.8131

23、-0.0749 -0.5774 0.4714 -0.6667 -0.5774 0.3416 0.7416 S = 15.0000 0.0000 0.0000 0 4.8990 -3.4641 0 0 -4.8990,36,eig(A) ans = 15.0000 4.8990 -4.8990,37,IV三角分解(lu) 把任意矩阵分解为一个准下三角矩阵和上三角矩阵的乘积 X = 6 2 -1 2 4 0 1 4 -1 -1 -1 3, l,u=lu(X) l = 1.0000 0 0 0.3333 0.9091 0.4068 0.1667 1.0000 0 -0.1667 -0.1818 1.

24、0000 u = 6.0000 2.0000 -1.0000 0 3.6667 -0.8333 0 0 2.6818 X=l*u,38,V正交分解 把任意矩阵分解为一个正交矩阵和一个上三角矩阵的乘积。 A=17 3 4;3 1 12;4 12 8 Q,R=qr(A) Q = -0.9594 0.2294 0.1643 -0.1693 -0.0023 -0.9856 -0.2257 -0.9733 0.0411 R = -17.7200 -5.7562 -7.6749 0 -10.9939 -6.8967 0 0 -10.8412,VI 矩阵的特征值分析,求方阵的特征向量和特征值 A=magic

25、(3) A = 8 1 6 3 5 7 4 9 2 V,D=eig(A) V = -0.5774 -0.8131 -0.3416 -0.5774 0.4714 -0.4714 -0.5774 0.3416 0.8131 D = 15.0000 0 0 0 4.8990 0 0 0 -4.8990 A*V(:,1)=15*V (:,1),39,40,2.4.4 矩阵的初等运算,矩阵的四则运算 矩阵的指数和对数运算 矩阵元素的数学函数 求解线性方程组,1 矩阵的四则运算,矩阵的加减法 相同阶数矩阵A和B对应元素的加减。, c=magic(3) c = 8 1 6 3 5 7 4 9 2 a-c ?

26、 Error using = minus Matrix dimensions must agree.,a=1 2;3 4 a = 1 2 3 4,41,b.矩阵乘法,A.*B :相同维数两个矩阵对应元素的乘积:A(i,j)*B(i,j) 。,A*B:矩阵乘法(注意与点乘的区别) c2=a*b c2 = 19 22 43 50,Kron积 K = kron(X,Y) = X(1,1)*Y, X(1,2)*Y, X(1,3)*Y; X(2,1)*Y, X(2,2)*Y, X(2,3)*Y ,42,a=1 2;3 4; b=5,6;7,8; c1=a.*b c1 = 5 12 21 32,c 矩阵除

27、法,A./B =A(i,j)/B(i,j) 矩阵元素右除法。 相同维数的两个矩阵,矩阵A元素除以矩阵B对应元素。 A.B =B(i,j)/A(i,j) 矩阵元素左除法。相同维数的两个矩阵,矩阵B元素除以矩阵A对应元素。 B/A 矩阵右除法,MATLAB求线性方程组X*A=B的解。 AB 矩阵左除法,MATLAB求线性方程组A*X=B的解。,43,2. 矩阵的指数和对数运算,s=magic(2) s = 1 3 4 2 按元素运算 s.2 %每个元素求平方 ans = 1 9 16 4 按矩阵乘法运算 s2 %相当于 s*s ans = 13 9 12 16,44, expm(s) % 把函数泰

28、勒展开 1+s+sn/n! ans = 63.6830 63.5476 84.7302 84.8655 类似的矩阵运算命令:logm,sqrtm(如有重根s1,s2,取行列式为正的结果s1,即det(s1)0)。,3. 矩阵元素的数学函数,几乎所有的MATLAB函数,包括三角函数、复数函数、取整函数几乎都是针对矩阵元素的运算,除了几个特别的,即/、*、运算符和logm、expm和sqrtm三个函数。见23页表2-4。 注意“./、.*、.”与“/、*、”;以及“logm、expm、sqrtm”与“logm、expm、sqrtm”区别。,45,I 三角函数与反三角函数(默认为弧度),46, a=

29、1,2;3,4*pi/4 a = 0.7854 1.5708 2.3562 3.1416, b=sin(a) b = 0.7071 1.0000 0.7071 0.0000 c=asin(b) c = 0.7854 1.5708 0.7854 0.0000,II.复数函数, C C = 1.0000 2.0000 + 5.0000i 3.0000 + 2.0000i 4.0000 + 1.0000i,47, imag(C)%虚部 ans = 0 5 2 1 angle(C)%相角 ans = 0 1.1903 0.5880 0.2450 abs(C)%模或绝对值 ans = 1.0000 5.

30、3852 3.6056 4.1231,III. 求余函数,rem(a,b) a/b,与被除数a同号 rem(5.6,-2) ans = 1.6000,mod(a,b) a/b,与除数b同号 mod(5.6,-2) ans = -0.4000,48,IV.特殊函数,Bessel 函数: besselj, bessely, besselh, besseli, besselk 缔合勒让徳函数 : legendre 误差函数:erf, erfc, erfcx, erfinv Beta函数:beta, betainc, betaln Gamma函数:gamma, gamainc, gammaln Air

31、y函数:airy,49,V.数论函数,分解质数因子 f=factor(78) f = 2 3 13 最大公因子 g=gcd(18,27) g = 9,最小公倍数 g=lcm(2,3) g = 6 组合Cnk nchoosek(10,3) ans = 120,51,VI.坐标变换函数,笛卡尔坐标系中的点(1,1,1)变换到球坐标和柱坐标, THETA,PHI,R=cart2sph(1,1,1) THETA = 0.7854 PHI = 0.6155 R = 1.7321, THETA,THO,Z=cart2pol(1,1,1) THETA = 0.7854 THO = 1.4142 Z = 1,

32、逆变换为sph2cart,pol2cart,52,4. 求解线性方程组,标准数学中是没有矩阵除法的,MATLAB采用采用“,/”表示求解线性方程组AX=B的解,对于非方阵并引入伪逆的概念 pinv(A)=inv(A*A)*A 对于非齐次线性方程组AX=B,A是mn阶矩阵,X和B为m维列向量。 mn 为超定方程组 mn 为欠定方程组 m=n 为恰定方程组,53,54,a 超定方程组 方程数目大于未知数的数目(mn) , A不是方阵,没有逆矩阵(inv(A)或者A-1出错),方程无解,MATLAB可以寻求最小二乘法的解。,A = 0 0 0.1000 0.0100 0.2000 0.0400 0.

33、3000 0.0900 0.4000 0.1600 0.5000 0.2500 0.6000 0.3600 0.7000 0.4900 0.8000 0.6400 0.9000 0.8100 1.0000 1.0000,B = -0.0100 0.0450 0.1200 0.2000 0.3300 0.5200 0.6700 0.9500 1.2000 1.4500 1.7800,而且AB和pinv(A)*B仍然合法,55,X=AB X= 0.2420 1.5407, D=A*X D= 0 0.0396 0.1100 0.2113 0.3433 0.5062 0.6999 0.9244 1.1

34、797 1.4658 1.7827,可以看出D=AX不等于B,但X是使D和B之间偏差的平方和最小的结果。, Y=pinv(A)*B Y= 0.2420 1.5407,56,b. 欠定方程组 方程数目小于未知数的数目(mn), A不是方阵,没有逆矩阵,解不唯一。pinv(A)*B和AB各可以得到一个特解。,57,A = 3 1 4 8 4 2 6 0 4 2 1 6 B = 1 2 3,X=AB X = 0.9459 0 -0.2973 -0.0811, Y=pinv(A)*B Y = 0.6712 0.4419 -0.2615 -0.0512,58, A*X ans = 1.0000 2.00

35、00 3.0000, A*Y ans = 1.0000 2.0000 3.0000,c.恰定方程组,如果A非奇异(行列式值det(A)不为零),inv(A)*B、pinv(A)*B、AB 结果相同,给出唯一精确解。,59, A=magic(3) A = 8 1 6 3 5 7 4 9 2 B=1 2 3 B = 1 2 3, inv(A)*B ans = 0.0500 0.3000 0.0500 pinv(A)*B ans = 0.0500 0.3000 0.0500 AB ans = 0.0500 0.3000 0.0500, C=A B C = 8 1 6 1 3 5 7 2 4 9 2

36、3 rref(C) ans = 1.0000 0 0 0.0500 0 1.0000 0 0.3000 0 0 1.0000 0.0500,60,如果A奇异(行列式值det(A)为零), A是非满秩矩阵,没有逆矩阵,方程组可以约化为超定方程组或者欠定方程组。AX=B无解或者解不唯一。可以采用pinv(A)*B得到方程的最小二乘法的解或者一个特解。, det(A) ans = 0 rank(A) ans = 2, A =1 3 7 -1 4 4 1 10 18; B=3 6 0;,C=A B C = 1 3 7 3 -1 4 4 6 1 10 18 0 rref(C) ans = 1.0000 0 2.2857 0 0 1.0000 1.5714 0 0 0 0 1.0000,AX=B 方程组可以约化为超定方程组,只有最小二乘法的解。,61, X=pinv(A)*B X = -1.0892 1.2512 -0.5235 A*X ans = -1.0000 4.0000 2.0000, AB Warning: Matrix is singular to working precision. ans = NaN Inf -Inf inv(A) Warning: Matrix is singul

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论