您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 大学课件 > 二数值数组及其运算matlab
二.数值数组及其运算数值数组及其运算一维数组的创建和寻访二维数组的创建和寻访执行数组运算的常用函数数组运算和矩阵运算标准数组生成函数和数组操作函数高维数组“非数”和“空”数组数值数组及其运算(续)关系操作和逻辑操作关系操作符和逻辑操作符运算符的优先级关系、逻辑函数■多项式2.1一维数组的创建和寻访●数学计算是MATLAB强大计算功能的体现。MATLAB的数学计算分为数值计算和符号计算,其中符号计算是指使用未定义的符号变量进行运算,而数值计算不允许使用未定义的变量。数值数组(NumericArray)和数组运算(ArrayOperations)始终是MATLAB的核心内容。数组是指由一组实数或复数排成的长方阵列。它可以是一维的“行”或“列”,可以是二维的“矩形”,也可以是三维的“若干同维矩形的堆叠”,甚至更高的任意维。数组运算是针对参与运算的数组中的每个元素(element)进行的。例2.1一维数组的基本操作A=[132-1257];%逐个元素赋值构造一维数组Amax=max(A)%求数组元素的最大值Asum=sum(A)%求数组元素的和%L=A0演示MATLAB内建数据类型数值数组(NumericArray)字符串数组(CharacterArray)元胞数组(CellArray)构架数组(StructArray)数据类型查询:工作空间浏览器(Workspace)who,whos指令Class指令例2.2基本数据类型clearv=2000;%1*1数值数组v_s=size(v);%数值数组的大小n='green';%字符串数组n_s=size(n);%字符串数组的大小house={v;n}%元胞数组演示2.1.1一维数组的创建逐个元素生成法■冒号生成法通用格式为:x=a:inc:b冒号不能省,且必须在英文状态下输入;步长inc可取正数或负数,缺省时默认值为1。2.1.1一维数组的创建%逐个元素输入法x=[12+i,-3.01sin(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。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.3子数组的寻访,利用下标进行寻址x=[12345]%逐个赋值法生成一维数组x%x([125])%依序取出x中第1、2、5个元素%x(3:end)%依序取出x中第3个到最后一个元素%x(3:-1:1)%依序取出x中第3、2、1个元素演示例2.4子数组的赋值x=zeros(1,5)%构造1*5的全零数组xx(1)=0.5%数组x的第1个元素赋值0.5x(2:5)=pi./(2:5)%数组x的第2个到第5个元素赋值为π/n%x([1,4])=[1,0]%数组x的第1个,第4个元素赋值为1,0演示2.2二维数组的创建和寻访二维数组结构和矩阵相同,当带线性变换的含义时,数组就是矩阵。例2.5二维数组的基本操作A=[123;4,5,6];%输入二维数组AB=[124;81632];%输入二维数组B%C=A+B%二维数组C的元素等于A、B对应元素的和%D=log2(B)%对B的每个元素求以2为底的对数构成数%组D演示2.2.1二维数组的创建1.直接输入法(1)整个数组元素应用方括号([])括住;(2)每行内的元素间用逗号或空格隔开;(3)行与行之间用分号或回车键隔开;(4)元素可以是数值或表达式。例2.6创建二维数组a=2;b=pi;%给变量a、b赋值c=[1a+b*i;sqrt(a),sin(b)]%创建二维数组c%M_r=[12;-11],M_i=[5,3;7,3];%创建二维数组M_r,M_i%M=M_r+i*M_i%以M_r、M_i为实部和虚部构造复数数组M演示逗号(,)和分号(;)的不同作用在数组中——逗号分隔同一行中的各个元素,分号分隔不同的行;在指令行——逗号结尾的运行结果要显示,分号结尾的运行结果不显示。2.2.1二维数组的创建(续)2.利用M文件中创建和保存数组对于需要经常用到的,比较大的和复杂的数组,可以专门建立一个M文件来创建和保存数组。例2.7利用M文件来生成数组(1)选择菜单“File”“New”“M-file”,新建M文件。(文件名为MyMatrix.m)%MyMatrix.m利用M文件来生成数组M_Matrix=[0123456789;...10111213141516171819;...20212223242526272829;...30313233343536373839];(2)保存文件,命名为MyMatrix.m。(3)在指令窗中输入MyMatrix,回车后生成数组M_Matrix。2.2.2二维数组元素的标识1.“全下标”标识“全下标”标识由两个下标组成,即行下标和列下标,一个m×n的数组A的第i行第j列的元素表示为A(i,j)。注意:1)如果在提取数组元素值时,数组元素的下标行或列(i,j)大于数组的大小(m,n),则MATLAB会提示出错;2)而在给数组元素赋值时,如果行或列(i,j)超出数组的大小(m,n),则MATLAB自动扩充数组,扩充部分以0填充。2.2.2二维数组元素的标识A=[12;34;56]%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。全下标、单下标转换函数:sub2ind由全下标得到单下标(Linearindex)ind2sub由单下标得到全下标(Multiplesubscripts)例2.8全下标和单下标的转换A=[147;258;369]%输入二维数组A,元素值等于单下标%ind=sub2ind(size(A),2,3)%求第2行第3列的单下标ind%A(ind)%取出数组A中第ind个元素%[i,j]=ind2sub(size(A),5)%求第5个元素的全下标演示2.2.2二维数组元素的标识(续)3.“逻辑1”标识为了寻找数组中满足某一条件的元素的位置,可利用逻辑运算产生逻辑数组(LogicalArray)来标识。逻辑数组是大小和对应数组相同,而元素值为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&A4%寻找A中大于-2小于4的元素,以逻辑0-1表%示%islogical(L)%判断数组L是否逻辑数组演示例2.9由数组的逻辑运算得出逻辑数组(续)注意:逻辑数组和数值数组的区别:对于具有相同结构的逻辑数组L和数值数组Lx,则有Class(L)=doubleislogical(L)=1Class(Lx)=doubleislogical(Lx)=0在内存浏览器中显示两者Size和Bytes相同,但Class略有不同:L:doublearray(logical)Lx:doublearray同时,无法利用Lx进行寻址。Ax=A(Lx)不合法。2.2.2二维数组元素的标识(续)4.判断数组维数和大小ndims判断数组维数size判断数组大小如:对上例中的数组AAn=ndims(A),As=size(A)An=2As=25注意:数组的长度是指数组最长维的长度,可用指令length(A)获得。length(A)=max(As)length(As)=An表示数组A大小的行数组的长度等于数组A的维数2.2.3二维数组子数组的寻访和赋值1.子数组的产生子数组是从对应数组中取出一部分元素构成,用全下标和单下标方式取子数组。(1)用全下标方式A(r,c)由A的“r指定行”和“c指定列”上的元素组成A(r,:)由A的“r指定行”和“全部列”上的元素组成A(:,c)由A的“全部行”和“c指定列”上的元素组成2.2.3二维数组子数组的寻访和赋值(全下标方式)A=[120;340;569]%a1=A([13],[23])%a2=A(1:3,2:3)%a3=A(:,3)%取所有行数即为1~3,列数为3的元素构成子%数组a3,“:”表示所有行或列。%a4=A(end,:)%取所有列,最后一行的元素构成子数组a4,%用“end”表示某一维%数中的最大值,即%3。演示2.2.3二维数组子数组的寻访和赋值(续)(2)用单下标方式:A(:)由A的各列按自左至右的顺序首尾相接生成“一维长列”数组A(s)生成“s指定的”一维数组A(L)由与A同样大小的“逻辑数组”L中的“1”元素选出A的对应元素组成列数组2.2.3二维数组子数组的寻访和赋值(单下标方式)A=[147;258;369];a5=A([13;26])%取单下标为1、3、2、6的元素构成子数组%a5(2×2)%a6=A([1326])%取单下标为1、3、2、6的元素构成子数组%a6(1×4)%L1=logical([101])演示2.2.3二维数组子数组的寻访和赋值(续)2.子数组的赋值(1)全下标方式A(r,c)=Sa给A的子数组A(r,c)赋值,则Sa的行列数必须等于A(r,c)的行列数。2.2.3二维数组子数组赋值(全下标方式)A=[123;234;345]%直接生成3×3数组%A(1:2,1:3)=[111;111]%给第一、二行元素赋值为全1演示2.2.3二维数组子数组的寻访和赋值(续)(2)单下标方式:A(s)=Sa给A的第s个元素赋值,s元素个数必须等于Sa数组的元素个数。2.2.3二维数组子数组赋值(单下标方式)A=[123;234;345]%A(5:7)=[236]%给5、6、7元素赋值演示2.2.3二维数组子数组的寻访和赋值(续)(3)全元素方式:A(:)=D(:)给A的所有元素赋值,A和D的元素总数必须相等,但行列数不一定相等。例2.10数组的寻访和赋值A=zeros(2,5);A(:)=-4:5%全元素赋值生成二维数组(2×5)%A([12],3)%取出A中第1行第3列和第2行第3列的元素生%成(2×1)数组%A([125])%取出A中第1、2、5个元素生成行数组(1×%3)演示2.3执行数组运算的常用函数函数数组运算是指对数组X中的每一个元素xij求函数值,计算结果与数组X同维,即f(Xm×n)=[f(xij)]m×n。执行数组运算的常用函数有:三角函数、双曲函数、指数函数、复数函数、圆整函数、求余函数、坐标变换函数等,见表2.6-1至表2.6-5。例2.11绘制函数y=xe-x在[01]区间上的曲线figure,x=0:0.1:1;y=x.*exp(-x);%对x中的每一个%元素求plot(x,y),演示2.4数组运算和矩阵运算矩阵运算有明确而严格的数
本文标题:二数值数组及其运算matlab
链接地址:https://www.777doc.com/doc-8685499 .html