的基础知识2.ppt

上传人:本田雅阁 文档编号:2319739 上传时间:2019-03-20 格式:PPT 页数:41 大小:148.01KB
返回 下载 相关 举报
的基础知识2.ppt_第1页
第1页 / 共41页
的基础知识2.ppt_第2页
第2页 / 共41页
的基础知识2.ppt_第3页
第3页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《的基础知识2.ppt》由会员分享,可在线阅读,更多相关《的基础知识2.ppt(41页珍藏版)》请在三一文库上搜索。

1、1,控制系统仿真 -基于MATLAB语言,主讲教师:张磊 中国海洋大学 工程学院,2019/3/20,2,本节内容 本节介绍matlab语言的基础知识,主要包括: 矩阵及其操作(创建矩阵、矩阵的属性和操作) 矩阵及数组的简单运算(加减乘点运算) 多维矩阵及其操作 结构体和元胞数组的用法 字符串的创建,3,22 MATLAB的基础知识,1. 矩阵及其操作 1)矩阵的创建,MATLAB中使用方括号、逗号和分号创建,A=1 2 3 4 A=1 2 3 4 B=1; 2; 3; 4 B= 1 2 3 4,Var = Start : Step : Stop Var = linspace(Start, S

2、top, n) 产生一个有n个元素的一维向量,第一个元素是Start最后一个是Stop,n个元素为等差数列 A=1:4 A=1 2 3 4 B=1:2:4 B=1 3 C=linspace(1,4,5) C=1.0000 1.7500 2.5000 3.2500 4.0000,4,例:创建一个二维矩阵,命令: A=1 2 3;2 5 6;1 4 5 B=1:5;linspace(3,10,5);3 5 2 6 4 C=1:3 linspace(2,3,3) 3 5 6 结果: A = 1 2 3 2 5 6 1 4 5 B = 1.0000 2.0000 3.0000 4.0000 5.000

3、0 3.0000 4.7500 6.5000 8.2500 10.0000 3.0000 5.0000 2.0000 6.0000 4.0000 C = 1.0000 2.0000 3.0000 2.0000 2.5000 5.0000 3.0000 3.0000 6.0000,5,22 MATLAB的基础知识,1. 矩阵及其操作 2)矩阵的属性,矩阵大小是了解矩阵最常用的属性,是指在每一个方向上具有的元素个数。 1. Var = size(A) 将矩阵A的行列尺寸以一个行向量的形式返回给Var,Var=m n, 或a, b=size(A) 2. Length(A) 可以返回一位数组的元素个数

