




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1金融数值计算与应用软件 -MATLAB王王 辉辉 中央财经大学金融学院中央财经大学金融学院E-mail :Tel:136992212662第第2章章 MATLAB数值计算数值计算32.1 矩阵及向量运算矩阵及向量运算2.1.1 向量的建立及运算向量的建立及运算n向量的生成:向量的生成:(1 1)直接输入:如)直接输入:如a=1,2,5,3a=1,2,5,3(2 2)利用冒号表达式生成,如)利用冒号表达式生成,如b=2:2:10b=2:2:10(3 3)线性等份向量生成)线性等份向量生成 y=linspace(x1,x2,n),y=linspace(x1,x2,n),生成生成n n维向量,使维
2、向量,使 得得y(1)=x1,y(n)=x2y(1)=x1,y(n)=x2。n列向量列向量4向量的基本运算向量的基本运算(1)向量的加减:用向量的加减:用+ +、- -。同维向量才可以加、。同维向量才可以加、减。相应元素加减。向量与数可以加、减。用减。相应元素加减。向量与数可以加、减。用+ +、- -。数与向量的每个元素进行作用。数与向量的每个元素进行作用。(2)向量与数向量与数可以相乘(乘方),可以相乘(乘方),用用* *;向量与;向量与数可以相除,数可以相除,向量向量/ /数数,数数././向量向量。(3)两个向量点乘(点除),必须是同维向量两个向量点乘(点除),必须是同维向量。(4)向量
3、向量内积用内积用dot(a,b)dot(a,b)。5向量的基本运算的例子向量的基本运算的例子例例2.1.1 2.1.1 向量的生成向量的生成x=1 2 3 4;x=1 2 3 4;y=0:1:15;y=0:1:15;z=linspace(1,100,6)z=linspace(1,100,6)例例2.1.2 2.1.2 向量的运算向量的运算x = 1 3 5 2; y = 2x = 1 3 5 2; y = 2* *x+1; x+1; z=x+y;w1=x./y;w2=x.z=x+y;w1=x./y;w2=x.* *y;w3=dot(x,y)y;w3=dot(x,y)6向量的基本运算的例子向量的
4、基本运算的例子例例.3:下表是邯郸钢铁、:下表是邯郸钢铁、STST东北高速、恒瑞东北高速、恒瑞医药和深达声医药和深达声20072007年年9 9月月1313日的收盘价及成交日的收盘价及成交量,计算其各自的成交金额及总成交额量,计算其各自的成交金额及总成交额。项目项目邯郸钢铁邯郸钢铁STST东北东北高速高速恒瑞医药恒瑞医药 深达声深达声收盘价收盘价/ /元元 8.566.5142.137.99成交量成交量/ /股股 863847009580900 91900027229007例例.3Price=8.56,6.51,42.13,7.99;Volume=8638470
5、0, 9580900, 919000, 2722900;Total1=Price.*VolumeTotal2=dot(Price, Volume)8向量编址向量编址n向量元素用下标访问,向量元素用下标访问,如如x(1)x(1)表示向量表示向量x x的第的第一个元素一个元素n向量元素可以成块访问向量元素可以成块访问, ,如如x(1 3)x(1 3)例例 2.1.4 2.1.4 令向量令向量 x =(0.9501 0.2311 0.6068 x =(0.9501 0.2311 0.6068 0.4860 0.8913)0.4860 0.8913) (1)(1)寻访数组寻访数组x x的第三个元素的第
6、三个元素 (2)(2)寻访数组寻访数组x x的第一、二、五个元素组成的子数组的第一、二、五个元素组成的子数组 (3)(3)寻访前三个元素组成的子数组寻访前三个元素组成的子数组 (更多内容参见讲义)(更多内容参见讲义)9n查找满足一定条件的向量元素查找满足一定条件的向量元素例例 2.1.4 2.1.4 (续)(续) 求由大于由大于0.50.5的元素构成的子数组的元素构成的子数组 x(find(x0.5)x(find(x0.5) n可以随意更改、增加或删除向量的元素可以随意更改、增加或删除向量的元素例例 2.1.4 2.1.4 (续)(续)把上例中把上例中x x的第三个元素重新赋值为的第三个元素重
7、新赋值为0 0 ;将;将x x的第的第1 1、4 4个元素都赋值为个元素都赋值为1 1;删除;删除x x的第的第2 2个元素个元素x(3) = 0 ;x(1 4)=1 1 ;x(2)= ;n不论是行向量或列向量,我们均可用相同的不论是行向量或列向量,我们均可用相同的函数找出其元素个数、最大值、最小值函数找出其元素个数、最大值、最小值10适用于向量的常用函数适用于向量的常用函数 nmin(x):min(x): 向量向量x x的元素的最小值的元素的最小值 nmax(x):max(x): 向量向量x x的元素的最大值的元素的最大值 nmean(x):mean(x): 向量向量x x的元素的平均值的元
8、素的平均值 ,c,c语言中要用循环语言中要用循环nmedian(x):median(x): 向量向量x x的元素的中位数的元素的中位数 nstd(x):std(x): 向量向量x x的元素的标准差的元素的标准差 ndiff(x):diff(x): 向量向量x x的相邻元素的差的相邻元素的差 nsort(x):sort(x): 对向量对向量x x的元素进行的元素进行排序排序(SortingSorting) nlength(x):length(x): 向量向量x x的元素个数的元素个数 nnorm(x):norm(x): 向量向量x x的欧氏(的欧氏(EuclideanEuclidean)长度)长
9、度 nsum(x):sum(x): 向量向量x x的元素总和的元素总和 nprod(x):prod(x): 向量向量x x的元素总乘积的元素总乘积 11向量运算的练习向量运算的练习n例例.5:创建一个创建一个8 8维行(列)向量维行(列)向量x x。 (1 1)输出其第)输出其第2 2个元素个元素 (2 2)输出其第)输出其第1 1、3 3、5 5、7 7个元素个元素 (3 3)找出其小于零的元素并赋值为)找出其小于零的元素并赋值为1111 (4 4)找出该向量元素的最大值、最小值以及)找出该向量元素的最大值、最小值以及元素平均值和元素个数元素平均值和元素个数 (5 5)求求l
10、nxlnx2 2122.1.2 矩阵的建立及运算矩阵的建立及运算 矩阵的建立矩阵的建立(1)直接输入直接输入: :如如:a=1,3,4;4,3,2.:a=1,3,4;4,3,2.(例(例.6)(2)大型矩阵一般创建大型矩阵一般创建M M文件,便于修改文件,便于修改 (i) (i) 启动有关编辑程序或启动有关编辑程序或MATLABMATLAB文本编辑器,并输文本编辑器,并输入待建矩阵:入待建矩阵:(ii) (ii) 把输入的内容以纯文本方式存盘把输入的内容以纯文本方式存盘( (设文件名为设文件名为mymatrix.m)mymatrix.m)。(iii) (iii) 在在MATLA
11、BMATLAB命令窗口中输入命令窗口中输入mymatrixmymatrix,即运行,即运行该该M M文件,就会自动建立一个名为文件,就会自动建立一个名为MYMATMYMAT的矩阵,可的矩阵,可供以后使用。供以后使用。13矩阵的生成矩阵的生成(二二)(3)多维数组的创建多维数组的创建函数函数cat,格式格式 A=cat(n,A1,A2,Am)说明:说明:n=1和和n=2时分别构造时分别构造A1;A2和和A1,A2,都是二维数组,而都是二维数组,而n=3时可以构造出三维数组。时可以构造出三维数组。例例2.1.7 A1=1,2,3;4,5,6;7,8,9;A2=A1;A3=A1-A2; A1=1,2
12、,3;4,5,6;7,8,9;A2=A1;A3=A1-A2; A4=cat(3,A1,A2,A3)A4=cat(3,A1,A2,A3)A4(:,:,1) = 1 2 3 4 5 6 7 8 9A4(:,:,2) = 1 4 7 2 5 8 3 6 9A4(:,:,3) = 0 -2 -4 2 0 -2 4 2 014特殊矩阵的生成特殊矩阵的生成单位矩阵:单位矩阵:eyeeye:产生单位矩阵。:产生单位矩阵。空矩阵:空矩阵:A=A=全零矩阵:全零矩阵:zeroszeros:产生全:产生全0 0矩阵矩阵( (零矩阵零矩阵) )。全全1 1矩阵:矩阵: onesones:产生全:产生全1 1矩阵矩阵
13、( (幺矩阵幺矩阵) )。随机矩阵:随机矩阵:randrand:产生:产生0 01 1间均匀分布的随机矩阵。间均匀分布的随机矩阵。randnrandn:产生均值为:产生均值为0 0,方差为,方差为1 1的标准正态分布随机矩阵的标准正态分布随机矩阵例例2.1.9 2.1.9 (1) (1) 建立一个建立一个3 33 3零矩阵。零矩阵。(2) (2) 建立一个建立一个3 32 2零矩阵。零矩阵。(3) (3) 设设A=1 2 3;4 5 6A=1 2 3;4 5 6,建立一个与矩阵,建立一个与矩阵A A同样大小零矩阵。同样大小零矩阵。15例例2.1.10 建立随机矩阵建立随机矩阵 (1) 在区间在
14、区间20,50内均匀分布的内均匀分布的5阶随机矩阵阶随机矩阵(2) 均值为均值为0.6、方差为方差为0.1的的5阶正态分布随机阶正态分布随机矩阵。矩阵。x=20+(50-20)*rand(5)x=unifrnd(20,50,5) y=0.6+sqrt(0.1)*randn(5) y=normrnd(0.6,0.1,5)16矩阵的合并和拆分矩阵的合并和拆分(一一)(1 1)建立大矩阵:)建立大矩阵:大矩阵可由方括号中的小矩阵或向大矩阵可由方括号中的小矩阵或向量建立起来。量建立起来。x=1:1:8;y=-10:1:-3;z=x;y(2 2)矩阵元素:)矩阵元素:通过下标引用矩阵的元素,例如通过下标
15、引用矩阵的元素,例如A(3,2)=200。采用矩阵元素的序号来引用矩阵元。采用矩阵元素的序号来引用矩阵元素。矩阵元素的序号就是相应元素在内存中的排列素。矩阵元素的序号就是相应元素在内存中的排列顺序。在顺序。在MATLAB中,矩阵元素按列存储,先第一中,矩阵元素按列存储,先第一列,再第二列,依次类推。矩阵元素列,再第二列,依次类推。矩阵元素A(i,j)的序号为的序号为(j-1)*m+i。例如例如A=1,2,3;4,5,6;A(3)=2。 17矩阵的合并和拆分矩阵的合并和拆分(二二)(3) 利用冒号表达式获得子矩阵利用冒号表达式获得子矩阵 A(:,j)表示取表示取A矩阵的第矩阵的第j列全部元素;列
16、全部元素;A(i,:)表示表示A矩阵第矩阵第i行的全部元素;行的全部元素;A(i,j)表示取表示取A矩阵第矩阵第i行、行、第第j列的元素。列的元素。 A(i:i+m,:)表示取表示取A矩阵第矩阵第ii+m行的全部元素;行的全部元素;A(:,k:k+m)表示取表示取A矩阵第矩阵第kk+m列的全部元素,列的全部元素,A(i:i+m,k:k+m)表示取表示取A矩阵第矩阵第ii+m行内,并行内,并在第在第kk+m列中的所有元素。列中的所有元素。 18矩阵的合并和拆分矩阵的合并和拆分(三三)(4)在在MATLAB中,定义中,定义为空矩阵。给变量为空矩阵。给变量X赋空矩赋空矩阵的语句为阵的语句为X=。注意
17、,。注意,X=与与clear X不同,不同,clear是将是将X从工作空间中删除,而空矩阵则存在于从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为工作空间中,只是维数为0。reshape(A,m,n),它在矩阵总元素保持不变的前提,它在矩阵总元素保持不变的前提下,将矩阵下,将矩阵A重新排成重新排成mn的二维矩阵的二维矩阵。 A=rand(4), B=reshape(A,8,2)19矩阵的合并和拆分矩阵的合并和拆分(四四)例例2.1.11 (1)建立建立24均匀随机矩阵均匀随机矩阵x、 44单位矩单位矩阵阵y、 62全全4矩阵矩阵z;(2)将上述三个矩阵合并成一个矩阵将上述三个矩阵合并成
18、一个矩阵H;(3)分别用下标法和序号法引用分别用下标法和序号法引用H(4,2)和和H(2,6);(4)求求H的第的第3行和第行和第5列的元素;列的元素;(5)矩阵矩阵B表示由表示由H的第的第2行到第行到第6行且在第行且在第1列到第列到第4列列的元素组成的矩阵;的元素组成的矩阵;(6)将矩阵将矩阵H变为变为49阶矩阵,阶矩阵,并令其第并令其第1行为空行为空.20例例2.1.11(续)(续)x=rand(2,4);y=eye(4);z=4*ones(6,2);H=x;y,zH(4,2),H(1*6+4)H(2,6),H(5*6+2)H(3,:),H(:,5)B=H(2:6,14)H=reshape
19、(H,4,9)H(1,:)=;H21矩阵分析(一)矩阵分析(一)对角阵对角阵l提取矩阵的对角线元素提取矩阵的对角线元素设设A为为mn矩阵,矩阵,diag(A)函数用于提取矩阵函数用于提取矩阵A主对主对角线元素,产生一个具有角线元素,产生一个具有min(m,n)个元素的列向量个元素的列向量ldiag(A)函数还有一种形式函数还有一种形式diag(A,k),其功能是提取,其功能是提取第第k条对角线条对角线的元素。的元素。l构造对角矩阵构造对角矩阵设设V为具有为具有m个元素的向量,个元素的向量,diag(V)将产生一个将产生一个mm对角矩阵,其主对角线元素即为向量对角矩阵,其主对角线元素即为向量V的
20、元素。的元素。diag(V)函数也有另一种形式函数也有另一种形式diag(V,k),其功能是产,其功能是产生一个生一个nn(n=m+k)对角阵,其第对角阵,其第k条对角线的元条对角线的元素即为向量素即为向量V的元素。的元素。22矩阵分析例矩阵分析例2.1.12例例.12 先建立先建立5 55 5矩阵矩阵A A,然后将,然后将A A的第一行的第一行元素乘以元素乘以1 1,第二行乘以,第二行乘以2 2,第五行乘以,第五行乘以5 5。A=17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;1A=17,0,1,0,15;23,5,7,14,16;4,0,13,0
21、,22;10,12,19,21,3;.0,12,19,21,3;.11,18,25,2,19;11,18,25,2,19;D=diag(1:5);D=diag(1:5);D D* *A %A %用用D D左乘左乘A A,对,对A A的每行乘的每行乘以一个指定常数以一个指定常数23矩阵分析(二)矩阵分析(二)三角阵三角阵l上三角矩阵上三角矩阵求矩阵求矩阵A A的上三角阵的的上三角阵的MATLABMATLAB函数是函数是triu(A)triu(A)。triu(A)triu(A)函数也有另一种形式函数也有另一种形式triu(A,k)triu(A,k),其功,其功能是求矩阵能是求矩阵A A的第的第k
22、k条对角线以上的元素。例如,条对角线以上的元素。例如,提取矩阵提取矩阵A A的第的第2 2条对角线以上的元素,形成新条对角线以上的元素,形成新的矩阵的矩阵B B。l下三角矩阵下三角矩阵在在MATLABMATLAB中,提取矩阵中,提取矩阵A A的下三角矩阵的函数是的下三角矩阵的函数是tril(A)tril(A)和和tril(A,k)tril(A,k),其用法与提取上三角矩,其用法与提取上三角矩阵的函数阵的函数triu(A)triu(A)和和triu(A,k)triu(A,k)完全相同完全相同。24矩阵分析(三)矩阵分析(三)l矩阵的转置:矩阵的转置:转置运算符是单撇号转置运算符是单撇号。 l矩阵
23、的逆:矩阵的逆: inv(A) l方阵的行列式:方阵的行列式:det(A)l矩阵的秩:矩阵的秩:rank(A)l矩阵的迹:矩阵的迹:矩阵的迹等于矩阵的对角线元素之和,也等于矩阵矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。求矩阵的迹的函数是的特征值之和。求矩阵的迹的函数是trace(A)l矩阵的特征值与特征向量矩阵的特征值与特征向量 :计算矩阵计算矩阵A A的特征值和特征向的特征值和特征向量的函数是量的函数是eig(A)eig(A) (i) E=eig(A) (i) E=eig(A):求矩阵:求矩阵A A的全部特征值,构成向量的全部特征值,构成向量E E。(ii) V,D=eig(
24、A)(ii) V,D=eig(A):求矩阵:求矩阵A A的全部特征值,构成对的全部特征值,构成对角阵角阵D D,并求,并求A A的特征向量构成的特征向量构成V V的列向量。的列向量。252.2 MATLAB运算运算 n算术运算算术运算 注意函数的运算作用于矩阵的所有元素注意函数的运算作用于矩阵的所有元素 n关系运算关系运算n逻辑运算逻辑运算262.2.1算术运算算术运算nMATLAB的基本算术运算的基本算术运算:( (加加) )、( (减减) )、* *( (乘乘) )、/(/(右除右除) )、(左除左除) )、(乘方乘方) )。 在在MATLABMATLAB中,有两种矩阵除法运算:中,有两种
25、矩阵除法运算: 和和/ /,分别表示,分别表示左除和右除。如果左除和右除。如果A A阵是非阵是非奇异方阵奇异方阵,则,则ABAB和和B/AB/A运运算可以实现。算可以实现。ABAB等于等于inv(A)inv(A)* *B B,而,而B/AB/A等于等于B B* *inv(A)inv(A)。 n点运算点运算 :点运算符有点运算符有.*、./、.和和.。 两矩阵两矩阵进行点运算进行点运算是指它们的对应元素进行相关运算,是指它们的对应元素进行相关运算,要求两矩阵的维参数相同要求两矩阵的维参数相同。272.2.2关系运算关系运算 n关系运算符:关系运算符:(小于小于)、(大大于于)、=(大于或等于大于
26、或等于)、=(等于等于)、=(不等于不等于)。 n关系运算符的运算法则关系运算符的运算法则 :n当两个比较量是标量时,直接比较两数的大小。当两个比较量是标量时,直接比较两数的大小。n当参与比较的量是两个维数相同的矩阵时,比较是当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。进行,并给出元素比较结果。 n当参与比较的一个是标量,而另一个是矩阵时,则当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并
27、给出元素比较结果个比较,并给出元素比较结果 28关系运算的例子关系运算的例子例例.1(1 1)令)令A=1:9, B=9-A ,输出,输出A A中元中元素大于素大于B B对应元素的位置。对应元素的位置。 find(AB)(2 2)产生)产生5 5阶随机方阵阶随机方阵A A,其元素为,其元素为10,9010,90区区间的随机整数,然后判断间的随机整数,然后判断A A的元素是否能被的元素是否能被3 3整除。整除。A=fix(90-10+1)*rand(5)+10) P=rem(A,3)=0 292.2.3逻辑运算(一)逻辑运算(一) n逻辑运算符:逻辑运算符:&(&
28、(与与) )、|(|(或或) )和和( (非非) )n逻辑运算的运算法则为:逻辑运算的运算法则为: (i) (i) 在逻辑运算中,确认非零元素为真,用在逻辑运算中,确认非零元素为真,用1 1表示,表示,零元素为假,用零元素为假,用0 0表示。表示。 (ii) (ii) 设参与逻辑运算的是两个标量设参与逻辑运算的是两个标量a a和和b b,那么,那么, a&b a,ba&b a,b全为非零时,运算结果为全为非零时,运算结果为1 1,否则为,否则为0 0。 a|b a,ba|b a,b中只要有一个非零,运算结果为中只要有一个非零,运算结果为1 1。 a a 当当a a是零时,运算结
29、果为是零时,运算结果为1 1;当;当a a非零时,运非零时,运 算结果为算结果为0 0。 30逻辑运算(二)逻辑运算(二) (iii) (iii) 若参与逻辑运算的是两个同维矩阵,那么运算将若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由算结果是一个与原矩阵同维的矩阵,其元素由1 1或或0 0组成。组成。 (iv) (iv) 若参与逻辑运算的一个是标量,一个是矩阵,那么若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个运算将
30、在标量与矩阵中的每个元素之间按标量规则逐个进行。进行。 (v) (v) 逻辑非是单目运算符,也服从矩阵运算规则。逻辑非是单目运算符,也服从矩阵运算规则。 (vi) (vi) 在算术、关系、逻辑运算中,算术运算优先级最高,在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。逻辑运算优先级最低。 31逻辑运算的例子逻辑运算的例子 例例2.2.2 建立建立1 15050标准正态随机矩阵标准正态随机矩阵A A。(1)(1)找出找出A A中元素大于中元素大于-1-1且小于且小于1 1的元素的位置,的元素的位置,并输出这些元素;并输出这些元素; (2)(2)找出大于找出大于1.51.5或小于
31、或小于1.51.5的元素,并将这些元的元素,并将这些元素素删除掉删除掉。(给矩阵的元素赋空值)。(给矩阵的元素赋空值)例例.3逻辑函数的运用示例。(见讲义)逻辑函数的运用示例。(见讲义)322.32.3字符串、结构数组与元胞数组字符串、结构数组与元胞数组.1字符串字符串l在在MATLABMATLAB中,字符串是用单撇号括起来的字符中,字符串是用单撇号括起来的字符序列。序列。MATLABMATLAB将字符串当作一个行向量,每个将字符串当作一个行向量,每个元素对应一个字符,其标识方法和数值向量相元素对应一个字符,其标识方法和数值向量相同。也可以建立多行字符串矩阵。同
32、。也可以建立多行字符串矩阵。l字符串是以字符串是以ASCIIASCII码形式存储的。码形式存储的。absabs和和doubledouble函数都可以用来获取字符串矩阵所对应的函数都可以用来获取字符串矩阵所对应的ASCIIASCII码数值矩阵。相反,码数值矩阵。相反,charchar函数可以把函数可以把ASCIIASCII码矩码矩阵转换为字符串矩阵。阵转换为字符串矩阵。33 简单命令(一)简单命令(一)cleara=12345.6789class(a) a_s=size(a) b=S class(b) b_s=size(b)whos34 简单命令(二)简单命令(二)把把This is an ex
33、ample.This is an example. 赋值给变量赋值给变量a a,求,求a a的的元素个数,并且将其转化成元素个数,并且将其转化成ASCIIASCII码,然后再码,然后再转化成字符串。转化成字符串。a=This is an example. size(a) ascii_a=double(a)char(ascii_a) 35字符串的例子字符串的例子在在matlabmatlab中字符串看成数组,其元素的读取类似中字符串看成数组,其元素的读取类似与数组,注意在字符串中空格也是一个字符。与数组,注意在字符串中空格也是一个字符。例例2.3.1 2.3.1 建立一个字符串向量,然后对该向量建
34、立一个字符串向量,然后对该向量做如下处理:做如下处理:(1) (1) 取第取第1 15 5个字符组成的子字符串。个字符组成的子字符串。 (2) (2) 将字符串倒过来重新排列。将字符串倒过来重新排列。(3)(3)统计字符串中小写字母的个数。统计字符串中小写字母的个数。 (4)(4)将字符串中的小写字母变成相应的大写字将字符串中的小写字母变成相应的大写字母,其余字符不变。母,其余字符不变。 36字符串的例子(续)字符串的例子(续)ch=ABc123d4e56Fg9;subch=ch(1:5) %取子字符串取子字符串revch=ch(end:-1:1) %将字符串倒排将字符串倒排k=find(ch
35、=a&ch=z); %找小写字母找小写字母的位置的位置ch(k)=ch(k)-(a-A); %将小写字母变成将小写字母变成相应的大写字母相应的大写字母char(ch) length(k) %统计小写字母的个数统计小写字母的个数37字符串矩阵字符串矩阵如同矩阵,字符串可以有多个行,但每行必须有如同矩阵,字符串可以有多个行,但每行必须有相同数目的列数,因此要相同数目的列数,因此要用空格使各行具有相用空格使各行具有相同的长度同的长度。在命令窗口输入以下语句,并按在命令窗口输入以下语句,并按enterenter键确认键确认ss=i am a girl; i am a boy bb=i am a
36、 girl i am a boy bb(2)cc=i am a girl; i am a boy38字符串的显示字符串的显示函数函数dispdisp允许不显示变量名而显示一个字符串允许不显示变量名而显示一个字符串disp(bb)disp(bb)39Eval命令命令 n与字符串有关的另一个重要函数是与字符串有关的另一个重要函数是evaleval,其调用格,其调用格式为:式为:eval(t)eval(t)其中其中t t为字符串。为字符串。n它的作用是把字符串的内容作为对应的它的作用是把字符串的内容作为对应的MATLABMATLAB语句语句来执行。来执行。nB=rand(2,4) B_str=mat
37、2str(B,4) Expression=exp(-,B_str,);eval(Expression) 402.3.2元胞数组和结构数组元胞数组和结构数组 元胞数组元胞数组元胞数组的建立元胞数组的建立l使用大括号,使用大括号, ,就象用中括号,就象用中括号 来创建数字矩阵一样;来创建数字矩阵一样;l对元胞进行逐一赋值,称为元胞赋值;对元胞进行逐一赋值,称为元胞赋值;l创建一个大小合适的空矩阵。矩阵中所有的创建一个大小合适的空矩阵。矩阵中所有的行必须要有相同的元胞数。行必须要有相同的元胞数。元胞数组的显示:元胞数组的显示:celldisp和和cellplot41元胞数组的例子元胞数组的例子(一一
38、) 例例2.3.2 R1=reshape(1:9,3,3);R2=1+2i;R3=This is an example;R4=rand(4);RR1=R1,R2,R3,R4cellplot(RR1)RR21,1=R1, RR21,2=R2,RR21,3=R3, RR21,4=R4,42元胞数组的例子(二)元胞数组的例子(二) 要创建一个要创建一个2 24 4的空元胞矩阵,可以使用命令:的空元胞矩阵,可以使用命令:cell(2,4)cell(2,4)例例2.3.3 元胞数组的扩充元胞数组的扩充 C=cell(2); C(:,1)=char(Another,text string);10:-1:1
39、 C_str=char(这是这是,元胞数组创建算例元胞数组创建算例 1); R=reshape(1:9,3,3); Cn=1+2i; S_sym=sym(sin(-3*t)*exp(-t); A(1,1)=C_str;A(1,2)=R;A(2,1)=Cn;A(2,2)=S_sym; AC=A C ;A_C=A;C 43元胞数组的例子(三)元胞数组的例子(三) 例例2.3.3续续 元胞数组的收缩和重组。元胞数组的收缩和重组。(1)元胞数组的收缩)元胞数组的收缩A_C(3,:)=(2)把)把A_C重组成元胞数组重组成元胞数组R_A_CR_A_C=reshape(A_C,2,3) 44元胞数组内容的
40、调取元胞数组内容的调取例例2.3.4 元胞数组内容的调取示例。元胞数组内容的调取示例。(1)取一个元胞:)取一个元胞:f1=R_A_C(1,3)%使用圆括号寻访得到的是元胞,而不仅是内容。使用圆括号寻访得到的是元胞,而不仅是内容。 class(f1) (2)取一个元胞的内容:)取一个元胞的内容:f2=R_A_C1,3 %用花括号寻访取得内容用花括号寻访取得内容 class(f2)(3)取元胞内的子数组)取元胞内的子数组f3=R_A_C1,1(:,1 2 5 6)%注意三种括号的不同用途注意三种括号的不同用途%取第取第1行第行第1列元胞内容中的第列元胞内容中的第1、2、5、6列。列。 (4)同时
41、调取多个元胞内容)同时调取多个元胞内容f4,f5,f6=deal(R_A_C1,3,4)%取三个元胞取三个元胞内容,赋值给三个变量内容,赋值给三个变量 45元胞数组与数值型数组的转化元胞数组与数值型数组的转化 cell2matC = 1 2 3 4; 5; 9 6 7 8; 10 11 12M = cell2mat(C)M = 1 2 3 4 5 6 7 8 9 10 11 12num2cellnum2cell(A,2)num2cell(A,1 3)A=magic(4)B=num2cell(A,2)46结构体数组的直接创建法及显示结构体数组的直接创建法及显示 结构数组的元素可以是不同的数据类型
42、,它能结构数组的元素可以是不同的数据类型,它能将一组具有不同属性的数据纳入到一个统一将一组具有不同属性的数据纳入到一个统一的变量名下进行管理。建立一个结构数组可的变量名下进行管理。建立一个结构数组可采用给结构成员赋值的办法。采用给结构成员赋值的办法。具体格式为:具体格式为:结构矩阵名结构矩阵名. .成员名成员名= =表达式表达式其中表达式应理解为矩阵表达式其中表达式应理解为矩阵表达式 47结构体数组的直接创建法结构体数组的直接创建法及显示的例子及显示的例子 例例2.3.5 本例通过温室数据(包括温室名、容积、温本例通过温室数据(包括温室名、容积、温度、湿度等)演示一维结构体数组的创建和显示。度
43、、湿度等)演示一维结构体数组的创建和显示。(1)green_=一号房一号房;green_house.volume=2000立方米立方米;green_house.parameter.temperature=31.2 30.4 31.6 28.7 29.7 31.1 30.9 29.6;green_house.parameter.humidity=62.1 59.5 57.7 61.5 62.0 61.9 59.2 57.5;(2)显示显示“结构体数组结构体数组”结构和内容结构和内容green_house ;green_house.parameter ;48结构体数组的直接创建
44、法结构体数组的直接创建法及显示的例子及显示的例子 (续)(续) 例例2.3.6 本例演示结构体数组的创建和显示,本例演示结构体数组的创建和显示,并利用结构体数组保存一个温室群的数据。并利用结构体数组保存一个温室群的数据。本例的运行以例本例的运行以例2.3.5为先导为先导。green_house(2,3).name=六号房六号房;green_house green_house(2,3)green_house(1,1) 49利用构造函数创建结构体数组利用构造函数创建结构体数组例例2.3.7 利用构造函数利用构造函数struct,建立温室群的,建立温室群的数据库。数据库。a=cell(2,3);gr
45、een_house_1=struct(name,a,volume,a,parameter,a(1,2)green_house_2=struct(name,a,volume,parameter,) green_hopuse_3(2,3)=struct(name,volume,parameter,) 50结构成员的修改结构成员的修改 n增加结构成员:增加结构成员:例如要给结构数组例如要给结构数组a增加一个增加一个成员成员x4,可给可给a中任意一个元素增加成员中任意一个元素增加成员x4:a(1).x4=410075;但其他成员均为空矩阵,可以使用赋值语句但其他成员均为空矩阵,可以使用赋值语句给它赋确
46、定的值。给它赋确定的值。要删除结构的成员,则可以使用要删除结构的成员,则可以使用rmfield函数函数来完成。例如,删除成员来完成。例如,删除成员x4:a=rmfield(a,x4); 512.4程序控制结构与函数程序控制结构与函数2.4.1M文件的建立文件的建立n建立新的建立新的M文件有文件有3种方法种方法: (1) 菜单操作。从菜单操作。从MATLAB主窗口的主窗口的File菜菜单中选择单中选择New菜单项,再选择菜单项,再选择M-file命令命令. . (2) 命令操作。在命令操作。在MATLAB命令窗口输入命命令窗口输入命令令edit。 (3) 命令按钮操作。单击命令按钮操作。单击MA
47、TLAB主主窗口工窗口工具栏上的具栏上的New M-File命令按钮。命令按钮。52建立建立M文件的例子文件的例子例例2.4.1 分别建立命令文件和函数文件,将华分别建立命令文件和函数文件,将华氏温度氏温度f转换为摄氏温度转换为摄氏温度c,建立命令文件并,建立命令文件并以文件名以文件名f2c.m存盘。存盘。clear; %清除工作空间中的变量清除工作空间中的变量f=input(Input Fahrenheit temperature:);c=5*(f-32)/953建立建立M文件的例子(续)文件的例子(续)首先建立函数文件首先建立函数文件f2c.m:function c=f2c(f)c=5*(
48、f-32)/9然后在然后在MATLAB的命令窗口调用该函数文件。的命令窗口调用该函数文件。clear;y=input(Input Fahrenheit temperature:);x=f2c(y)54M文件的打开文件的打开n打开新的打开新的M文件有文件有3种方法种方法: (1) 菜单操作。从菜单操作。从MATLAB主窗口的主窗口的File菜单中菜单中选择选择Open命令,则屏幕出现命令,则屏幕出现Open对话框,在对话框,在Open对话框中选中所需打开的对话框中选中所需打开的M文件。文件。 (2) 命令操作。在命令操作。在MATLAB命令窗口输入命令:命令窗口输入命令:edit 文件名,则打开
49、指定的文件名,则打开指定的M文件。文件。 (3) 命令按钮操作。单击命令按钮操作。单击MATLAB主窗口工具栏主窗口工具栏上的上的Open File命令按钮,再弹出的对话框中命令按钮,再弹出的对话框中选择所需打开的选择所需打开的M文件。文件。 55程序控制结构程序控制结构 n顺序结构顺序结构 n选择结构选择结构 n循环结构循环结构 56顺序结构顺序结构 n(i) 数据的输入数据的输入从键盘输入数据,则可以使用从键盘输入数据,则可以使用input函数来进行,该函函数来进行,该函数的调用格式为:数的调用格式为: A=input(提示信息,选项提示信息,选项);其中提示信息为一个字符串,用于提示用户
50、输入什么其中提示信息为一个字符串,用于提示用户输入什么样的数据。样的数据。n(ii) 数据的输出数据的输出nMATLAB提供的命令窗口输出函数主要有提供的命令窗口输出函数主要有disp函数,函数,其调用格式为其调用格式为n disp(输出项输出项)n其中输出项既可以为字符串,也可以为矩阵。其中输出项既可以为字符串,也可以为矩阵。 57数据输入输出的例子数据输入输出的例子n如果在如果在input函数调用时采用函数调用时采用s选项,则允许选项,则允许用户输入一个字符串。用户输入一个字符串。例如,想输入一例如,想输入一个人的姓名,可采用命令:个人的姓名,可采用命令:xm=input(Whats yo
51、ur name?,s);n例例2.4.2 输入输入x,y的值,并将它们的值互换后的值,并将它们的值互换后输出。输出。x=input(Input x please.);y=input(Input y please.); z=x;x=y;y=z;disp(x);disp(y);58例例2.4.3 求一元二次方程求一元二次方程ax2 +bx+c=0的根。的根。程序如下:程序如下:a=input(a=?);b=input(b=?);c=input(c=?);d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(x(1),x
52、2=,num2str(x(2)59程序的暂停程序的暂停n暂停程序的执行可以使用暂停程序的执行可以使用pause函数,其调函数,其调用格式为:用格式为: pause(延迟秒数延迟秒数)n 如果省略延迟时间,直接使用如果省略延迟时间,直接使用pause,则将,则将暂停程序,直到用户按任一键后程序继续执暂停程序,直到用户按任一键后程序继续执行。行。n若要强行中止程序的运行可使用若要强行中止程序的运行可使用Ctrl+C命令。命令。60选择结构选择结构 (i) if语句语句(ii) 双分支双分支if语句语句(iii) 多分支多分支if语句语句 (iv) switch语句语句(v) try语句语句 61单
53、分支单分支if语句语句 if 条件条件 语句组语句组 end当条件成立时,则执行语句组,执行完之后继当条件成立时,则执行语句组,执行完之后继续执行续执行if语句的后继语句,若条件不成立,则语句的后继语句,若条件不成立,则直接执行直接执行if语句的后继语句。语句的后继语句。62双分支双分支if语句语句 if 条件条件 语句组语句组1 else 语句组语句组2 end当条件成立时,执行语句组当条件成立时,执行语句组1,否则执行语句组,否则执行语句组2,语句组,语句组1或语句组或语句组2执行后,再执行执行后,再执行if语句的语句的后继语句。后继语句。 条件语句组语句组1语句组2是否63例例2.4.4
54、 计算分段函数的值计算分段函数的值x=input(请输入请输入x的值的值:);if x=A & c=a& c=0& c=9n disp(abs(c)-abs(0);nelsen disp(c);nend67switch语句语句 n switch语句根据表达式的取值不同,分别执行不同的语句,语句根据表达式的取值不同,分别执行不同的语句,其语句格式为:其语句格式为: switch 表达式表达式 case 表达式表达式1 语句组语句组1 case 表达式表达式2 语句组语句组2 case 表达式表达式m 语句组语句组m otherwise 语句组语句组n end程序的执行程序
55、的执行结果与结果与casecase语句语句的次序无的次序无关关68switch语句的例子语句的例子例例2.4.6 某商场对顾客所购买的商品实行打折销售,标某商场对顾客所购买的商品实行打折销售,标准如下准如下(商品价格用商品价格用price来表示来表示): price200 没有折扣没有折扣 200price500 3%折扣折扣 500price1000 5%折扣折扣 1000price2500 8%折扣折扣 2500price5000 10%折扣折扣 5000price 14%折扣折扣输入所售商品的价格,求其实际销售价格。输入所售商品的价格,求其实际销售价格。69switch语句例子的程序语句
56、例子的程序price=input(请输入商品价格请输入商品价格);switch fix(price/100) case 0,1 %价格小于价格小于200 rate=0; case 2,3,4 %价格大于等于价格大于等于200但小于但小于500 rate=3/100; case num2cell(5:9) %价格大于等于价格大于等于500但小于但小于1000 rate=5/100; case num2cell(10:24) %价格大于等于价格大于等于1000但小于但小于2500 rate=8/100; case num2cell(25:49) %价格大于等于价格大于等于2500但小于但小于500
57、0 rate=10/100; otherwise %价格大于等于价格大于等于5000 rate=14/100;endprice=price*(1-rate) %输出商品实际销售价格输出商品实际销售价格70clear;mypri=input(the price of the goods);switch 1 case mypri=200&mypri=500&mypri=1000&mypri=2500&mypriii在s1和s3之间?循环体语句组i+s2-i是否结束循环76简单命令简单命令nclear;na=zeros(1,10);nfor i=1:10n a(i)=
58、i2;n i=20;nenda=(1:10).277例例2.4.8 一个三位正整数各位数字的立方和等一个三位正整数各位数字的立方和等 于该数本身则称该数为水仙花数。输出于该数本身则称该数为水仙花数。输出全部水仙花数。全部水仙花数。for m=100:999 m1=fix(m/100); %求百位数字求百位数字 m2=rem(fix(m/10),10); %求十位数字求十位数字 m3=rem(m,10); %求个位数字求个位数字 if m=m13+m23+m33 disp(m) endend78例例2.4.9 已知已知 ,当,当n=100时,求时,求y=1+1/3+1/(2n-1)的值。的值。y
59、=0;n=100;for i=1:n y=y+1/(2*i-1);endy在实际在实际MATLABMATLAB编程中,编程中,采用循环语句会降低其采用循环语句会降低其执行速度,所以前面的执行速度,所以前面的程序通常由下面的程序程序通常由下面的程序来代替:来代替:n=100;i=1:2:2*n-1;y=sum(1./i);y79for语句更一般的格式语句更一般的格式 for 循环变量循环变量=矩阵表达式矩阵表达式 循环体语句循环体语句 end执行过程是依次将矩阵的各列元素赋给循环变量,然后执执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕,循环的次数为行循环体
60、语句,直至各列元素处理完毕,循环的次数为矩阵的列数。矩阵的列数。例例2.4.10 写出下列程序的执行结果。写出下列程序的执行结果。 s=0; a=12,13,14;15,16,17;18,19,20;21,22,23; for k=a s=s+k; end disp(s);80for语句注意(一)语句注意(一)nFor循环不能用循环不能用For循环内重新赋值循环变量来循环内重新赋值循环变量来终止。终止。 for n=1:10 x(n)=sin(n*pi/10); n=10;%这一句没有作用这一句没有作用 end81for语句注意(二)语句注意(二)n在在For循环内接受任何有效的循环内接受任何有效的MATLAB数组。数组。data=3 9 45 6; 7 16 -1 5data
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自考专业(建筑工程)通关题库及参考答案详解(轻巧夺冠)
- 2025河北唐山曹妃甸唐海中医医院招聘备考试题及答案解析
- 2025广东江门市五邑中医院(暨南大学附属江门中医院)第三批招聘14人笔试参考题库附答案解析
- 家具厂质检员工作考核制度
- 基因编辑抗病猪培育-洞察及研究
- 2025山东聊城东阿县城区中小学教师选聘140人笔试参考题库附答案解析
- 家具厂质检员职责执行细则
- 年终工作总结概述范文
- 小学数学教学中信息技术实践与思考范文
- 2025年放射科肿瘤放疗辅助检查结果分析测试答案及解析
- 倍智tas人才测评系统题库及答案
- 集装箱装车安全教育
- (2025)辅警招聘考试题题库及答案
- 某电厂拆除工程施工方案
- 退伍军人贫困申请书
- 学校食堂服务承诺书
- DB51T 1174-2010 政务服务中心基础设施建设规范
- 海洋平台设备防腐施工方案
- SAPHO综合征病因介绍
- 煤矿队组精益化管理
- 基尔霍夫定律课件(共17张课件)
评论
0/150
提交评论