




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章数据结构及其运算内容简介2.1数据类型2.2一维数组2.3二维数组2.4高维数组2.5数组操作2.6数组运算与矩阵运算2.7多项式2.8关系运算、逻辑运算和运算符2.9字符串数组2.10细胞数组2.11结构体数组★★★★★★★★Matlab里共有六种基本数据类型,每一种类型可以构成一维、二维和多维的数组。双精度型(double):双精度数值类型,是最常用的类型;字符型(char):字符数组,每个字符占16位;稀疏型(sparse):双精度稀疏矩阵,只存储矩阵中的非0元素;细胞型(cell):可以存放任意类型数据;结构体(struct):不同类型的数据集合;存储型(storage):用于图像处理。2.1数据类型数组(Array)可以是一维的行(或列),也可以是二维或多维的。用户可以操作整个数组,也可以操作数组中的某个或者某些元素。以下函数可以查看变量的数据类型:isa(a,’type’)变量a的数据类型名称如果是type,则返回1,否则返回0。class(a)返回变量a的数据类型名称。whosa查看变量a的详细情况。2.2一维数组逐个元素输入法冒号运算符法线性分隔法对数分隔法
一维数组的创建冒号运算符的格式是:startv:step:endvStartv:数组的第一个元素值;Endv:数组的最后一个元素值;Step:步长,即数组元素每次增加的值,可正可负,缺省默认步长为1。说明线性分割法linspace函数的调用格式为:x=linspace(a,b,n)数组的第一个元素值为a,最后一个元素值为b,数组中共有n个元素,这n个元素线性均匀分布于a和b之间,即数组元素依次为:说明对数分割法logspace函数的调用格式为:x=logspace(a,b,n)数组的第一个元素值为,最后一个元素值为,数组中共有n个元素,这n个元素的以10为底的对数值均匀分布与a和b之间,即数组元素依次为1` 说明formatlonglogspace(1,10,10)logspace(1,10,10)linspace(1,1.0001,10)formatlonglinspace(1,1.0001,10)注意比较下列语句执行结果的区别MATLAB使用双精度执行所有的计算。使用format函数可以控制显示数据结果的格式;但并不影响计算及存储的方式。MATLAB输出格式默认值为5位刻度的固定点值,即等同于formatshort。formatlong
输出格式为15位。可以用下标方式访问数组元素。下标要用一对圆括号()引起来;下标可以是常量,也可以是变量。一维数组的访问可以访问数组中的单个元素,也可以访问数组中的某些元素,即数组的子数组。例2.2.12.3二维数组二维数组的创建逐个输入数组元素值;利用M文件。1.逐个输入数组元素值如果数组内元素数量少,可以直接从键盘逐个输入元素的值,需要遵循的规则是:整个数组必须用中括号“[]”括起来;数组的行与行之间用分号“;”分隔,或者用回车符分隔;每行之间的元素必须用逗号“,”或者空格分隔;分隔符必须在英文状态下输入。即在英文状态下输入分号、括号、方括号、逗号等。说明用M文件实现对数组x的输入和保存,方法如下:在当前目录下,用程序(M文件)编辑器建立一个名为MyData.m的文件;在编辑器中输入x内容;保存MyData.m文件;在命令窗口键入MyData,就可以在内存中建立数组x并读入数组元素的值。2.利用M文件例2.3.2二维数组的访问访问时可以用单下标也可以用双下标;双下标方式访问:格式为(r,c),其中r为二维数组的行下标,c为列下标,下标之间用逗号分隔;单下标方式访问:按照列优先规则排序的,即二维数组被看作是从第一列开始从左到右依次将各列首位连接而成的一维数组,单下标表示元素在这个一维数组中的位置;单下标和双下标具有对应关系,其值可以通过ind2sub和sub2ind函数进行转换;可以访问二维数组的某个元素及其子数组,可以对元素和子数组赋值。单下标和双下标具有对应关系列优先例2.3.3试一试某一维长度为0的数组称为空数组;空数组用[]表示,表示数组中没有元素,但可以表示计算结果为“空”;仅仅能用isempty函数正确判断数组是否为空;可以通过给数组元素赋值空数组来缩小数组的大小;尽量不要用空数组参与逻辑运算和关系运算。说明有关空数组另外一些数组的产生方法例2.3.3.1试一试2.5数组操作标准数组的生成在Matlab中有相应的函数用来生成全1数组、全零数组、对角阵等标准数组。1.ones功能:生成全1数组,即数组中的元素都为1。格式:
Y=ones(n)生成n×n的全1矩阵
Y=ones(size(A))生成和数组A同样尺寸的全1数组
Y=ones(m1,m2,…,mk)生成m1×m2×…×mk维的全1数组2.zeros功能:生成全0数组,即数组中的元素都为0。格式:同ones函数3.rand功能:生成均匀分布随机数组。格式:同ones函数3.5randi功能:生成[imin,imax]内各整数均匀分布的m
n维随机数组。格式:randi([imin,imax],m,n)4.randn功能:生成正态分布随机数组。格式:同ones函数Exercise1
Weneedrandomintegersinthisproject.Let'sdosometestsontherandi()function.Generate10000randomintegersbetween1and10.Plotahistogramofthem.Dothesediceseemfair?)bar(m);%Plotahistogramofthem试一试5.magic功能:产生两维魔方矩阵。格式:M=magic(n) 产生n×n的对角线元素之和相等的矩阵6.eye功能:产生二维单位矩阵。格式:
Y=eye(n)产生n×n单位阵
Y=eye(n,m)产生n×m单位阵
Y=eye(size(A))产生规模如A的单位阵Y=eye(m,n,classname)classname是字符串,表示元素的数据类型名称,可取'double','single','int8','uint8','int16','uint16','int32','uint32','int64','uint64'。16位无符号数16位带符号数b=eye(3,4,'int8')*(-1000)
观察b的显示结果最大数据b=eye(3,4,'uint8')*(300)b=eye(3,4,'int8')*(-10)b=eye(3,4,'uint8')*(30)试一试7.diag功能:产生对角阵,即矩阵的某个对角线元素不全为0,其他元素为0。格式:
X=diag(v,k)
生成length(v)+k阶方阵,并在第k条对角线放置元素v;
X=diag(v)
生成length(v)阶方阵,并在主对角线放置元素v;
v=diag(X,k)
返回方阵X的第k条对角线元素构成的列向量;
v=diag(X)
返回方阵X的主对角线元素构成的列向量。v为行向量,表示对角线元素;k为对角线位置。k=0表示主对角线;k>0表示在主对角线上方的第k条对角线;k<0表示在主对角线下方的第(-k)条对角线。说明X=diag(v,k)例2.5.1试一试数组操作包括数组的扩展、收缩、重排、元素交换和子数组访问等。可以通过两种方式实现:通过Matlab提供的运算符(逗号,分号,括号等)来实现;使用Matlab提供的数组操作函数。1.
cat功能:把大小相同的若干数组,沿着指定维的方向,串接成新数组。格式:C=cat(dim,A,B) C=cat(dim,A1,A2,A3,A4,...)说明A,B,A1,A2等为被串接数组,要求这些数组同维;dim表示串接方向,1表示行,2表示列,3表示页,以此类推。C=cat(dim,A,B)2.
fliplr功能:沿着垂直中线,左右(Left-Right)对称交换数组元素(不超过2维);格式:B=fliplr(A)。功能:沿着水平中线,上下(Up-Down)对称交换数组元素(不超过2维);格式:B=flipud(A)。3.flipud4.
rot90功能:逆时针旋转二维数组。格式:B=rot90(A) 逆时针旋转矩阵90度
B=rot90(A,k) 逆时针旋转矩阵90*k度试一试对比一下旋转二维数组与矩阵转置。5.repmat功能:按指定维上的数目,分块铺放指定数组。格式:B=repmat(A,m,n) 沿着第1维铺放m个A,第2维铺放n个A。B=repmat(A,[mn])功能:在总元素不变的前提下,重新安排数组各个维的长度,形成新数组。格式:B=reshape(A,m,n)B=reshape(A,m,n,p,...)B=reshape(A,[mnp...])B=reshape(A,...,[],...)6.
reshape说明B=repmat(A,[mnp...])B=reshape(A,m,n,p,...)B=reshape(A,[mnp...])A是待重新安排的数组;m,n,p等是新数组各个维的长度;[]表示自动计算某个维的长度而无需用户指定。7.tril
功能:提取矩阵的下三角元素,生成下三角阵。格式:L=tril(X)L=tril(X,k)8.triu
功能:提取矩阵的上三角元素,生成上三角阵。格式:L=triu(X)L=triu(X,k)说明:X为待提取的矩阵;k为三角阵的分界线位置,含义同diag函数。例2.5.2试一试例2.5.32.6数组运算与矩阵运算数组运算Matlab数组运算是指对数组中的每个元素进行相同的运算。1.用数组运算符进行数组运算A+B,A-B 数组加减法运算。A.*B,A./B(A除以B)
A.\B
(
B除以A)数组相乘除,A和B相同位置元素的乘除后作为结果数组的元素。
A.^p
数组各元素求p次幂
A#B A、B数组对应元素间进行关系运算,#代表关系运算符
A@B A、B数组对应元素间进行逻辑运算,@代表逻辑运算符
A.′
数组转置,非共轭转置
s◎A
标量s与数组A运算,s与A的每个元素进行运算,◎代表某个运算符2.数组运算函数三角函数,指数对数函数,复数函数,取整函数。表2.6.2A+B 矩阵加法。A-B 矩阵减法。A*B 矩阵乘法,要满足维数要求,一般不符合交换律。A/B 矩阵右除,求xB=A的最小二乘解。A\B 矩阵左除,求Bx=A的最小二乘解。 A^p 矩阵乘方。矩阵运算A+B,A-B 数组加减法运算。A.*B,A./B(A.\B)数组相乘除,A和B相同位置元素的乘除后作为结果数组的元素。对比一下s*A 标量s与矩阵A相乘,标量s分别与A的每个元素相乘。expm(A) 矩阵的指数函数。inv(A) 矩阵的逆矩阵。说明点运算。在算数运算符前面加“.”代表运算是按照数组运算规则进行运算,否则是按照矩阵运算规则进行运算的。某个函数名字后加字母m。通常这两个函数的运算功能相同,只是加了m的函数按照矩阵运算规则运算,另外按照数组运算规则运算。例2.6.1试一试2.7多项式在MATLAB里,多项式用其系数行向量表示。多项式:表示为:多项式的创建直接输入法;poly(A)
若A为方阵,则创建方阵A的特征多项式;poly(a)
如果向量a=[bnbn-1…b1b0],则创建创建全部根为bn,bn-1,…,b1,b0对应的多项式。多项式的运算多项式加减:+-(同样长度)使用Matlab的运算符+-实现多项式的加减法;多项式相乘:
p=conv(p1,p2)p为多项式p1和多项式p2的乘积;多项式相除:
[q,r]=deconv(p1,p2)
多项式p1除以多项式p2,商多项式为q,余多项式为r。
dp=polyder(p)
多项式p的导数多项式为dpdp=polyder(p1,p2)
多项式p1和多项式p2乘积的导数多项式为dp[num,den]=polyder(p1,p2)
有理分式(p1/p2)的求导后的有理分式为 (num/den)多项式求导多项式求值
pA=polyval(p,A)
按数组运算规则求多项式p在自变量为A时的值。
MA=ployvalm(p,A)
按矩阵运算规则求多项式p在自变量为方阵A时的值。当自变量A为矩阵时,多项式中的常数项a0被当作a0*eye(n)处理。多项式求根:r=roots(p)
r为多项式p的根组成的列向量。部分分式分解:[r,p,k]=residue(num,den)
有理分式(num/den)部分分式分解后,r为留数,p为极点,k为直项。矩阵的特征多项式:
p=poly(A)
多项式p为矩阵A的特征多项式。例2.7.1逻辑值Matlab定义了逻辑值,包括“逻辑真”和“逻辑假”。在关系表达式和逻辑表达式中的输入中,任何非0数为“逻辑真”,只有0为“逻辑假”。关系表达式和逻辑表达式的计算结果是一个由0和1构成的“逻辑数组”(LogicalArray’),逻辑数组中“1”表示真,“0”表示假。2.8关系运算、逻辑运算和运算符逻辑数组属于“数值数组”的子类,它可以作为数值数组参与数值计算,也可以用于数组寻访等特殊场合。比如:用逻辑矩阵作为数组下标,可以提取数组中逻辑矩阵真值位置处的元素。关系运算符和逻辑运算符遵循数组运算规则。关系运算符
< 小于 <= 小于等于
> 大于 >= 大于等于
== 等于 ~= 不等于(教材有错)逻辑运算符
数组逻辑操作、位逻辑操作和先决逻辑操作。数组逻辑操作:
&逻辑与
|逻辑或
~逻辑非
xor逻辑异或。位逻辑操作函数(操作数必须是非负整型标量或者数组):
bitand位与
bitor位或
bitcmp位非
bitnor位异或先决逻辑运算符(要求操作数为标量):
&& 先决与。如果第一个操作数为假,则不判断其他操作数,直接给出结论“假”。
|| 先决或。如果第一个操作数为真,则不判断其他操作数,直接给出结论“真”。例2.8.1逻辑函数逻辑函数的运行结果是逻辑矩阵。any(v):
向量v中有非0元素,结果为1,否则为0;对矩阵的运算结果是行向量。all(v):
向量v中都是非0元素,结果为1。对矩阵的运算结果是行向量。isequal(A,B):
判断是否相等。ismember(A,B):
A的元素是B中元素,则A相应位置为1,否则为0。判断特殊数据的逻辑函数
isemptyisfiniteisinfisletterisnanisprimeisrealisspace。判断数据类型的逻辑函数
iscellischari
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电缆井施工考核试卷
- 纤维素纤维在食品包装材料中的应用考核试卷
- 罐头食品生产过程中的食品安全风险评估考核试卷
- 照明器具的热管理技术研究考核试卷
- 文化遗产保护与可持续旅游考核试卷
- 罐头食品企业人力资源规划与招聘策略考核试卷
- 木地板企业全面质量管理与持续改进考核试卷
- 电气设备电力系统综合自动化考核试卷
- 绿色编织工艺在环保生活用品考核试卷
- 婚姻稳定保障协议书:忠诚与责任承担
- 黄金白银投资宝典:一本书学会贵金属投资
- “双减”政策背景下小学生篮球运动发展 论文
- 苏教版四年级数学下册确定位置
- 公司基本情况介绍
- 异步电机矢量控制系统设计
- GB/T 29602-2013固体饮料
- 食品中天然有毒物质与食品安全精课件
- 小学统编版道德与法治一年级下册教材分析解读课件
- 信息经济学-信号传递:斯宾塞劳动市场模型课件
- 创伤急救-止血、包扎课件
- 猪肉品质及其营养调控
评论
0/150
提交评论