




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、四种基本数组类型:数值、字符、元胞、结构数组。,数据类型,字符串数组,基本规则:所有字符串都用单引号括起来;字符串中的每一个字符都是该字符串变量中的一个元素;字符串中的字符以ASC码形式存储,因而区分大小写。,例 String1=b; String2=This is an example!;% 英文字母、空格、数字、标点、中文字符 String3=例子char array;% 都是占一个元素位,两个字节 s1=class(String1) s1 = char s2=size(String2) s2 = 1 19 whos Name Size Bytes Class String1 1x1 2
2、char array String2 1x19 38 char array String3 1x14 28 char array s1 1x4 8 char array s2 1x2 16 double array Grand total is 26 elements using 64 bytes,1)创建串数组:“单引号对”必须在英文状态下输入。 2)串数组的大小:size指令获得串数组的大小。串中的每一个字符,包括中英文字符、空格、标点都算一个元素。 3)串数组的标识:自左向右用数字1、2、3、4标识。 4)ASCII码显示:abs和double指令可以显示串数组对应的ASCII码数值数组
3、。char指令则可以把ASCII码数值数组转换成串数组。 5)ASCII码数组的操作:可以对ASCII码数组进行数值数组的各种运算。 注意: 当字符串中包含单引号时,用连续两个单引号表示。,字符串数组的属性和标识, string = this is an example!%输入字符串string string = this is an example! s_1 = string( length(string) : -1 : 1 )%倒序排列string得到s_1 s_1 = !elpmaxe na si siht w = string =a 4.0 5 7.8 a1=int2str( a )
4、%取整数作为字符 a2=num2str( a,2 )%2位有效数字 a3=mat2str( a,2 ) %一行字符,a = 0.9576 0.8000 2.1510 4.0000 5.0000 7.8000 a1 = 1 1 2 4 5 8 a2 = 0.96 0.8 2.2 4 5 7.8 a3 = 0.96 0.8 2.2;4 5 7.8,a1/a2/a3-均为字符串,clear t = 0 : 0.01 : 10; y = exp( -2*t ) .* sin( 3*t ); y_max, i_max = max( y ); t_text = t = , num2str( t(i_max
5、) ) ; y_text = y = , num2str( y_max ) ; max_text = char( Maxium, t_text, y_text ); Title = y = exp( -2*t ) .* sin( 3*t ) ; figure plot( t,zeros( size(t) ), k ) hold on plot( t, y, b ) plot( t(i_max), y_max, r., MarkerSize, 20 ) text( t(i_max)+0.3, y_max+0.05, max_text ) title( Title ); xlabel( t ) y
6、label( y ) hold off,%清除内存变量 %时间 t 从 0 到 10 每隔 0.01 均匀采样 %对应每一个 t 求 y 值 %求最大值 y_max 及其下标 i_max %横坐标字符串 %纵坐标字符串 %三行字符来标识最大值点 %图名称字符串 %新建一个图形窗 %画一条黑色的水平线 %保持图形不被清除 %蓝色实线画曲线 y(t) %大小为 20 的红圆点标记最大值点 %在最大值点附近显示注释字符 %显示图名、横坐标名、纵坐标名 %取消图形保持,字符串的应用:作出函数图形,并标注最大值点。,y,串转换函数,字符串操作函数,元胞数组,特点: 1)元胞数组的每一个基本组成部分成为一
7、个元胞(cell),元胞在数组中以下标来进行区分。 2)元胞可以是任何类型、任意大小的数组(例如:数值数组、字符串数组、符号对象等等)。 3)一个元胞数组中各个元胞可以是不同类型的内容。 4)元胞数组的维数不受限制。 注意: 圆括号对“( )”和花括号对“ ”的不同作用。 A( 2,3 ):表示元胞数组A第 2 行第 3 列的元胞。 A 2,3 :表示元胞数组A第 2 行第 3 列的元胞中的内容。, C = char( 这是, 元胞数组 ); %两行的字符串数组 R = reshape( 1:9,3,3 ); % 3*3 的数值数组 S = sym( sin(-3*t)*exp(-t) );
8、%符号表达式 A( 1,1 ) = C ; %对元胞数组 A 进行赋值 A 2,2 = R; A 2,1 = S; %注意 和 () 的区别 A %显示元胞数组 A 的元胞 A = 2x4 char 1x1 sym 3x3 double celldisp( A ) %显示元胞数组 A 的元胞中的内容 A1,1 = 这是 元胞数组 A2,1 = sin(-3*t)*exp(-t) A1,2 = A2,2 = 1 4 7 2 5 8 3 6 9,当用圆括号来寻址时,所表示的是元胞,相应的等号右边也应该是一个元胞; 当用花括号寻址时,表示的是元胞中的内容,相应的等号右边是元胞中的内容,可以是任意类型
9、、大小的数组。,class( A(2,1) ) %元胞的类型 () ans = cell class( A2,1 ) %元胞的内容的类型 ans = sym A( 2,1 ) % A 的第2行第1列的元胞 ans = 1x1 sym A 2,1 % A 的第2行第1列的元胞中的内容 ans = sin(-3*t)*exp(-t) save exm03.mat%保存内存变量 显示元胞数组内容的指令是 celldisp。如果直接在指令窗口输入元胞数组名,则只能看到元胞内容的属性,不显示元胞的内容。单元素的元胞除外,可以显示元胞的内容。,多项式求根 n次多项式具有n个根,当然这些根可能是实根,也可能
10、含有若干对共轭复根。MATLAB提供的roots函数用于求多项式的全部根,其调用格式为: x=roots(P) 其中P为多项式的系数向量,求得的根赋给向量x,即x(1),x(2),x(n)分别代表多项式的n个根。,例 求多项式x4+8x3-10的根。 命令如下: A=1,8,0,0,-10; x=roots(A) 若已知多项式的全部根,则可以用poly函数建立起该多项式,其调用格式为: P=poly(x) 若x为具有n个元素的向量,则poly(x)建立以x为其根的多项式,且将该多项式的系数赋给向量P。,例 已知 f(x) (1) 计算f(x)=0 的全部根。 (2) 由方程f(x)=0的根构造
11、一个多项式g(x),并与f(x)进行对比。 命令如下: P=3,0,4,-5,-7.2,5; X=roots(P) %求方程f(x)=0的根 G=poly(X) %求多项式g(x),结构数组,特点: 1)基本组成部分是结构(Structure),以下标区分各个结构。 2)结构必须划分成“域”后才能使用。 3)结构不能直接存放数据,数据必须存放在结构下面的“域”中。 4)结构的域可以存放任意类型、任意大小的数组(数值数组、字符串数组、符号对象、元胞等)。 5)不同结构的同名域中可以存放不同类型的内容。 6)结构数组可以是任意维的,可以利用下标寻址。,结构体,直接创建 P(1).name=John
12、 P(1).ID=20060012 P(1).score=99 100 84 P(2).name=Lily P(2).ID=20060025 P(2).score=89,88,84 P是结构体数组,P(1)和P(2)分别是结构体元素,name,ID,score分别是字段,结构体,struct创建 S(1)=struct(name,John,Id,20060012,score,99,100,84) student = name: John Id: 20060012 score: 99 100 84 S(2)=struct(name,Lily,Id,20060025,score,89,88,84)
13、 S是结构体数组,S(1)和S(2)分别是结构体元素,name,ID,score分别是字段,获取结构体内部数据,使用”.”符号获取 X1=S(1).ID X1= 20060012 用getfield函数获取 X1=getfield(S,1,ID) X1= 20060012,结构体的操作函数,删除结构体的字段 rmfield(A,fieldname) 修改结构体的数据 setfield(A,A_index,fieldname,field_index,值) ps=setfield(S,1,name,lucy),结构数组的基本操作,已知:2输入2输出的LTI线性时不变系统的系统传递函数,利用表示该传
14、递函数的结构数组来练习结构数组的基本操作。,%1. 创建代表 2 输入 2 输出系统的传递函数的结构数组 clear num = 3,2 ; 4 1,1 ; %分子系数构成的元胞数组 den = 1,3,2,1,1,1 ; 1 2 2 1,1 0 ; %分母系数构成的元胞数组 ss = tf( num , den ); %利用控制工具箱函数产生传递函数矩阵 SST = struct( ss ) %将传递函数矩阵转换成结构数组,SST = num: 2x2 cell%元胞数组 den: 2x2 cell%元胞数组 Variable: s%字符串 lti: 1x1 lti% lti系统 FN =
15、fieldnames( SST ) %获取域名,以元胞数组的形式保存 FN = num den Variable lti class( FN ) ans = cell,输出格式,Matlab 的输出,Matlab 以双精度执行所有的运算,运算结果可以在屏幕上输出,同时赋给指定变量;若无指定变量,则系统会自动将结果赋给变量 “ans”,Matlab 中数的输出格式可以通过 format 命令指定,format 只改变变量的输出格式, 但不会影响变量的值!,各种 format 格式,可直接在命令窗内输入表达式进行计算,(二)Matlab的基本计算功能,例输入矩阵 a=2,3,4;3,5,7;8,9
16、,10; b=1 1 1; 2 2 2;3 3 3; c=a+b c = 3 4 5 5 7 9 11 12 13,Matlab带有强大的函数库,一般的数学运算都能容易的实现,MATLAB软件中部分常用函数表,以10为底的对数,例计算 和 2*cos(0.3*pi)/(1+sqrt(7) 调出上次的输入 或移动光标,将3改为4 Enter键,给出计算结果,(三)Matlab矩阵和数组的创建和修改,1. 矩阵的创建和修改 1.1直接输入矩阵的创建 规则: 矩阵元素必须用 括住 矩阵元素必须用逗号或空格分隔 在 内矩阵的行与行之间必须用分号分隔或按Enter键分割,矩阵元素可以是数字或任何matl
17、ab表达式 ,表达式不可包含未知的变量;可以是实数 ,也可以是复数,复数可用特殊函数i,j 输入。 例:1. a=1 2 3;4 5 6 2. b=2 pi/2;sqrt(3) 3+5i 3. x=9; y=pi/6; %定义x,y变量 A=3 5 sin(y) cos(y) x2 7 x/2 5 1 %产生矩阵A 说明:%为Matlab注释的开始标志,后面的文字不进行计算,矩阵元素,矩阵的修改, 直接修改 可用键找到所要修改的矩阵,用键移动到要修改的矩阵元素上即可修改。 指令修改 可以用A(,)= 来修改。,例如 a=1 2 0;3 0 5;7 8 9 a =1 2 0 3 0 5 7 8
18、9 a(3,3)=0 a =1 2 0 3 0 5 7 8 0,1.2用matlab函数创建和修改矩阵,Matlab提供了大量的函数来创建一些常用的特殊矩阵,例如对角阵、单位阵和零矩阵 例:0-1分布的随机矩阵,利用rand函数产生任意行列的随机矩阵 a=rand(5,5),例2-2 利用diag产生对角阵 diag(M)M为矩阵或向量,对于矩阵,取对角元产生一个列 向量;对于向量则产生一个对角阵, a=rand(5,5) a = 0.7027 0.7948 0.9797 0.1365 0.6614 0.5466 0.9568 0.2714 0.0118 0.2844 0.4449 0.522
19、6 0.2523 0.8939 0.4692 0.6946 0.8801 0.8757 0.1991 0.0648 0.6213 0.1730 0.7373 0.2987 0.9883, D=diag(d) %向量产生矩阵 D = 0.7027 0 0 0 0 0 0.9568 0 0 0 0 0 0.2523 0 0 0 0 0 0.1991 0 0 0 0 0 0.9883, d=diag(a) %矩阵产生列向量 d = 0.7027 0.9568 0.2523 0.1991 0.9883,Matlab中用于产生特殊矩阵的函数,zeros(m,n) mn的零矩阵,全部元素都为0 ones(
20、m,n) 全部元素都为1的mn的矩阵 rand(m,n) 随机矩阵 eye(m,n) 单位矩阵 magic(n) n维magic方阵 空阵 matlab允许输入空阵,当一项操作无结果时,返回空阵。,还有伴随矩阵、稀疏矩阵、范德蒙等矩阵的创建等等 注意:matlab严格区分大小写字母,因此a与A是两个不同的变量。 matlab函数名必须小写。,2 .矩阵标识和子矩阵,子阵的序号向量标识方式a(m,n),m,n大于等于1小于矩阵的维数; a(L1,:) 、a(:,L2)、a(L1,L2), B=magic(5) B = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22
21、10 12 19 21 3 11 18 25 2 9 B1=B(1:2,1,3,5) B1 = 17 1 15 23 7 16, B(1,3,2,4)=zeros(2) B = 17 0 1 0 15 23 5 7 14 16 4 0 13 0 22 10 12 19 21 3 11 18 25 2 9, B2=B(1,3,:) B2 = 17 24 1 8 15 4 6 13 20 22,3. 矩阵的运算,3.1. 矩阵加、减(,)运算 规则: 相加、减的两矩阵必须有相同的行和列两矩阵对应元素相加减。 允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加减操作。,3.2. 矩阵乘(
22、)运算 规则: A矩阵的列数必须等于B矩阵的行数 例a=1 2 3;4 5 6;7 8 0;b=1;2;3;c=a*b c =14 32 23 标量可与任何矩阵相乘 例 d=-1;0;2;f=pi*d f = -3.1416 0 6.2832,在matlab中矩阵除的运算有两种矩阵除运算,MATLAB用“/” 代表右除(常用除法)和“”左除运算。这两种运算的差别如下: 例如:2/5 表示0.4, 25 表示2.5; 对于矩阵, A/B 表示AB-1,即A*inv(B); BA 表示B-1A,即inv(B)*A。 矩阵除法可以看作矩阵乘法的逆运算,3.3. 矩阵除运算,例左除解方程组ax=b的解
23、 :x=ab, a=rand(5); %产生(5*5)的均匀分布随机矩阵 b=ones(5,1); %产生全为1的5元列向量 x1=inv(a)*b x1 = -0.1734 0.5573 0.0309 0.7208 0.8147 x2=ab x2 = -0.1734 0.5573 0.0309 0.7208 0.8147,a p a 自乘p次幂,方阵,1的整数,3.4 矩阵乘方 an,ap,pa,对于p的其它值,计算将涉及特征值 和特征向量,如果p是矩阵,a是标量 ap使用特征值和特征向量自乘到p次 幂;如a,p都是矩阵,ap则无意义。,a=1,2,3;4,5,6;7,8,9;a2 ans
24、=30 36 42 66 81 96 102 126 150,当一个方阵有复数特征值或负实特征值时,非整数幂是复数阵。,a0.5 ans = 0.4498 + 0.7623i 0.5526 + 0.2068i 0.6555 -0.3487i 1.0185 + 0.0842i 1.2515 + 0.0228i 1.4844 - 0.0385i 1.5873 - 0.5940i 1.9503 - 0.1611i 2.3134 + 0.2717i,inv 矩阵求逆 size 矩阵的大小(行列数) det 行列式的值 eig 矩阵的特征值 rank 矩阵的秩 矩阵转置 sqrt 矩阵开方 svd矩阵的
25、奇异值分解,3.5. 矩阵的其它运算,3.6.矩阵的一些特殊操作,矩阵的变维 a=1:12;b=reshape(a,3,4) c=zeros(3,4);c(:)=a(:) 矩阵的变向 rot90:旋转; fliplr:沿垂直轴左右翻; flipud:沿水平轴上下翻;filpdim(x,dim):沿特定轴翻转 矩阵的抽取 diag:抽取主对角线;tril: 抽取主下三角; triu:抽取主上三角,4.数组的建立和运算,数组即只有一列的矩阵,可看作行向量;所有矩阵创建和修改的方法适用于数组 1)Matlab提供了创建数组的命令(:或linspace): 例: a=0:0.2:1 a = 0 0.2
26、000 0.4000 0.6000 0.8000 1.0000 x=linspace(0,1,10) %利用linspace产生间隔起始值0,终止值1,元素数为10的数组 x = 0 0.1111 0.2222 0.3333 0.4444 0.5556 0.6667 0.7778 0.8889 1.000,数组的运算 元素对元素的算术运算,与通常意义上的由符号表示的线性代数矩阵运算不同 数组加减(.+,.-) a.+b a.- b,对应元素相加减(与矩阵加减等效),2. 数组乘除(,./,.) ab a,b两数组必须有相同的行 和列 两数组相应元素相乘。 a=1 2 3;4 5 6;7 8 9
27、; b=2 4 6;1 3 5;7 9 10; a.*b ans = 2 8 18 4 15 30 49 72 90,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,a./b=b.a a.b=b./a a./b=b.a 都是a的元素被b的对应元 素除 a.b=b./a 都是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, 给
28、出a,b对应元素间的商.,3. 数组乘方(.) 元素对元素的幂 例: 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,常用矩阵向量运算数据统计处理,求最大值和最小值,求和与求积,求平均值和标准方差、中值与相关系数,排序,(一) 求最大值和最小值,(1) y=max(X):返回向量X的最大值存入y,如果X中包含复数元素,则按模取最大值。,MATLAB提供的求数据序列的最大值和最小值的函数分别为max和min,1求向量的最大值和最小值 求一个向量X的最大值的函数有两种调用格式,分别是:,(2) y,I=ma
29、x(X):返回向量X的最大值存入y,最大值的序号存入I,如果X中包含复数元素,则按模取最大值。,求向量X的最小值的函数是min(X),用法和max(X)完全相同。,例 求向量x的最大值。 命令如下: x=-43,72,9,16,23,47; y=max(x) %求向量x中的最大值 y,l=max(x) %求向量x中的最大值及其该元素的位置 y = 72 y = 72 l = 2,2求矩阵的最大值和最小值,(2) Y,U=max(A):返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。,求矩阵A的最大值的函数有3种调用格式,分别是:,(3) max(A,dim):dim取
30、1或2。dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。,求最小值的函数是min,其用法和max完全相同。,(1) y=max(A):返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。, a=9,6,7;20,9,2;15,13,0;3,4,6 a = 9 6 7 20 9 2 15 13 0 3 4 6 y=max(a) %每列的最大值 y = 20 13 7 y,u=max(a) %每列的最大值及下标 y = 20 13 7 u = 2 3 1 max(a,2) %dim=2,每行的最大值 ans = 9 2
31、0 15 6,例 分别求34矩阵中各列和各行元素中的最大值,3两个向量或矩阵对应元素的比较,函数max和min还能对两个同型的向量或矩阵进行比较,调用格式为:,(1) U=max(A,B):A,B是两个同型的向量或矩阵,结果U是与A,B同型的向量或矩阵,U的每个元素等于A,B对应元素的较大者。,(2) U=max(A,n):n是一个标量,结果U是与A同型的向量或矩阵,U的每个元素等于A对应元素和n中的较大者。,min函数的用法和max完全相同。, a=9,6,7;20,9,2 a = 9 6 7 20 9 2 b=15,13,0;3,4,6 b = 15 13 0 3 4 6 u=max(a,
32、b) %找出同一位置的最大值 u = 15 13 7 20 9 6,例 求两个23矩阵x, y所有同一位置上的较大元素构成的新矩阵p。,(二)求和与求积,sum(X):返回向量X各元素的和。 prod(X):返回向量X各元素的乘积。 sum(A):返回一个行向量,其第i个元素是A的第i列的元素和。 prod(A):返回一个行向量,其第i个元素是A的第i列的元素乘积。 sum(A,dim):当dim为1时,该函数等同于sum(A);当dim为2 时,返回一个列向量,其第i个元素是A的第i行的各元素之和。 prod(A,dim):当dim为1时,该函数等同于prod(A);当dim为2时,返回一个
33、列向量,其第i个元素是A的第i行的各元素乘积。,数据序列求和与求积的函数是sum和prod,其使用方法类似。设X是一个向量,A是一个矩阵,函数的调用格式为:,在MATLAB中,使用cumsum和cumprod函数能方便地求得向量和矩阵元素的累加和与累乘积向量,调用格式同上,例 求矩阵A的每行元素的乘积和全部元素的乘积。 a=1,2,3;4,5,6 a = 1 2 3 4 5 6 a_s=sum(a) %每列之和 a_s = 5 7 9 a_s2=sum(a,2) %dim=2,每行之和 a_s2 = 6 15 a_p=prod(a) %每列之积 a_p = 4 10 18 a_p2=prod(a,2) %每行之积 a_p2 = 6 120,%累加和举例cumsum函数 a=1,2,3;4,5,6;3,4,5 a = 1 2 3 4 5 6 3 4 5, a_cs
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届山西省临汾市襄汾中学物理高二下期末联考试题含解析
- 冬春季节传染病防治课件
- 宣传培训的课件模板
- 北京市海淀区北京57中2025年物理高一下期末学业质量监测模拟试题含解析
- 2025版智慧城市暗股投资合作合同样本
- 2025年度高端酒店管理合同(含客房服务及餐饮管理)
- 2025版叉车装卸搬运与环保处理一体化合同
- 二零二五年度不锈钢屋顶材料供应与施工承包合同
- 2025版大型企业仓储物流外包合作合同范本
- 2025版展览展示场地租赁合同补充协议规范
- 2025年浙江金华义乌市水利工程管理有限公司招聘笔试参考题库附带答案详解
- 义务教育物理课程标准解读全文
- 2025年云南新华印刷五厂有限责任公司招聘笔试参考题库含答案解析
- 2025年浙江金华市义乌市双江湖开发集团有限公司招聘笔试参考题库附带答案详解
- DB65-T8024-2024 建筑用室外气象参数标准J17664-2024
- 霍尔果斯人才集团招聘笔试冲刺题2025
- FMEA在临床护理质量管理中的应用
- 2024年中级咖啡师技能认证考试复习题库(含答案)
- 新课标(水平三)体育与健康《篮球》大单元教学计划及配套教案(18课时)
- GB/T 44910-2024琥珀分级
- 应急文化守护万家
评论
0/150
提交评论