4、 A=1 2 3 4 5 length(A) ans=5 C=1:5;2:6 C = 1 2 3 4 5 2 3 4 5 6 size(C); length(C) ans = 2 5 ans = 5,6,1. 矩阵及其操作 3)创建特殊矩阵,0-1矩阵:矩阵元素均由0或1组成。 1. zeros(m,n) 创建一个m行n列的全0矩阵 2. ones(m,n) 创建一个m行n列的全1矩阵 3. eye(m,n) 创建单位矩阵,对角线元素为1 zeros(size(A), ones(size(A), eye(size(A),创建和A具有相同大小的特殊矩阵 A=zeros(2,2) A = 0 0

5、0 0 B=ones(2,4) B = 1 1 1 1 1 1 1 1 C=eye(size(A) C = 1 0 0 1,7,1. 矩阵及其操作 4)矩阵操作,矩阵的保存和装载:在许多实际应用中矩阵多是较庞大的,操作步骤多,经常不能在短期内完成。需要对矩阵进行保存和装载。 Save 将工作区的变量保存为.mat的二进制文件,其中filename为文件名,var是变量名 2. Load 将文件filename中保存的内容装载到工作区中,变量名分别为var1和var2 save exp1 A B C,8,1. 矩阵及其操作 4)矩阵操作 简单运算,矩阵的常规运算:矩阵间的加、减、乘、乘方运算。

6、加减法需要参与运算的矩阵必须具有相同的尺寸。 乘法要求第一数组的列等于第二数组的行。 A+B B-A A*C 矩阵的点运算:对两个尺寸相同的矩阵A和B对应元素进行乘、除或乘方运算。 A.*B A./B A.n,9,2.1 矩阵加、减(,)运算 规则: 相加、减的两矩阵必须有相同的行和列,两矩阵对应元素相加减。 允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加减操作。,2、矩阵运算, a=1 2 3;4 5 6;7 8 9; b=2 4 6;1 3 5;7 9 10; a+b ans = 3 6 9 5 8 11 14 17 19,10,2.2 矩阵的点运算 点乘,点除,点乘方(,

7、./,.,.) ab a,b两数组必须有相同的行 和列两数组相应元素相乘。 a=1 2 3;4 5 6;7 8 9; b=2 4 6;1 3 5;7 9 10; a.*b ans = 2 8 18 4 15 30 49 72 90,11,a./b=b.a a.b=b./a a./b=b.a 都是b的元素被a的对应元素除a/b a.b=b./a 都是a的元素被b的对应元素除b/a 例: a=1 2 3;b=4 5 6; c1=a.b; c2=b./a c1 = 4.0000 2.5000 2.0000 c2 = 4.0000 2.5000 2.0000, 给出a,b对应元素间的商,12,矩阵乘方

8、(.) 元素对元素的幂 例: a=1 2 3;b=4 5 6; z=a.2 z = 1.00 4.00 9.00 z=a.b z = 1.00 32.00 729.00,13,2.3矩阵乘()运算 规则: A矩阵的列数必须等于B矩阵的行数 标量可与任何矩阵相乘。 a=1 2 3;4 5 6;7 8 0;b=1;2;3;c=a*b c =14 32 23,14,a=1 2 3;4 5 6;7 8 9; b=2 4 6;1 3 5;7 9 10; a*b ans = 25 37 46 55 85 109 85 133 172 d=-1;0;2;f=pi*d f = -3.1416 0 6.2832

9、,15,inv(A) 矩阵求逆 det(A) 行列式的值 eig(A) 矩阵的特征值 diag(A) 对角矩阵 A 矩阵转置 sqrt(A) 矩阵开方,2.5 矩阵的其它运算,16,关系运算,关系运算的对象a,b可以都是矩阵,它们的大小相同,关系操作是对矩阵各对应元素的比较。返回值1表示真,0则表示假。,17,通过实例了解关系运算,a=1 6 12; 3 32 7 b =2 3 4; 6 7 8 c =gt(a,b) c = 0 1 1 0 1 0,18,2.6 矩阵的一些特殊操作,矩阵的变维 a=1:12;b=reshape(a,3,4)%将矩阵a转换为34矩阵并赋给变量b b =1 4 7

10、 10 2 5 8 11 3 6 9 12 c=zeros(3,4);c(:)=a(:)%给矩阵c赋值 c =1 4 7 10 2 5 8 11 3 6 9 12,19,2.6 矩阵的一些特殊操作,矩阵的变向 rot90:旋转; fliplr:上翻; flipud:下翻 b =1 4 7 10 2 5 8 11 3 6 9 12, flipud(b) ans = 3 6 9 12 2 5 8 11 1 4 7 10, rot90(b) ans = 10 11 12 7 8 9 4 5 6 1 2 3,20,2.6 矩阵的一些特殊操作,矩阵的抽取 diag:抽取主对角线; tril: 抽取主下三

11、角; triu:抽取主上三角 矩阵的扩展, diag(b) ans = 1 5 9, tril(b) ans = 1 0 0 0 2 5 0 0 3 6 9 0,21,矩阵的修改, 直接修改 可用键找到所要修改的矩阵,用键移动到要修改的矩阵元素上即可修改。 指令修改 可以用A(,)= 来修改。,22,例如 a=1 2 0;3 0 5;7 8 9 a =1 2 0 3 0 5 7 8 9 a(3,3)=0 a =1 2 0 3 0 5 7 8 0,可以用函数subs修改, 还可用find函数修改。,23,课堂练习,1.使用几种方法创建2个2维矩阵a,b; 2.计算a+b, a-b, ab, ab

12、, a/b 3.针对题目1.创建的a和b矩阵完成以下操作: 1)练习对矩阵a的rot90:旋转, fliplr:上翻, flipud:下翻 2)练习对数组b的diag:抽取主对角线, tril: 抽取主下三角,triu:抽取主上三角 3)保存上面2)的各项结果,24,22 MATLAB的基础知识,3. 多维矩阵及其操作,多维矩阵的创建 3.1通过指定索引把二维矩阵扩展为多维矩阵 3.2使用内联函数创建 3.3用CAT函数进行链接创建,可以将预先创建好的矩阵按照某一维度链接起来。,25,22 MATLAB的基础知识,3.1 通过指定索引把二维矩阵扩展为多维矩阵, A = 5 7 8; 0 1 9

