【文档说明】计算机仿真技术基础22matlab运算基础2课件.pptx,共(46)页,587.548 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-76463.html
以下为本文档部分文字说明:
计算机仿真技术基础22matlab运算基础2课件例2-32设求A-2B。方法1:A=[4-31;205];B=[120;-103];A-2*B方法2:A=[4-31;205];B=[120;-103];b=uminus(2*B)%
,返回2*B的相反数A+b431,205A120103B2)矩阵和数组的乘法运算矩阵的乘法运算符为*,定义为:设A=(aij)m×s,B=(bij)s×n,则A与B的乘积C=AB=(cij)m×
n是m×n矩阵,其中cij(i=1,2,…,m;j=1,2,…,n)等于A的第i行与B的第j列对应元素的乘积之和。数组的乘法运算符为.*,两个矩阵必须同型时才可以进行数组乘法运算。运算规则为:矩阵A和B中的对应元素相乘。如果参加运算的矩阵其
中有一个是标量时,矩阵和数组的乘法运算均为标量与矩阵的每个元素进行乘法运算。例2-33求乘积AB和BA。A=[103;210];B=[41;-11;20];A*B,B*A例2-34求(AB)T和BT×AT(T为转置运算)。A=[1-12;201];B=[2-10;113;421]
;(A*B)'B'*A'3)矩阵和数组的除法运算矩阵除法运算的运算符为\和/,分别表示左除和右除。矩阵除法的定义为:A\B=A-1×BA/B=A×B-1其中A-1和B-1是矩阵A和B的逆,矩阵B的逆也可用函数inv求得。除法运算的运算符为.\
和./,分别数组为数组的左除和右除,表示数组的相应元素相除。两个矩阵必须同型时才可以进行数组除法运算。定义为:设A=(aij)m×n,B=(bij)m×n,则数组的右除为C=(cij)m×n=(aij/b
ij)m×n,数组的左除为C=(cij)m×n=(bij/aij)m×n。例2-35求解方程组A=[22-11;43-12;83-34;33-2-2];b=[46126]';X=A\b%等价语句为X=inv(A)*b123412341234122422443268334
1233226xxxxxxxxxxxxxxxx2.2.5.2矩阵和数组的乘方运算•矩阵乘方运算的运算符为∧,运算表达式为A∧B,矩阵乘方运算的含义是:A^B表示方阵A自乘B次。•数组乘方运算的
运算符为.^,运算表达式为A.^B,其中A和B都可以是矩阵或标量。数组乘方运算有下列形式:•当A为矩阵,B为正整数时,则将aij自乘B次;•当A为矩阵,B也为矩阵时,A和B矩阵必须同型,则将aij自乘bij次。•当A为正整数,B为矩阵时,将A^bij构成新矩阵的第i行第j列元素
。其中aij和bij分别表示矩阵A和B的第i行第j列元素。2.2.5.3矩阵和数组的数学函数常用的数学函数有三角函数、指数函数和整值函数等。需要注意的是:•MATLAB6.5以前的版本三角函数的自变量和反三角函数的返回值为弧度;•MATLAB7.0版本中提供了三角函数的自变量和
反三角函数的返回值分别为角度和弧度的两类函数。例2-36求30。、60。和90。的正弦、余弦、正切和余切函数值。x=30:30:90;sind(x),cosd(x),tand(x),cotd(x)%三角函数的自变量为角度值例2-37求
0.1,0.2,0.3,0.4,0.5,0.6的反正弦、反余弦和反正切值。x=0.1:0.1:0.6;asin(x),acos(x),atan(x)%返回值为弧度asind(x),acosd(x),atand(x)%返回值
为角度例2-38求1到10的自然对数和常用对数。x=1:10;log(x)%返回值为自然对数log10(x)%返回值为常用对数2.2.6字符串2.2.6.1字符串的定义MATLAB将字符串当作一个行向量,每个元素对应一个字符,一个字符占两个字节,并且每一字符(包括空格)以其ASCII码的形
式存放,其标识方法和数值向量相同。例2-39建立任意的两个字符串,并查看字符串占用的字节信息。s1=‘ChinaPetroleumUiversity'%赋值方式建立字符串s1s2=‘QingdaoShandong‘%赋值方式建立字符串s
2whos%查看字符串占用的字节信息常用的字符串函数•length计算字符串的长度(即组成字符的个数)•class判断某一个变量是否为字符串,返回char则表示为字符串•findstr寻找在某个长字符串中的子字符串,返回其起始位置•deblank删除字符串尾部的空格•eval以表达式方式
执行字符串•disp显示字符串的内容2.2.6.2字符串的连接和替换•strcat(S1,S2,S3,...)功能:返回S1,S2,S3的连接字符串常用的字符串的连接和替换函数:strvcat(T1,T2,T3,..)功能:返回T1,T2,T3,..的垂直连接字符串strmat
ch(S1,S2)功能:在逐行搜索字符串s2,给出以s1开头的那些行的行号strrep(S1,S2,S3)功能:把字符串s1的所有出现s2的地方替换为s3strtok(S)功能:查找字符串S的第一个间隔符(
空格符、指表符、回车符)前的内容例2-40分析下列语句的执行结果。test='Thisisatest!';position=findstr(test,'is')array=strvcat('maxarr
ay','minvalue','maxvalue');result_1=strmatch('max',array)result_2=strrep(test,'test','pest')[token,remainder]=strtok('Thisisatest!')2.2.6
.3字符串比较函数•strcmp(S1,S2)功能:比较字符串是否相等。如果相同则返回1,否则为0。常用的字符串比较函数:strcmpi(S1,S2)功能:在忽略大小写的情况下,比较字符串是否相等。如果相同则返回1,否则为0。strncmp(S1,S2,N)功能
:比较两个字符串的前n个字符是否相等。如果相同则返回1,否则为0。strncmpi(S1,S2,N)功能:在忽略大小写的情况下,比较字符串的前n个字符是否相等。如果相同则返回1,否则为0。例2-41分析下列语句的执行结果。str1='hello';str2='
Hello';str3='help';c1=strcmp(str1,str2)c2=strcmpi(str1,str2)c3=strncmp(str1,str3,2)c4=strncmpi(str1,str3,2)2.2.6.4字符串转换函数•upper(A)功能:把字
符串A中的任一小写字母转换为相应的大写字母常用的字符串转换函数:lower(A)功能:把字符串A中的任一大写字母转换为相应的小写字母double(X)功能:转换字符串X为ASCII码char(X)功能:将ASCII码X转换为字符串•int2str(X
)功能:将整数X转换为字符串num2str(X)功能:将数值X转换成字符串mat2str(MAT)功能:将数值矩阵MAT转换为可执行的形式例2-42分析下列语句的功能。x=5317;y=int2str(x)p=num2str(pi,7)p=num2str(pi,'%10.5e')a
=[123;456];b=mat2str(a)str=sprintf('Thevalueofpi=%8.6f.',pi)2.2.8构架数组2.2.8.1构架数组的建立构架数组的基本组成是域,每一个域是用来存放各种不同类型的数据的单元。构架
数组的建立也有三种方法:赋值语句、创建函数和转换函数。1)赋值语句•例2-50使用赋值语句依次为各个域赋值的方法建立构架数组,存储两名学生的名字、学号、性别、班级信息。s.name='WangMing';s.number='19990101';s.sex='man';s.clas
s='199901';•如查看构架数组的内容,语句为:s•如查看构架数组的某一个域内容,语句为:s.names(2).name='ZhangLe';s(2).number='19990201';s(2).sex='man';
•构架数组的第二个元素可以被通过增加下标实现。•如查看构架数组的各个域名,语句为:s•可通过下面的语句查看s的内容:s(1),s(2)2)创建函数使用struct函数可以建立构架数组,格式为:S=struct('field1',VA
LUES1,'field2',VALUES2,...)功能:创建构架数组S,其中'field1'的值赋为VALUES1,'field2'的值赋为VALUES2,例2-51应用struct函数可以创建例2-50的构架数组。s=struct('name','WangMing
','number','19990101','class','199901','sex','man')2.2.8.2域的增加和删除1)获取域名构架数组创建后可通过函数fieldnames获取构架数组的域,格式为:NAMES=fieldnames(S)功能:返回构架数组S的域名构
成的元胞数组NAMES。例2-53给出构架数组s的全部域名。NAMES=fieldnames(s)2)增加和删除域构架数组建立后,允许增加和删除域。构架数组的域的删除可通过函数rmfield实现,格式为:S=r
mfield(S,'field')功能:从构架数组S中删除域'field'。例2-54演示通过赋值语句增加域的方法。在已建立的构架数组s的基础上,增加课程成绩域exams(三门功课),并删除s的域sex。s(2).exams=[908288];%增加s的域exa
ms,并通过赋值语句为s(2)赋值s(1)%查看s(1,1)的详细信息s(2)%查看s(1,2)的详细信息s2=rmfield(s,'sex')%删除s的域sex2.2.8.3构架数组元素的引用•构架数组的元素的引用可通过指出数组名称、下标、域名直接引用。例2-55演示构架
数组元素的引用方法。s(1).numbers(2).number%引用number元素s(2).exams%引用exams元素,并求其平均值averge=(s(2).exams(1)+s(2).exams(2)+s(2).exams(3))/3%求平均值s(2).aver=av
erge%增加aver域,并赋值为平均值这时s成为1x2构架数组,并有域name、number、class、exams和aver。2.2.8.4getfield和setfield函数函数getfield的格式为:F=getfield(S,{i,j},'field',{k})功能:获取构架
数组的指定的域的域值。其中S是构架数组名,{i,j}用来指定元素构架的下标,'field'是指定的域名,必须是字符串,{k}用来指定域中数组的下标。函数setfield的格式为:S=setfield(S,'field',V)S=SETFIELD(S,{i,j},
'field',{k},V)功能:设置构架数组的指定的域的域值,其中S是构架数组名,{i,j}用来指定构架数组元素的下标,'field'是指定的域名,必须是字符串,V是设置值。注意:S(i,j).field(k)=V例2-56演示函数getfield和setfield的使用方法。
getfield(s,{1,2},'exams',{2})%获取s的第二个元素域exams的第2个值S=setfield(s,{1,1},'exams',{[123]},[889878])%设置s的第一个元素的域e
xams的域值如果为average设置域值呢?average=(S(1).exams(1)+S(1).exams(2)+S(1).exams(3))/3%求平均值S=setfield(s,{1,1},'aver',averge)%设置aver的域值S.aver%设置后查看aver的域值2.2.
8.5构架数组的嵌套例2-57为构架数组s增加教师域,域名为teacher,每名教师有三个域:name(名字)、number(编号)和course(讲授课程)。s(1).teacher.name='LiuMing';s(1).teacher.number='010101';s(1).tea
cher.course=['math';'MATLAB';'Maple'];%构架数组s增加教师域,并赋值s(1).teacher%查看s的域teachers(1).teacher.course%查看s的域teacher的course信息一个班级有多名教师,
如何存储信息呢?s(1).teacher(2).name='LiuMing';s(1).teacher(2).name='WangMin';s(1).teacher(2).number='010102';s(1).teacher(2).cou
rse=['Digitalimageprocessing','MATLAB'];s(1).teacher(2)%查看s的域teacher的信息重点内容:(1)建立数值数组的常用方式;(2)提取子数组的方法;(3)构架数组的建立和有关的常用函数;(4)矩阵与数组的乘除法运算和乘幂运算
的规则;(5)常用的矩阵和数组运算函数的调用格式和功能。