




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二讲MATLAB的基本运算——matlab具有出色的数值计算能力,占据世界上数值计算软件的主导地位1数据类型MATLAB7.3定义了15种基本的数据类型,包括整型、浮点型、字符型和逻辑型等,用户甚至可以定义自己的数据类型。2矩阵和数组MATLAB提供了不同类型的数据MATLAB专门以矩阵作为基本的运算单位MATLAB提供了关于数组和矩阵不同的运算方法MATLAB提供了一种计算机高级编程语言——M语言3在M语言中最常用的数据类型表现手段和形式就是变量和常量M语言的基本处理单位是数值矩阵或者数值向量有关概念变量和常量数组向量矩阵4常数和变量1.常数2.变量MATLAB的变量命名规则如下:变量名区分字母的大小写。例如,“a”和“A”是不同的变量。变量名不能超过63个字符,第63个字符后的字符被忽略。变量名必须以字母开头,变量名的组成可以是任意字母、数字或者下划线,但不能含有空格和标点符号(如,。%等)。关键字(如if、while等)不能作为变量名。5变量和常量变量:程序运行过程中需要改变数值的量每一个变量都具有一个名字变量在内存中占据一定的空间变量必须以字母开头,后面可以是字母、数字或者下划线的组合MATLAB仅识别前面N个字符,在不同的操作系统下可以识别的字符个数不同常量:在程序运行的过程中不需要改变数值的量常量具有名字在M语言中不存在常量的定义,只在MATLAB中提供一些常用的常数作为常量6MATLAB的常量常量说明ans最近运算的结果eps浮点数相对精度,定义为1.0到最近浮点数的距离realmaxMATLAB能表示的实数的最大绝对值realminMATLAB能表示的实数的最小绝对值pi圆周率的近似值3.1415926i,j复数的虚部数据最小单位inf或Inf表示正无大,定义为1/0NaN或nan非数,它产生于0×
,0/0,/等运算7数组是有序数据的集合数组的每一个成员(元素)都属于同一种数据类型,它们使用同一个数组名称和不同的下标来唯一确定数组中的成员(元素)。在MATLAB中元胞数组比较特殊,数组中的元素可以是不同的数据类型。8向量从编程语言的角度上看,向量其实就是一维数组从数学的角度上看,向量就是1×N或者N×1的矩阵,即行向量或列向量
b1,1b2,1B=b3,1和B=[b1,1b1,2b1,3······b1,n]∶∶
bn,19矩阵是用一对圆括号或方括号括起来,符合一定规则的数学对象
b11b12b13B=b21b22b23b31b32b33对于编程语言,矩阵就是二维的数组10创建向量1.在命令窗口逐个输入元素例1:>>X=[13pi3+5i]2.利用冒号运算符创建向量 X=J:INC:KJ为向量的第一个元素,K为向量的最后一个元素,INC为向量元素递增的步长J、INC、K之间必须用“:”间隔若忽略INC,则默认的递增步长为1INC可以为正数,也可以为负数例2:>>X=1:10例3:>>X=1:0.01:1.1
11创建向量(续)3.定数线性采样法:在设定的“总点数”下,均匀采样生成向量(一维“行”数组)使用函数linspace和logspacelinspace是用来创建线性间隔向量的函数linspace
的基本语法
X=linespace(X1,X2,n)X1为向量的第一个元素,X2为向量的最后一个元素,n为向量具有的元素个数,函数将根据n的数值平均计算元素之间的间隔,间隔计算公式为若在表达式中忽略参数n,则系统默认地将向量设置为100个元素12创建向量(续)例4使用linspace函数创建向量>>X=linspace(1,2,5)X=1.00001.25001.50001.75002.000013创建向量(续)logspace是用来创建对数空间的向量logspace
的基本语法
X=logspace(X1,X2,n)该函数创建的向量第一个元素值为10X1,而最后一个元素的数值为10X2,n为向量的元素个数,元素彼此之间的间隔按照对数空间的间隔设置若在表达式中忽略参数n,则系统默认地将向量设置为50个元素14创建向量(续)例5使用logspace函数创建向量>>X=logspace(1,3,3)X=10100100015创建向量(续)创建列向量使用分号作为元素与元素之间的间隔使用转置运算符“'”例6:>>A=[1;2;3;4;5;6]或>>A=(1:6)'16创建矩阵矩阵的元素可以为任意MATLAB数据类型的数值或对象创建矩阵的方法直接输入法使用数组编辑器
17直接输入法规则:整个矩阵的元素必须用[]括住同一行的矩阵元素之间必须用逗号或空格分隔在[]内矩阵的行与行之间必须用分号分隔,也可以在需要分行的地方用回车键间隔矩阵元素可以是任何MATLAB表达式,可以是实数,也可以是复数,复数用i,j输入
例2-7:
>>A=[1,2,3;4,5,6;7,8,9]>>X=[2pi/2;
sqrt(3)3+5i]
18逗号和分号的作用逗号和分号可作为指令间的分隔符,MATLAB允许多条语句在同一行出现。分号如果出现在指令后,屏幕上将不显示结果。只要是赋过值的变量,不管是否在屏幕上显示过,都会存储在工作空间中,以后可随时显示或调用。变量名尽可能不要重复,否则会覆盖。直接输入法(续)19例8:>>A=[1,2,3;4,5,6;7,8,9],X=[2pi/2;sqrt(3)3+5i]A=123456789X=2.00001.57081.73213.0000+5.0000i>>A=[1,2,3;4,5,6;7,8,9];X=[2pi/2;sqrt(3)3+5i]X=2.00001.57081.73213.0000+5.0000i直接输入法(续)20冒号的作用用于生成等间隔的向量,默认间隔为1。例9:>>y=[1:3;4:6;7:9]直接输入法(续)21数组编辑器调用数组编辑器的方法选择工作空间浏览器中的变量,然后单击工作栏中的按钮在工作空间浏览器中直接双击变量选择工作空间浏览器中的变量,然后单击快捷菜单命令Open在MATLAB命令行窗口中键入指令“openvar
变量名”数组编辑器仅能编辑、修改向量或矩阵,对于多维数组,数组编辑器只能察看数组的内容,不能修改多维数组的元素22数组编辑器(续)利用数组编辑器完成矩阵的编辑步骤在命令行窗口中创建一个新的变量,为其赋任意数值如:A=1打开数组编辑器,在数组编辑器中加载相应的变量在数组编辑器的工具栏中,修改矩阵的行数和列数,双击任意元素修改矩阵的元素值23矩阵的修改直接修改在命令行窗口中,可用↑键找到所要修改的矩阵,用←键移动到要修改的矩阵元素上即可修改。在数组编辑器中,可用↑、↓、←、→键找到所要修改的矩阵元素进行修改。指令修改:用A(,)=来修改。例10:>>A=[120;305;789]A=120305789>>A(3,3)=0A=120 305 78024矩阵元素的访问访问矩阵的元素需要使用矩阵元素的索引使用矩阵元素的行列全下标形式A(*,*)使用全下标形式访问矩阵元素的方法简单、直接,同线性代数的矩阵元素的概念一一对应使用矩阵元素的单下标形式A(*)矩阵元素的单下标是矩阵元素在内存中存储的序列号,一般地,同一个矩阵的元素在连续的内存单元中(元素的排列以列元素优先)25矩阵元素的访问(续)4
110
5196
132
178
22
69
104
147
187
35
77
111
155
190
43
84
125
168
20A(1:4,5)A(:,5)A(:,end)A(17:20)'A(2:4,2:3)A([234],[23])A(1,2)A(5)例13A=26矩阵元素的访问(续)使用索引访问矩阵元素的方法矩阵元素的访问说明A(i,j)访问矩阵A的第i行第j列上的元素,其中i和j为标量A(I,J)访问由向量I和J指定的矩阵A中的元素A(i,:)访问矩阵A中第i行的所有元素A(:,j)访问矩阵A中第j列的所有元素A(:)访问矩阵A中的所有元素,将矩阵看成一个向量A(l)使用单下标的方式访问矩阵元素,其中l为标量A(L)访问由向量L指定的矩阵A的元素,向量L中的元素为矩阵元素的单下标数值在索引矩阵或数组的元素时,若直接用冒号运算符且不给任何的参数,则表示选择该行或列,或维中的所有元素27矩阵元素的访问(续)例:用不同的方法访问矩阵的元素>>A=1:25>>A=reshape(A,5,5)A=16111621271217223813182349141924510152025>>A(3,1)或A(3)ans=3>>A(3,:)ans=3813182316111621271217223813182349141924510152025>>A(end,:)ans=510152025>>I=[135];J=[24];>>A(I,J)>>A([135],[24])ans=6168181020>>A(:,4)ans=161718192028矩阵的基本运算函数基本数学运算规则数组的运算运算函数运算指令29矩阵生成函数函数说明zeros产生元素全为0的矩阵ones产生元素全为1的矩阵eye产生单位矩阵rand产生均匀分布的随机数矩阵,数值范围(0,1)randn产生均值为0,方差为1的正态分布随机数矩阵diag获取矩阵的对角线元素,也可生成对角矩阵tril产生下三角矩阵triu产生上三角矩阵pascal产生帕斯卡矩阵magic产生幻方阵30例14矩阵生成函数示例>>A=zeros(3)A=000000000>>A=ones(3)A=111111111矩阵生成函数(续)>>A=eye(3)A=100010001>>A=rand(3)A=0.95010.48600.45650.23110.89130.01850.60680.76210.8214>>A=randn(3)A=-0.43260.28771.1892-1.6656-1.1465-0.03760.12531.19090.327331例14矩阵生成函数示例>>A=magic(3)A=816357(15)492>>A=magic(4)A=162313511108(34)97612414151矩阵生成函数(续)32基本矩阵运算运算命令说明A’矩阵转置A^n矩阵求幂,n可以为任意实数A*B矩阵相乘A/B矩阵右除(一般的除法,A/B=A÷B)A\B矩阵左除(一种倒置的除法,A\B=B÷A)A+B矩阵相加A-B矩阵相减inv矩阵求逆,注意不是所有的矩阵都有逆矩阵det求方阵的行列式rank求矩阵的秩eig求矩阵的特征向量和特征值svd对矩阵进行奇异值分解norm求矩阵的范数331.矩阵加、减运算(A+B、A-B)规则:相加、减的两矩阵必须有相同的行和列,两矩阵对应元素相加减。MATLAB允许参与运算的两矩阵之一是标量,标量与矩阵的所有元素分别进行加减操作。例:A=[123;456]B=[345;789]C=3A+B=[468;111315]A+C=[456;789]B+C=[678;101112]基本矩阵运算(续)342.矩阵乘运算A*B:A矩阵的列数必须等于B矩阵的行数。s*A或A*s:标量可与任何矩阵相乘,标量s分别与矩阵A每个元素相乘。例:>>A=[123;456;780];B=[1;2;3];>>C=A*BC=143223>>D=[-1;0;2];>>F=pi*DF=-3.141606.2832
基本矩阵运算(续)35
3.矩阵除运算及线性方程组的解在线性代数中没有矩阵的除运算,只有矩阵逆的运算,在MATLAB中有两种矩阵除运算。 A/B—矩阵右除,相当于A
inv(B) A\B—矩阵左除,相当于inv(A)
B因此,x=A\B是线性方程组Ax=B的解。例:求解方程组3x1+x2-x3=3.6x1+2x2+4x3=2.1-x1+4x2+5x3=-1.4>>A=[31-1;124;-145];>>B=[3.6;2.1;-1.4];
>>x=A\Bx= 1.4818 -0.4606 0.3848基本矩阵运算(续)364.矩阵乘方
A^n——A自乘n次幂
例>>a=[1,2,3;4,5,6;7,8,9];>>a^2ans=303642668196102126150
方阵>1的整数基本矩阵运算(续)37数组运算指元素对元素的算术运算,与通常意义上的由符号表示的线性代数矩阵运算不同。1. 数组加减(+,-)运算规则:相加、减的两数组必须有相同的行和列,两数组对应元素相加减。MATLAB允许参与运算的两数组之一是标量,标量与数组的所有元素分别进行加减操作
A+B A-B基本数组(元素群)运算
与矩阵加减运算等效,数组之一也可为标量。382.数组乘(
)
运算AB
A,B两数组必须有相同的行和列,两数组相应元素相乘。
sA或As
标量与数组相乘,标量s分别与数组A每个元素相乘,与s
A或A
s相同。例16:>>A=[123;456;789];>>B=[246;135;7910];>>A.*B
ans= 2818 41530 497290基本数组(元素群)运算(续)>>A=[123;456;789];>>B=[246;135;7910];>>A*Bans= 253746 5585109 85133172393.数组除(/,\)运算C=A./B——数组右除 C(i,j)=A(i,j)/B(i,j)C=A.\B——数组左除 C(i,j)=B(i,j)/A(i,j)A./B=B.\AA./s=s.\A—A的元素分别被标量s除s./A=A.\s—标量s分别被A的元素除例:>>A=[123];>>B=[456];>>C1=A./BC1=0.25000.40000.5000>>C2=B.\AC2=0.25000.40000.5000>>C3=A.\BC3=4.00002.50002.0000基本数组(元素群)运算(续)>>A=[123];B=[456];>>A/Bans=0.4156>>A\Bans=0000001.33331.66672.0000404.数组乘方(.^)A.^n——A的每个元素自乘n次A.^p——对A各元素分别求非整数幂p.^A——以p为底,分别以A的元素为指数求幂值C=A.^B——元素对元素的幂C(i,j)=A(i,j).^B(i,j)例:>>A=[123];B=[456];>>X=A.^2X=1.004.009.00>>Y=A.^0.5Y=1.00001.41421.7321
基本数组(元素群)运算(续)>>C=3.^BY=81.00243.00729.00
3^43^53^6>>Z=A.^BZ=1.0032.00729.001^42^53^6415.数组转置(.’)例:>>A=[135;246]A=135246>>A'ans=123456>>A.'ans=123456基本数组(元素群)运算(续)结论:对于实数矩阵,矩阵转置和数组转置的计算结果是一致的。42例:>>A=A*iA=0+1.0000i0+3.0000i0+5.0000i0+2.0000i0+4.0000i0+6.0000i>>A'ans=0-1.0000i0-2.0000i0-3.0000i0-4.0000i0-5.0000i0-6.0000i>>A.'ans=0+1.0000i0+2.0000i0+3.0000i0+4.0000i0+5.0000i0+6.0000i基本数组(元素群)运算(续)结论:对于复数矩阵,矩阵转置和数组转置的计算结果不一致。矩阵转置运算——共轭转置数组转置运算——非共轭转置43函数的主要类别三角函数指数运算函数复数运算函数圆整和求余函数函数在处理参数时,是按照数组运算的规则进行的基本数学函数
44三角函数基本数学函数(续)函数说明函数说明函数说明sin正弦函数tanh双曲正切函数csch双曲余割函数sinh双曲正弦函数atan反正切函数acsc反余割函数asin反正弦函数atan2四象限反正切函数acsch反双曲余割函数asinh反双曲正弦函数atanh反双曲正切函数cot余切函数cos余弦函数sec正割函数coth双曲余切函数cosh双曲余弦函数sech双曲正割函数acot反余切函数acos反余弦函数asec反正割函数acoth反双曲余切函数acosh反双曲余弦函数asech双曲反正割函数tan正切函数csc余割函数45指数运算函数基本数学函数(续)函数说明函数说明exp指数函数realpow实数幂运算函数log自然对数函数reallog实数自然对数函数log10常用对数函数realsqrt实数平方根函数log2以2为底的对数函数sqrt平方根函数pow22的幂函数nextpow2求大于输入参数的第一个2的幂46复数运算函数基本数学函数(续)函数说明函数说明abs求复数的模,若参数为实数则求绝对值real求复数的实部angle求复数的相角unwrap相位角按照360°线调整complex构造复数isreal判断输入的参数是否为实数conj求复数的共轭复数cplxpair复数阵成共轭对形式排列image求复数的虚部47圆整和求余函数基本数学函数(续)函数说明函数说明fix向0取整的函数mod求模函数floor向-∞取整的函数rem求余数ceil向+∞取整的函数sign符号函数round向最近的整数取整的函数48用于矩阵(数组)操作的常用函数矩阵(数组)操作函数
函数说明size获取矩阵的行、列数,对于多维数组,获取数组的各个维的尺寸length获取向量长度,若输入参数为矩阵或多维数组,则返回各个维尺寸的最大值ndims获取矩阵或多维数组的维数numel获取矩阵或数组的元素个数disp显示矩阵或者字符串内容cat合并不同的矩阵或数组reshape保持矩阵元素的个数不变,修改矩阵的行数和列数repmat复制矩阵元素并扩展矩阵fliplr交换矩阵左右对称位置上的元素flipud交换矩阵上下对称位置上的元素flipdim获取指定的方向翻转交换矩阵元素find获取矩阵或者数组中非零元素的索引49例18:reshape函数使用示例>>A=1:8A=12345678>>B=reshape(A,2,4)B=13572468>>C=reshape(A,3,3)???Errorusing==>reshapeToRESHAPEthenumberofelementsmustnotchange.矩阵(数组)操作函数(续)不能改变矩阵包含元素的个数将矩阵A改成2行4列,也可写成B=reshape(1:8,2,4)50例19:对称交换函数使用示例B=13572468>>fliplr(B)ans=
75318642>>flipud(B)ans=
24681357矩阵(数组)操作函数(续)flipdim函数的第二个参数必须是大于0的整数:参数为1时,效果和flipud函数一致参数为2时,效果和fliplr函数一致>>flipdim(B,1)ans=
24681357>>flipdim(B,2)ans=
7531864251例20:repmat使用示例>>A=pascal(2)A=1112>>repmat(A,2,3)ans=
111111
121212111111121212矩阵(数组)操作函数(续)repmat函数的基本语法为:repmat(A,M,N)作用是将指定的矩阵A复制M×N次,其中M对应的是行,N对应的是列。52创建复杂矩阵使用MATLAB提供的矩阵扩展方法完成相应矩阵的构造假设矩阵A为三阶方阵,B为二阶方阵,由A和B组合构成五阶方阵C=[AO;O’B],其中O为相应的零矩阵矩阵(数组)操作函数(续)53例2-21:>>A=reshape(1:9,3,3);>>B=[12;34];>>O=zeros(length(A),length(B))O=000000>>C=[A
O;O'B]C=
147
00
258
00
369
00
00012
00034矩阵(数组)操作函数(续)>>E=[123;456]E=123456>>length(E)ans=3>>F=[123;456;789;427]F=123456789427>>length(F)ans=
454提问:A=reshape(1:9,3,3);B=[12;34];C=
1200034000
00
147
00
258
00
369>>O=zeros(length(B),length(A))O=000000>>C=[BO;O'A]矩阵(数组)操作函数(续)>>O=zeros(length(A),length(B))O=000000>>C=[BO';OA]55创建复杂矩阵利用不同的矩阵运算,通过矩阵合并运算符“[]”将不同的矩阵组合在一起构成大矩阵>>A=[12;34];>>B=[A,A*2;tril(A),triu(A);A*3,A*4]B=12
24
34
68
10
12
34
04
3648
9121216矩阵(数组)操作函数(续)56稀疏矩阵矩阵的存储方式: 1.全元素(Full)存储——完全矩阵 2.稀疏(Sparse)存储——稀疏矩阵稀疏矩阵存在的必要性: 对大多数元素数值为0的矩阵,若采用满阵方式表示,则0元素将占用相当的存储空间。稀疏矩阵的特点: 只存储“非零元素”值(按列)和“非零元素”的位置
57对大多数元素数值为0的矩阵,创建稀疏矩阵稀疏矩阵建立指令sparse 1、B=sparse(A) 例23.>>A=[2000;0001;0400]A=200000010400>>B=sparse(A)B=(1,1)2(3,2)4(2,4)1一、稀疏矩阵的建立
>>C=[1234;5678;3729];C=123456783729>>B+Cans=3234567931129582、S=sparse(ir,jc,data,m,n)“三元组”表示法ir—非零元素所在的行序号jc—非零元素所在的列序号data—非零元素的数值m—矩阵的行n—矩阵的列稀疏矩阵的建立(续)
向量标量59例24.1500220-15011
3000S=000-600000000
91000000028000>>data=[15
91
11
3
28
22
-6-15];>>ir=[1
5
2
2
6
1
31];>>jc=[1
1
2
3
3
4
46];>>S=sparse(ir,jc,data,6,6)S=(1,1)15(5,1)91(2,2)11(2,3)3(6,3)28(1,4)22(3,4)-6(1,6)-15稀疏矩阵的建立(续)
>>full(S)ans=1500220-150113000000-6000000009100000002800060例25>>S=sparse([132],[124],[241],3,4)S=(1,1)2(3,2)4(2,4)1>>full(S)ans=200000010400稀疏矩阵的建立(续)
61在MATLAB命令行窗口中键入指令helpsparfun,可以得到稀疏矩阵运算函数列表稀疏矩阵的建立(续)
创建稀疏矩阵speye创建单位稀疏矩阵sprand创建均匀分布的随机数稀疏矩阵sprandn创建正态分布的随机数稀疏矩阵满阵和稀疏矩阵之间的转换sparse创建稀疏矩阵或者将满阵转变为稀疏矩阵full将稀疏矩阵转变为满阵find获取非零元素的索引向量稀疏矩阵的操作函数nnz获取矩阵的非零元素的个数nonzeros获取矩阵的非零元素向量nzmax获取矩阵的各个向量的最大长度spones将稀疏矩阵中的非零元素用数字1替代issparse判断输入参数是否为稀疏矩阵稀疏矩阵的常用函数621、speye(创建单位稀疏矩阵)speye(m,n)——在行、列相同位置上的元素值为“1”,其余位置上的元素值为“0”speye(m)——是speye(m,m)的简写。在对角线上的元素值为“1”,其余位置上的元素值为“0”例26:>>A=speye(3,4)A=(1,1)1(2,2)1(3,3)1>>full(A)ans=100001000010稀疏矩阵的建立(续)
>>B=speye(3,3)B=(1,1)1(2,2)1(3,3)1>>full(B)ans=100010001>>C=speye(3)C=(1,1)1(2,2)1(3,3)1>>full(C)ans=100010001632、find(获取矩阵非零元素的索引向量)——find(A)例27:>>S=sparse([132],[124],[241],3,4)S=(1,1)2(3,2)4(2,4)1>>find(S)ans=1611稀疏矩阵的建立(续)
>>full(S)ans=200000010400643、nonzeros(获取矩阵的非零元素向量)——nonzeros(A)例27:>>S=sparse([132],[124],[241],3,4)S=(1,1)2(3,2)4(2,4)1>>nonzeros(S)ans=241稀疏矩阵的建立(续)
>>full(S)ans=200000010400654、nnz(获取矩阵的非零元素的个数)——nnz(A)例28:>>S=sparse([132],[124],[241],3,4)S=(1,1)2(3,2)4(2,4)1>>nnz(S)ans=3稀疏矩阵的建立(续)
>>full(S)ans=200000010400665、nzmax(获取矩阵的各个向量的最大长度)——nzmax(A)例29:>>S=sparse([132],[124],[241],3,4)S=(1,1)2(3,2)4(2,4)1>>nzmax(S)ans=3稀疏矩阵的建立(续)
>>full(S)ans=200000010400676、spones(将稀疏矩阵中的非零元素用数字1代替)——spones(A)例30:>>S=sparse([132],[124],[241],3,4)S=(1,1)2(3,2)4(2,4)1>>A=spones(S)A=(1,1)1(3,2)1(2,4)1>>full(A)ans=100000010100稀疏矩阵的建立(续)
>>full(S)ans=200000010400687、issparse(判断输入参数是否为稀疏矩阵)——issparse(A):是,则ans为“1”否,则ans为“0”例31:>>S=sparse([132],[124],[241],3,4)S=(1,1)2(3,2)4(2,4)1>>issparse(S)ans=1>>A=[123;456];>>issparse(A)ans=0稀疏矩阵的建立(续)
69稀疏矩阵和普通矩阵(满阵)之间可以直接进行运算,运算结果是满阵
例32:>>A=[2000;0001;0400];>>S=sparse(A)S=(1,1)2(3,2)4(2,4)1>>A+S
ans=400000020800二、稀疏矩阵的运算
70稀疏矩阵和稀疏矩阵之间进行运算,运算结果是稀疏矩阵
例33>>B=[0030;1000;0500];>>T=sparse(B)T=(2,1)1(3,2)5(1,3)3>>S+T
ans=(1,1)2(2,1)1(3,2)9(1,3)3(2,4)1稀疏矩阵的运算(续)
>>full(S+T)ans=203010010900>>A+Bans=20301001090071字符串
创建字符串字符串由多个字符组成,是1×n的字符数组;每一个字符都是字符数组的一个元素,以ASCII码的形式存放并区分大小,而显示的形式则是可读的字符。创建字符串>>s1='matlab7.3's1=matlab7.372(1)直接赋值用单引号('')括起字符来直接赋值创建字符串。使用两个单引号('')输入字符串中的单引号>>s3='显示''matlab'''s3=显示‘matlab’(2)多个字符串组合>>str2=[s1;s2,'';s3]str2=matlab7.3字符串显示'matlab'
2.字符数组的存储空间MATLAB在存储字符串时,每一个字符以ASCII码的形式存放,占用两个字节。73字符串函数1.字符串合并strcat函数用于将字符串水平连接合并成一个新字符串,合并的同时会将字符串尾的空格删除。语法格式如下:strcat(s1,s2,…) %将s1,s2…合并成一个长字符串char(s1,s2,…) %将s1,s2…合并成一个字符数组strvcat(s1,s2,…) %将s1,s2…合并成一个字符数组742.字符串与数值的转换abs将字符串转换为ASCII码数值str2num将字符串转换为数值str2double将元胞字符串数组转换为数值3.字符串的其他操作MATLAB7.3还可以对字符串进行比较、查找、运行等操作。75例2-19使用字符串函数进行运算。>>str='a+b,c+d,'str=a+b,c+d,>>str1=strrep(str1,',','*2') %将,用*2替换str1=a+b*2>>a=5>>b=2>>eval(str1) %执行字符串str1ans=9>>str2=upper(str2) %将字符串转换为大写字母str2=C+D,76日期和时间
日期时间的表示格式MATLAB7.3以三种格式表示:日期字符串、连续的日期数值和日期向量,不同的日期格式可以相互转换。1.日期格式(1)日期字符串日期字符串是最常用的,有多种输出格式。例,“2007年1月1日”可以表示为:‘01-Jan-200708:50:10’、‘01-Jan-2007’、‘01/01/2007’、等。(2)连续的日期数值 733043(3)日期向量[yearmonthdayhourminutesecond]77日期时间函数1.获取系统时间date:按照日期字符串格式获取当前系统时间;now:按照连续的日期数值格式获取当前系统时间;clock:按照日期向量格式获取当前系统时间。2.提取日期时间信息分别使用year、month、day、hour、minute、second函数。3.日期时间的显示格式日期时间的显示可以使用datestr函数显示为字符串的样式。datestr函数的格式如下:datestr(d,f) %将日期按指定格式显示784.计时函数(1)cputime方法cputime是返回MATLAB启动以来的CPU时间:程序执行的时间=程序代码执行结束后的cputime-在程序代码执行前的cputime(2)tic/toc方法tic在程序代码开始用于启动的一个计时器;toc放在程序代码的最后,用于终止计时器的运行,并返回计时时间就是程序运行时间。(3)etime方法etime方法使用etime函数来获得程序运行时间,etime函数的命令格式如下:etime(t1,t0) %返回t1-t0的值79结构体和元胞数组
元胞数组元胞数组是常规数值数组的扩展,其基本元素是元胞,每一个元胞可以看成是一个单元(Cell),用来存放各种不同类型不同尺寸的数据,如矩阵、多维数组、字符串、元胞数组和结构体。元胞数组可以是一维、二维或多维,使用花括号({})表示,每一个元胞以下标区分,下标的编码方式也与矩阵相同,分为单下标方式和全下标方式。801.创建元胞数组(1)直接创建>>A={'cell1',[12;34];{[12],'matlab'},0:1:5}>>A(1,1)={'cell1'};>>A(1,2)={[12;34]};>>A(2,1)={{[12],'matlab'}};>>A(2,2)={0:1:5}>>A{1,1}='cell1';>>A{1,2}=[12;34];>>A{2,1}={[12],'matlab'};>>A{2,2}=0:1:5cell1,1cell1,2cell2,1cell2,2'cell1'012345123412'matlab'81例2-22使用cell函数创建元胞数组。>>A=cell(2,2) %创建空的元胞数组>>A{1,1}='cell1'(2)使用cell函数创建cell函数创建元胞数组的语法格式:A=cell(m,n) %创建m×n元胞数组82关系运算和逻辑运算
逻辑运算MATLAB7.3中逻辑型(logical)数据只有“1”和“0”,分别表示true和false两种状态,逻辑型变量只占1个字节。函数logical可以用来将数值型转换为逻辑型,任何非零的数值都转换为逻辑1,数值0转换为逻辑0。83关系运算MATLAB7.3常用的关系操作符有<、<=、>、>=、==(等于)、~=(不等于)。关系运算规则:如果比较的两个变量都是标量,则结果为1(true)或0(false);如果比较的两个变量都是数组,则必须尺寸大小相同,结果也是同样大小的数组;如果比较的是一个数组和一个标量,则把数组的每个元素分别与标量比较,结果为与数组大小相同的数组。84逻辑运算1.元素的逻辑运算元素的逻辑运算是将数组中的元素一一进行逻辑运算,常用的逻辑运算符:&(与)、|(或)、~(非)和xor(异或)。在逻辑运算中,非0元素表示true,0元素表示false。2.先决逻辑运算先决逻辑运算符有:&&(先决与)和||(先决或)。3.位逻辑运算位逻辑运算函数有:bitand(位与)、bitor(位或)、bitcmp(位非)和bitxor(位异或)。练习85运算符优先级各类运算符的优先级为:括号→算术运算符→关系运算符→逻辑运算符各符号优先顺序为:括号()→转置'.'幂^.^→一元加减+-逻辑非~→乘*.*除/./\.\→加减+-→冒号:→关系运算>>=<<===~=→元素逻辑运算与&→元素逻辑运算或|→先决逻辑运算与&&→先决逻辑运算或||86matlab语言把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的。f(x)=anxn+an-1xn-1+……+a0
可用行向量p=[anan-1……a1a0]表示poly——产生特征多项式系数向量特征多项式一定是n+1维的特征多项式第一个元素一定是1多项式运算87例:a=[123;456;780];p=poly(a)p=1.00-6.00-72.00-27.00p是多项式p(x)=x3-6x2-72x-27的matlab描述方法,我们可用:p1=poly2str(p,‘x’)—函数文件,显示数学多项式的形式p1=x^3-6x^2-72x-27882.roots——求多项式的根a=[123;456;780];p=poly(a)p=1.00-6.00-72.00-27.00r=roots(p)r=12.12-5.73——显然r是矩阵a的特征值-0.3989当然我们可用poly令其返回多项式形式p2=poly(r)p2=1.00-6.00-72.00-27.00matlab规定多项式系数向量用行向量表示,一组根用列向量表示。903.conv,convs多项式乘运算例:a(x)=x2+2x+3;b(x)=4x2+5x+6;c=(x2+2x+3)(4x2+5x+6)a=[123];b=[456];c=conv(a,b)=conv([123],[456])c=4.0013.0028.0027.0018.00p=poly2str(c,'x')p=4x^4+13x^3+28x^2+27x+18914.deconv多项式除运算a=[123];c=[4.0013.0028.0027.0018.00]d=deconv(c,a)d=4.005.006.00[d,r]=deconv(c,a)余数c除a后的整数925.多项式微分matlab提供了polyder函数多项式的微分。命令格式:polyder(p):求p的微分polyder(a,b):求多项式a,b乘积的微分[p,q]=polyder(a,b):求多项式a,b商的微分例:a=[12345];poly2str(a,'x')ans=x^4+2x^3+3x^2+4x+5b=polyder(a)b=4664poly2str(b,'x')ans=4x^3+6x^2+6x+493代数方程组求解matlab中有两种除运算左除和右除。对于方程ax+b,a为an×m矩阵,有三种情况:当n=m时,此方程成为“恰定”方程当n>m时,此方程成为“超定”方程当n<m时,此方程成为“欠定”方程matlab定义的除运算可以很方便地解上述三种方程941.恰定方程组的解方程ax+b(a为非奇异)x=a-1
b矩阵逆两种解:x=inv(a)
b—采用求逆运算解方程x=a\b—采用左除运算解方程95方程ax=ba=[12;23];b=[8;13];
x=inv(a)*b
x=a\bx=x=2.002.003.003.00
=
ax=b例:x1+2x2=82x1+3x2=13962.超定方程组的解方程ax=b,m<n时此时不存在唯一解。方程解(a'a)x=a'bx=(a'
a)-1a'b——求逆法x=a\b——matlab用最小二乘法找一个准确地基本解。
97例:x1+2x2=12x1+3x2=23x1+4x2=3a=[12;23;34];b=[1;2;3];解1x=a\b解2x=inv(a'
a)
a'
b
x=x=1.001.0000.00
=
ax=b983.欠定方程组的解
当方程数少于未知量个数时,即不定情况,有无穷多个解存在。matlab可求出两个解:用除法求的解x是具有最多零元素的解是具有最小长度或范数的解,这个解是基于伪逆pinv求得的。99x1+2x2+3x3=12x1+3x2+4x3=2a=[123;234];b=[1;2];x=a\bx=pinv(a)
bx=x=1.000.8300.330-0.17=ax=b100编程基础MATLAB的工作模式指令驱动模式通常MATLAB以指令驱动模式工作,即在MATLABM命令行窗口下用户输入单行指令时,MATLAB立即处理这条指令,并显示结果,这就是MATLAB命令行方式。命令行方式程序可读性差,而且不能存储,当处理复杂问题和大量数据时很不方便。M文件模式将MATLAB语句构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。程序文件不能在指令窗口下建立,因为指令窗口只允许一次执行一行上的一个或几个语句。101
MATLAB通过M语言来实现完整的编写应用程序的能力
M语言
M语言是一种解释性语言,利用该语言编写的代码仅能被MATLAB接受,被MATLAB解释、执行。
M语言文件可以分为脚本文件和函数文件
一个M语言文件就是由若干MATLAB的命令组合在一起构成的。
M语言文件是标准的纯文本格式的文件,其文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黑土坡治理施工方案
- aq2006尾矿库安全技术规程
- 玻璃桥维护施工方案
- 2025年兰考三农职业学院单招职业倾向性测试题库审定版
- 2025年黄河交通学院单招职业适应性测试题库及参考答案
- 2025年重庆市乐山市单招职业适应性测试题库带答案
- 2025年大庆医学高等专科学校单招职业适应性测试题库参考答案
- 2025年哈尔滨传媒职业学院单招职业技能测试题库新版
- 5 g k h 教学设计-2024-2025学年语文一年级上册统编版
- 环境科学与工程环境保护法规及案例分析试卷解析
- 2023年北京语言大学新编长聘人员招聘笔试真题
- 15J403-1-楼梯栏杆栏板(一)
- 4.2 歌曲 《小小少年》课件(8张)
- 武汉版生命安全教育一年级-第19课《做好“四勤”防疾病》课件
- 小学教案、作业常规检查方案
- 2024教培合作简单协议书
- 公司集团保安服务 投标方案(技术方案)
- 2024年中级纤维检验员职业鉴定考试题库(含答案)
- 水利水电工程单元工程施工质量验收评定表及填表说明
- YYT 0661-2017 外科植入物 半结晶型聚丙交酯聚合物和共聚物树脂
- 人教版版五年级数学下册 第二单元综合测试卷
评论
0/150
提交评论