13、; 4 3 6; A(:,:,2) = 1 0 4; 3 5 6; 9 8 7 A(:,:,1) = 5 7 8 0 1 9 4 3 6 A(:,:,2) = 1 0 4 3 5 6 9 8 7,26,3.2 使用内联函数创建,ones(d1,d2,d3.) 生成d1*d2*d3的多维全1数组 ones(size(A) 生成与数组A同样尺寸的全1数组 zeros(d1,d2,d3.) 生成d1*d2*d3的多维全0数组 zeros(size(A) 生成与数组A同样尺寸的全0数组 rand(d1,d2,d3.) 生成d1*d2*d3的多维数组,数组元素服从【0,1】均匀分布 rand(size(

14、A) 生成与数组A同样尺寸的多维数组,数组元素服从【0,1】均匀分布,27,3.2 使用内联函数创建,例:随机生成3*3的三维数组 A=rand(3,3,2) A(:,:,1) = 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214 A(:,:,2) = 0.4447 0.9218 0.4057 0.6154 0.7382 0.9355 0.7919 0.1763 0.9169,28,3.3 用CAT函数进行链接创建,例: A = cat(3, 9 2; 6 5, 7 1; 8 4); %在页面方向连接上两个新建立的二维

15、数组创建三维数组 A(:,:,1) = 9 2 6 5 A(:,:,2) = 7 1 8 4,A(:,:,1),A(:,:,2),9 2 6 5,29,22 MATLAB的基础知识,4.结构体和元胞数组,结构体和元胞数组是两种较复杂的数据类型,都可以存储多组不同类型的数据。结构体和C语言的类似,可以通过字段存储多个不同类型的数据。,PAT,Name - zhang,Billing - 127.00,test - 12 75 23 180 178 177.5 220 210 206,30,4.1结构体的创建,4.1.1直接使用赋值语句创建,pat.name = zhang; pat.billin

16、g = 127.00; pat.test = 79 75 73; 180 178 177.5; 220 210 205; pat whos,pat = name: zhang billing: 127 test: 3x3 double Name Size Bytes Class pat 1x1 468 struct array Grand total is 21 elements using 468 bytes,31,4.1.2 利用创建函数struct 语法形式为:Array=struct(field1,val1,field2,val2,),创建结构体对象,并将第n字段fieldn赋值为va

17、ln, weather(2)= struct(total,sunny,temp,18,rainfall,0.0) weather = 1x2 struct array with fields: total temp rainfall weather(1)%结构体数组的第一个元素没有赋值,因此所有字段赋值为空数组 ans = total: temp: rainfall: weather(2) ans = total: sunny temp: 18 rainfall: 0,32,获取结构体元素、数据,strArray,Name = personA,Age = 13,mat = 1 2,strArr

18、ay(1),strArray(2),strArray(3),sex = female,Name = personB,Age = 20,mat = 3 4 5 6,sex = male,Name = personC,Age = 25,mat =,sex = male,33,获取结构体元素、数据,strArray=struct(name,personA,personB,personC. ,age,13,20,25,sex,female,male,male,. mat,1 2,3 4;5 6,),%通过冒号和括号裁减产生结构体数组的子数组 newArray=strArray(1:2) newArra

19、y = 1x2 struct array with fields: name age sex mat,%通过下标索引访问结构体数组中的第一个结构体元素 strArray(1) ans = name: personA age: 13 sex: female mat: 1 2,%访问第二个结构体元素的name字段值 strArray(2).name ans = personB,34,4.2 元胞数组 与结构体类似元胞数组也可以存储不同类型、不同尺寸的数据。是对常规数组的扩展,每一个元素称为元胞,都可以存储任意类型、尺寸的数据。,Cell 1,1 1 2 3 3 4 5,Cell 1,2 zhang

20、 07/08/20 Class A,Cell 1,3 25+3i 8-16i,Cell 2,1 1.43 3.55 1.33 3.34 8.55,Cell 2,2,Cell 2,3,Test yyyy,4 3 5 6 7 8,35,元胞数组的创建 arrayName= cell(m,n) 创建包含m行n列个元胞的元胞数组 A=cell(2,2) A = A(1,1) = 1 4 3; 0 5 8; 7 2 9; A(1,2) = zhang; A(2,1) = 3+7i; A(2,2) = -pi:pi/10:pi; A A = 3x3 double zhang 3.0000+ 7.0000i

21、 1x21 double,36,元胞数组的显示 celldisp(A) 用来逐个显示元胞的具体数据内容 cellplot(A) 绘制图形显示元胞数组的结构, C(1,1)=1 2;3 4; C(1,2)=string; C(2,1)=struct(name,liuliu,age,20,sex,male); C(2,2)=struct2cell(struct(fieldA,a,fieldB,b,fieldC,c); C C = 2x2 double string 1x1 struct 3x1 cell,37, celldisp(C) C1,1 = 1 2 3 4 C2,1 = name: liu

22、liu age: 20 sex: male C1,2 =string C2,21 =a C2,22 =b C2,23 =c,cellplot(C),38,22 MATLAB的基础知识,5.字符串,通过例题来理解字符串的属性、标识和简单操作,a=This is an example. a = This is an example. size(a) ans = 1 19 a14=a(1:4) ra=a(end:-1:1) a14 = This ra = .elpmaxe na si sihT,b=Example 3.1.2-1 b = Example 3.1.2-1 ab=a(1:7), ,b,

23、. ab = This is Example 3.1.2-1.,39,S1=char(这字符串数组,由2 行组成) S1 = 这字符串数组 由2行组成 S2=str2mat(这,字符,串数组,由4 行组成) S2 = 这 字符 串数组 由4 行组成,22 MATLAB的基础知识,5.字符串,利用串操作函数创建多行串数组,str2mat: 字符串结合并转换为矩阵,char: 创建多行字符串,40,课堂练习,1.创建一个3*3的元胞数组,赋值并显示 2.利用创建函数struct,建立一个结构体数组,并用不同方法访问数据元素 3.使用内联函数创建2个2维数组 4.创建2个字符串,41,小 结 本节介绍了matlab语言的基础知识,通过学习应该掌握: 如何创建矩阵、修改矩阵 矩阵及数组运算 结构体和元胞数组的用法 字符串的创建,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1