matlab数组和数组运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

循环轮换。第二个参数为正的话,进行各维的循环轮换;第二个参数为负的情况下,将 使数组的维数增加 多维数组的转置和取消转置操作 返回数组各维的大小 分别返回数组的行数、列数和页数
获取数组的维数 获取数组的元素总个数
2013年7月26日
21
• 常量:MATLAB中有些预定义的 变量,这些特殊的变量称为常量。 常用到的有: i,j: 虚数单位; pi: π; NaN: 表示不定值,比如0/0; inf: 无穷大(infinit),比如 1/0。
2013年7月26日
16
冒号操作符裁剪数组
冒号裁剪符的使用方法是: Z=A([,,…],[,,…]) 该式子表示的是提取数组A的,…等行,,…等列, 组成一个新的数组。此外,在数字索引访问数组的 时候,当某一索引值的位置上不是数字,而是冒号 的话,则表示取这一个索引位置的所有数组元素。 比如对一个3行3列的数组A,A(1,:)表示取数组A的 第一行所有元素。 也可以通过数组编辑器来裁剪数组
2013年7月26日 17
数组元素的删除
删除数组元素,可以通过将该位置的数组元素赋值 为空方括号([])即可,一般配合冒号使用,将数组中的 某些行、列元素删除。不过需要注意的是,在进行数 组元素的删除时,索引结果必须是完整的行或列,而 不能是数组内部的块或者单元格。
2013年7月26日
18
多维数组
三、数组和数组运算
• • • • • • • 数组的创建方法 数组的查找 数组寻址 数组排序 数组运算 数组的扩展与裁剪 多维数组及其操作
1
2013年7月26日
数组的创建方法(1/3)
• 一维数组的创建 • 要想在MATLAB 中创建一个一维数组,用 户只需先输入一个左方括号,然后输入每 个数值并用逗号(或者空格)隔开,最后 用一个右方括号结束。 • 常用等差、等比数组的创建方法。
2013年7月26日 6
数组排序
• 在很多时候我们需要对一个给定的数据向量进行排序。为 完成这一操作,MATLAB 提供了 sort 函数,该函数将任 意给定的序列进行排序。 • sort 函数的调用格式有:
– – – – B = sort(A) B = sort(A,dim) B = sort(...,mode) [B,IX] = sort(...)
2013年7月26日 26
(9)矩阵对数运算:logm(A),A为 方阵。 如:a=rand(3); %成生一个3阶 随机矩阵 b=expm(a) c=logm(b)
2013年7月26日
27
(10)矩阵开方:sqrtm(a). (11)求矩阵呢的秩:rank(a). • 特殊矩阵的生成: (1)zeros(n):生成 n×n阶0矩阵。 (2)zeros(m,n):生成 m×n阶0矩 阵。 (3)zeros(size(a)):生成与a阶数 相同的0矩阵。
2013年7月26日
2
数组的创建方法(2/3)
• 二维数组的创建 • 创建二维数组与创建一维数组的方式类似。 在创建二维数组时,用逗号或者空格区分 同一行的不同元素,用分号或者软回车 (Shift + Enter)区分不同行。
2013年7月26日
3
数组的创建方法(3/3)
• 用其他方式生成数组
– 等差数组的生成
reshape(B,2,3,3) reshape(B,[2,3,3]) 将一个数组变形为一个任意维数的数组 将一个数组复制成一个任意维数的数组 沿着一个指定的维将数组连接起来 repmat(C,[1,1,3] cat(3,a,b,c) squeeze(D) sub2ind(size(F),1,1,1) [r,c,p]=ind2sub(size(F),19) flipdim(M,1) shiftdim(M,2) permute(M,,[2,1,3]) ipermute(M,,[2,1,3]) size(M) [r,c,p]=size(M) r=size(M,1) c=size(M,2) p=size(M,3) ndims(M) numel(M) 删除大小等于1的维,也就是单一维 将下标转化为单一索引值,或将单一索引值转化为下标 沿着一个指定的维轮换顺序。等效于二维数组中的 flipud 和 fliplr
2013年7月26日 24
(3)矩阵与常数间的运算:+、-、 *运算是数与矩阵的每个元素进行 运算,除法运算,只能常数做除 数。 (4)矩阵求逆:inv(A)为A的逆 (inverse).
2013年7月26日
25
(5)求转置矩阵:A'. (6)求矩阵的行列 式:det(A) ,(determinant是行 列式)。 (7)矩阵幂运算:用^.如A^3,表示 A*A*A。 (8)矩阵指数运算:expm(A),A为 方阵。
15
cat函数扩展数组
cat系列函数包括:cat,horzcat和vertcat。不管哪个连接函 数,都必须保证被操作的数组可以被连接,即在某一个方向上 尺寸一致。 cat函数 语法:Z=cat(dim,A,B,C,…) horzcat函数 语法:Z=horzcat(A,B,C…) vertcat函数 语法:Z=vertcat(A,B,C…)
2013年7月26日 12
Baidu Nhomakorabea组的扩展与裁剪
• • • • • 数组编辑器扩展数组 索引扩展数组 Cat函数扩展数组 冒号操作符裁剪数组 数组元素的删除
2013年7月26日
13
数组编辑器扩展数组
双击MATLAB界面工作区中的任一数组变量, 都能打开数组编辑器,对该数组进行编辑操 作
2013年7月26日
2013年7月26日
11
数组的关系运算
• 两个数之间的关系通常有6种描述:小于(<)、 大于(>)、等于(==)、小于等于(<=)、大 于等于(>=)和不等于(~=)。MATLAB 在比较 两个元素大小时,如果表达式为真,则返回结果1, 否则返回0。 • 在 MATLAB 中,可以通过关系运算符实现数组的 关系运算。返回结果为一个数组,结果数组的元 素为0或者1,由相互比较的两个数组的相应元素 的比较结果决定。
– 底为数组,指数为标量的形式。这种形式的结果是将 数组的每个元素进行指数相同的乘方。返回的结果为 与底维数相同的数组,结果数组的每个元素为底中相 应元素的乘方。 – 底为标量,指数为数组的形式。该形式返回的结果为 数组,维数与指数数组相同。结果数组的每个元素为 底以指数数组相应元素为指数做乘方的结果。 – 底和指数都是数组的形式。此时两个数组需要有相同 的维数。返回结果为一个数组,维数与前面两个数组 相同,每个元素为底数数组和指数数组做乘方的结果。
2013年7月26日 31
例 s=1:12; c=zeros(3,4); c(:)=s(:); %符号“:”表示 变维操作,这两个矩阵必须预先 定义维数,结果c取的是s的元素。
2013年7月26日 28
(4) eye(n):生成 n阶单位矩阵。 (5) eye(m,n):生成 m×n阶单位 矩阵。 (6) eye(size(a)):生成与a阶数 相同的单位矩阵。 (7) ones(n):生成 n阶全1矩阵。 (8) ones(m,n):生成 m×n阶全1 矩阵。
2013年7月26日 29
(9) ones(size(a)):生成与a阶数 相同的全1矩阵。 (10)rand(n):生成 n×n阶随机矩 阵,其元素值在0和1之间。 (11)rand(m,n):生成 m×n阶随机 矩阵。 (12)rand:生成一个随机数。
2013年7月26日 30
(13)rand(size(a)):生成与a阶 数相同的随机矩阵。 矩阵的特殊操作: (1)变维操作reshape(a,m,n):把 矩阵a变成n×n阶矩阵。如 a=1:12,reshape(a,2,6), reshape(a,3,4)。注意变维操作 要保证元素个数一致。
14
索引扩展数组
索引扩展是数组扩展中较为常用的一种方法。 比如目前有一个n行m列的数组A,要通过索 引来扩展该数组,那么可以使用超出目前数 组尺寸的索引数字,来制定数组A当前尺寸 之外的一个位置,并对该位置的数组元素进 行赋值来完成对数组的扩展。同时未指定的 新添位置上默认赋值为0。
2013年7月26日
2013年7月26日 22
(2)向量与数可以加、减。用+、 -。数与向量的每个元素进行作用。 (3)向量与数可以相乘。用*。 (4)向量与数可以相除。向量/数, 数./向量。 (5)两个向量点积。必须是同维 向量。用dot(a,b)。
2013年7月26日 23
(6)两个向量叉积。 cross(a,b),a,b必须有是3维且次 序不能颠倒,。 (7)混合积。由以上两个函数实现。 dot(a,cross(b,c)) • 矩阵的生成: (1)直接输入:如:a=[1,3,4;4,3,2].
2013年7月26日
5
数组寻址
• 数组中总是包含多个元素,因此在对数组的单个 元素或者多个元素进行访问时,需要对数组进行 寻址运算。 • 在 MATLAB 中,数组寻址是通过对数组下标的访 问来实现的。 • 如果需要访问数组种的多个数据,可以通过下标 数组进行 • 当下标数组为利用冒号表示的等差数组时,可以 省略下标数组的中括号。
– 数组的数值运算
• 数组的加减法 • 数组的乘除法 • 数组的乘方
– 数组的关系运算 – 数组
2013年7月26日
8
数组的加减法
• 数组加减法为数组元素的加减法,与矩阵 加减法相同。利用运算符“+”和“-”实现该 运算。需要注意的是相加或相减的两个数 组必须有相同的维数,或者是数组与数值 相加减。
• 其中的 B 为保存结果的数组;A 为待排序的数组,当 A 为多维数组时,用 dim 指定需要排序的维数(默认为1); mode 为排序的方式,可以取值“ascend”和“descend”, 分别表示升序和降序,默认为升序;IX 用于存储排序后的 下标数组。
2013年7月26日 7
数组运算
• 内容:
2013年7月26日 19
多维数组的创建
• 多维数组无法像一维数组和二维数组那样 一次输入全部值。因此需要借助一些函数 来生成多维数组。 1. 利用标准数组函数生成多维数组。 2. 利用直接索引方式生成数组 3. 通过 cat 函数创建多维数组
cat 函数用于连接数组。
2013年7月26日
20
多维数组运算
在 MATLAB 中,可以利用冒号生成等差数组。格式 为:数组名=[开始数字:公差:结束数字],公差默认 为1。
– 用数组生成函数生成数组
• eye:生成单位矩阵 • linspace:生成线性分布的向量 • rand:生成随机数组,数组元素值均匀分布
2013年7月26日 4
数组的查找
数组的查找函数是find,它能够查找数组中的非零 数组元素,并返回其数组索引值。 find函数在MATLAB中的使用语法形式: (1) a=find(A)返回数组A中非零元素的单下标索引 (2)[a,b]=find(A)返回数组A中非零元素的双下标索引 放方式。
2013年7月26日
9
数组的乘除法
• 数组乘除为元素的乘除,通过运算符“.*” 和“./”来实现。运算时需要两个数组有相同 的维数,或者数组与数值相乘除。 • 注意:在进行除法操作时,作为分母的数 组中不能包含 0 元素。
2013年7月26日
10
数组的乘方
• 数组乘方用符号“.^”实现。数组乘方运算以三种 方式进行。
• 从 MATLAB 5开始,MATLAB 开始支持多 维数组。MATLAB 对多维数组的操作与一 维和二维数组相同。目前,对于多维数组, 最常用的为三维数组。三维数组在图像处 理中有着非常广泛的应用。 • 三维数组的第三维称为“页”,即一个三 维数组由行、列和页组成,其中每一页包 含一个由行和列构成的二维数组,并且每 一页的二维数组必须有相同的维数。
函数 ones(r,c,…) oeros(r,c,…) rand(r,c,…) randn(r,c,…) 描述 创建多维数组的基本函数,分别用于创建全1、全0、随机均匀分布数组和随机正态分布 数组
• 多维数组的基本运算与一维数组和二维数组相 同,另外有一些操作仅可以用于多维数组,多 维数组中的一些常用函数如表所示。
相关文档
最新文档