二[1].数值数组及其运算(matlab)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.2.2 二维数组元素的标识
1.“全下标”标识 “全下标”标识由两个下标组成,即行下标和列 下 标,一个m×n的数组A的第i行第j列的元素表示为 A(i,j)。 注意: 1)如果在提取数组元素值时,数组元素的下标行 或列(i,j)大于数组的大小(m,n),则MATLAB会 提示出错; 2)而在给数组元素赋值时,如果行或列(i,j)超出 数组的大小(m,n),则MATLAB自动扩充数组,扩
2.1一维数组的创建和寻访
●
数学计算是MATLAB强大计算功能的体现。MATLAB的数学 计算分为数值计算和符号计算,其中符号计算是指使用 未定义的符号变量进行运算,而数值计算不允许使用未 定义的变量。 数值数组(Numeric Array)和数组运算(Array Operations)始终是MATLAB的核心内容。
例2.7 利用M文件来生成数组
(1)选择菜单“File” “New” “M-file”,新建M 文 件。(文件名为MyMatrix.m) %MyMatrix.m 利用M文件来生成数组 M_Matrix=[0 1 2 3 4 5 6 7 8 9;... 10 11 12 13 14 15 16 17 18 19;... 20 21 22 23 24 25 26 27 28 29;... 30 31 32 33 34 35 36 37 38 39]; (2)保存文件,命名为MyMatrix.m。 (3)在指令窗中输入MyMatrix,回车后生成数组 M_Matrix。
演示
2.2.1 二维数组的创建
1. 直接输入法 (1)整个数组元素应用方括号([])括住; (2)每行内的元素间用逗号或空格隔开; (3) 行与行之间用分号或回车键隔开; (4)元素可以是数值或表达式。
例2.6 创建二维数组
a = 2 ; b = pi ; %给变量a、b赋值 c = [ 1 a+b*i ; sqrt(a) , sin(b) ] %创建二维数组c %M_r =[ 1 2 ; -1 1 ] , M_i = [5 , 3 ; 7 , 3 ] ; %创建二维数组M_r,M_i %M = M_r + i * M_i %以M_r、M_i为实部和虚部构造复数数组M
A = [ 1 4 7 ; 2 5 8 ; 3 6 9 ];
a5=A([1 3;2 6]) %取单下标为1、3、2、6的元素构成子数组 %a5(2×2) %a6=A([1 3 2 6]) %取单下标为1、3、2、6的元素构成子数组 %a6 (1×4) %L1=logical([1 0 1])
演示
2.2.3 二维数组子数组的寻访和赋值(续)
A=[1 2 0;3 4 0;5 6 9] %a1=A([1 3],[2 3]) %a2=A(1:3,2:3) %a3=A(:,3) %取所有行数即为1~3,列数为3的元素构成子 %数组a3,“:”表示所有行或列。 %a4=A(end, :) %取所有列,最后一行的元素构成子数组a4, %用“end”表示某一维 %数中的最大值,即 %3。
演示
逗号(,)和分号(;)的不同作用
在数组中——逗号分隔同一行中的各个 元素,分号分隔不同的行; 在指令行——逗号结尾的运行结果要显 示,分号结尾的运行结果不显示。
2.2.1 二维数组的创建(续)
2. 利用M文件中创建和保存数组 对于需要经常用到的,比较大的和复杂 的数组,可以专门建立一个M文件来创建 和保存数组。
演示
MATLAB内建数据类型
数值数组(Numeric Array) 字符串数组(Character Array) 元胞数组(Cell Array) 构架数组(Struct Array)
数据类型查询:
工作空间浏览器(Workspace) who,whos 指令 Class指令
例2.3子数组的寻访,利用下标进行寻址
x=[1 2 3 4 5] %逐个赋值法生成一维数组 x %x( [ 1 2 5 ] ) %依序取出 x 中第1、2、5个元素 %x( 3 : end ) %依序取出x中第3个到最后一个元素 %x( 3 : -1 : 1 ) %依序取出x中第3、2、1个元素
演示
2.2.3 二维数组子数组的寻访和赋值
1.子数组的产生 子数组是从对应数组中取出一部分元素 构成,用全下标和单下标方式取子数组。
(1)用全下标方式 A(r,c) 由A的“r指定行”和“c指定列”上的元 素组成 A(r,:) 由A的“r指定行”和“全部列”上的元素 组成
2.2.3二维数组子数组的寻访和赋值(全下标方式)
2.子数组的赋值 (1)全下标方式 A(r,c)=Sa 给A的子数组A(r,c)赋值, 则Sa的行列数必须等于 A(r,c)的行列数。
2.2.3二维数组子数组赋值(全下标方式)
A=[1 2 3 ;2 3 4;3 4 5] %直接生成3×3数组 %A(1:2,1:3)=[1 1 1;1 1 1] %给第一、二行元素赋值为全1
全下标、单下标转换函数: sub2ind 由全下标得到单下标(Linear index) ind2sub 由单下标得到全下标(Multiple subscripts)
例2.8 全下标和单下标的转换
A = [ 1 4 7 ; 2 5 8 ; 3 6 9 ] %输入二维数组A,元素值等于单下标 %ind = sub2ind ( size(A) , 2 , 3 ) %求第 2 行第 3 列的单下标ind %A(ind) %取出数组A中第 ind 个元素 %[ i , j ] = ind2sub ( size (A) , 5 ) %求第 5 个元素的全下标
2.2 二维数组的创建和寻访
二维数组结构和矩阵相同,当带线 性变换的含义时,数组就是矩阵。
例2.5 二维数组的基本操作
A = [ 1 2 3 ; 4 , 5 , 6 ]; %输入二维数组A B = [ 1 2 4 ; 8 16 32 ]; %输入二维数组B %C = A + B %二维数组C的元素等于A、B对应元素的和 %D = log2 ( B ) %对B的每个元素求以 2 为底的对数构成数 %组D
2.2.2 二维数组元素的标识
A=[1 2;3 4;5 6] %A(3,3) %提取A(3,3)的值 %A(3,3)=9 %给A(3,3) 赋值
演示
2.2.2 二维数组元素的标识(续)
2. “单下标”标识
只用一个下标来指明元素在数组中的位置。先把数组 的所有列按先左后右的次序连接成“一维长列”,然后对 元 素位置进行编号,即为该数组的单下标。 对于m×n的二维数组A,若元素A(i,j)则对应的“单 下标”为s= (j-1)×m+i。
二.数值数组及其运算
数值数组及其运算
一维数组的创建和寻访 二维数组的创建和寻访 执行数组运算的常用函数 数组运算和矩阵运算 标准数组生成函数和数组操作函数 高维数组 “非数”和“空”数组
数值数组及其运算(续)
关系操作和逻辑操作 关系操作符和逻辑操作符 运算符的优先级 关系、逻辑函数 ■多项式
■
2.1.1 一维数组的创建(续)
x1=linspace(0,2*pi,5) %从0到2*pi等分成5个点 %x2=logspace(0,2,3) %从1到100对数等分成3个点
演示
2.1.2 一维子数组的寻访和赋值
子数组寻访取决于x(index)中的下标; 下标index可以是单个数值或数组,但是 index的元素取值必须在[1,end]的范围 内,end为数组最大下标; 子数组赋值时,被赋值的子数组长度应 与送入的数组长度一致。
演示
2.2.3 二维数组子数组的寻访和赋值(续) (2) 用单下标方式: A(:) 由A的各列按自左至右的顺序首尾 相接生成“一维长列”数组 A(s) 生成“s指定的”一维数组 A(L) 由与A同样大小的“逻辑数组”L 中 的“1”元素选出A的对应元素组成 列数组
2.2.3二维数组子数组的寻访和赋值(单下标方式)
2.2.2 二维数组元素的标识(续)
4.判断数组维数和大小 ndims 判断数组维数 size 判断数组大小
如:对上例中的数组A >> An=ndims(A), As=size(A) An = 2 As = 2 5 注意:数组的长度是指数组最长维的长度,可用指令length(A) 获得。 length(A)=max(As) length(As)=An 表示数组A大小的行数组的长度等于数组A的维数
例2.4
子数组的赋值
演示
x = zeros( 1 , 5 ) %构造 1 * 5 的全零数组 x x( 1 ) = 0.5 %数组 x 的第 1 个元素赋值 0.5 x( 2 : 5 ) = pi ./ ( 2 : 5 ) %数组x的第2个到第5个元素赋值为π/n %x([1,4])=[1,0] %数组x的第1个,第4个元素赋值为1,0
演示
2.2.3 二维数组子数组的寻访和赋值(续)
ຫໍສະໝຸດ Baidu
例2.2 基本数据类型
clear v=2000; v_s=size(v); n='green'; n_s=size(n); house={v;n} %1*1数值数组 %数值数组的大小 %字符串数组 %字符串数组的大小 %元胞数组
演示
2.1.1 一维数组的创建
逐个元素生成法 冒号生成法
通用格式为:x=a : inc : b 冒号不能省,且必须在英文状态下输入; 步长inc可取正数或负数,缺省时默认值为1。
注意:
逻辑数组和数值数组的区别: 对于具有相同结构的逻辑数组L和数值数组Lx,则有 Class(L)=double islogical(L)=1 Class(Lx)=double islogical(Lx)=0 在内存浏览器中显示两者Size和Bytes相同,但Class略 有不同: L: double array(logical) Lx: double array 同时,无法利用Lx进行寻址。 Ax=A(Lx)不合法。
数组是指由一组实数或复数排成的长方阵列。它可以是 一维的“行”或“列”,可以是二维的“矩形”,也可 以是三维的“若干同维矩形的堆叠”,甚至更高的任意 维。
数组运算是针对参与运算的数组中的每个元素(element)
例2.1 一维数组的基本操作
A=[1 3 2 -1 2 5 7]; %逐个元素赋值构造一维数组 Amax=max(A) %求数组元素的最大值 Asum=sum(A) %L=A>0 %求数组元素的和
演示
2.2.2 二维数组元素的标识(续)
3. “逻辑1”标识 为了寻找数组中满足某一条件的元素的位 置,可利用逻辑运算产生逻辑数组(Logical Array)来标识。 逻辑数组是大小和对应数组相同,而元素值 为0或者1的数组。 可以用A(L1,L2)来表示子数组,其中L1、L2 为逻辑向量,当L1、L2的元素为0则不取该位置 元素,反之则取该位置的元素。
例2.9 由数组的逻辑运算得出逻辑数组
A=zeros(2,5); %生成2*5的全零数组A %A(:)= - 4:5 %对A的元素进行赋值 %L=A>-2&A<4 %寻找A中大于-2小于4的元素,以逻辑0-1表 %示 %islogical(L) %判断数组L是否逻辑数组
演示
例2.9 由数组的逻辑运算得出逻辑数组(续)
■
2.1.1 一维数组的创建
%逐个元素输入法 x=[1 2+i,-3.01 sin(pi/2)] %冒号生成法 %x=1 : 0.1 : 1.5 %x=5:-1:-2.5 %x=1:10.5 %x=2:-1:3
演示
2.1.1 一维数组的创建(续)
■
定数线性采样法 通用格式为:x=linspace(a,b,n) 1)a、b、n三个参数分别表示开始值、结束值和元素个数。 2)生成从a到b之间线性分布的n个元素的行向量,n如果省略则默 认值为100。 定数对数采样法 通用格式为:x=logspace(a,b,n) 1)a、b、n三个参数分别表示开始值、结束值和元素个数。 2)生成从10的a次方到10的b次方之间按对数等分的 n个元素的行 向量,n如果 省略则默认值为50。