二数值数组及其运算(matlab)
- 格式:ppt
- 大小:973.51 KB
- 文档页数:94
第 2 章 数值数组及向量化运算本章集中讲述两个数据类型(数值数组和逻辑数组)、两个特有概念变量(非数和空)、以及MATLAB的数组运算和向量化编程。
值得指出:本章内容是读者今后编写各种科学计算M码的基本构件。
数值数组(Numeric Array)是MATLAB最重要的数据类型数组。
在各种维度的数值数组中,二维数组为最基本、最常用。
本章对二维数组创建、标识、寻访、扩充、收缩等方法进行了详尽细腻的描述,并进而将这些方法推广到高维数组。
本章讲述的逻辑数组主要产生于逻辑运算和关系运算。
它是MATLAB 援引寻访数据、构成数据流控制条件、、编写复杂程序所不可或缺的重要构件。
数组运算是MATLAB区别于其它程序语言的重要特征,是MATLAB绝大多数函数指令、Simulink许多库模块的本性,是向量化编程的基础。
为此,本章专辟第2.2节用于阐述MATLAB的这一重要特征。
在此提醒读者注意:随书光盘mbook目录上保存着本章相应的电子文档“ch02_数值数组及向量化运算.doc”。
该文档中有本章全部算例的可执行指令,以及相应的运算结果。
2.1数值数组的创建和寻访2.1.1一维数组的创建1递增/减型一维数组的创建(1)“冒号”生成法(2)线性(或对数)定点法2其他类型一维数组的创建(1)逐个元素输入法(2)运用MATLAB函数生成法【例2.1-1】一维数组的常用创建方法举例。
a1=1:6a2=0:pi/4:pia3=1:-0.1:0a1 =1 2 3 4 5 6a2 =0 0.7854 1.5708 2.3562 3.1416a3 =Columns 1 through 81.0000 0.9000 0.8000 0.7000 0.6000 0.5000 0.4000 0.3000Columns 9 through 110.2000 0.1000 0b1=linspace(0,pi,4)b2=logspace(0,3,4)b1 =0 1.0472 2.0944 3.1416b2 =1 10 100 1000c1=[2 pi/2 sqrt(3) 3+5i]c1 =2.0000 1.5708 1.73213.0000 + 5.0000i rng defaultc2=rand(1,5)c2 =0.8147 0.9058 0.1270 0.9134 0.6324〖说明〗x1=(1:6)' , x2=linspace(0,pi,4)'y1=rand(5,1)z1=[2; pi/2; sqrt(3); 3+5i]2.1.2二维数组的创建1小规模数组的直接输入法【例2.1-2】在MATLAB环境下,用下面三条指令创建二维数组C。
(完整word版)matlab入门经典教程--第二章数值数组及其运算编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整word版)matlab入门经典教程--第二章数值数组及其运算)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整word版)matlab入门经典教程--第二章数值数组及其运算的全部内容。
第二章数值数组及其运算数值数组(Numeric Array)和数组运算(Array Operations)始终是MATLAB的核心内容。
自MATLAB5。
x版起,由于其“面向对象”的特征,这种数值数组(以下简称为数组)成为了MATALB 最重要的一种内建数据类型(Built—in Data Type),而数组运算就是定义在这种数据结构上的方法(Method)。
本章系统阐述:一、二维数值数组的创建、寻访;数组运算和矩阵运算的区别;实现数组运算的基本函数;多项式的表达、创建和操作;常用标准数组生成函数和数组构作技法;高维数组的创建、寻访和操作;非数NaN、“空”数组概念和应用;关系和逻辑操作.顺便指出:(1)本章所涉内容和方法,不仅使用于数值数组,而且也将部分地延伸使用于在其他数据结构中。
(2)MATLAB5。
x和6。
x 版在本章内容上的差异极微。
(3)MATLAB6.5版新增的两种逻辑操作,在第2。
13。
2节给予介绍。
2.1引导【例2。
1—1】绘制函数x=在1y-xe≤x时的曲线。
0≤x=0:0。
1:1y=x.*exp(-x)plot(x,y),xlabel(’x’),ylabel('y'),title(’y=x*exp(-x)’)x =Columns 1 through 70 0.1000 0。
2.4 Matlab数组及其运算本节主要内容:1 基本数组的运算2 数组函数运算3 数组逻辑运算一基本数组运算数组的建立、存储完全同于矩阵,由于计算的不同,把相同型矩阵之间的运算成为数组运算。
□数组的四则运算普通运算同矩阵的运算,另有点运算“.*”“./”“.\”,即两数组对应元素之间的运算。
□数组与常数运算1 与常数之间的数加、数减元算在运算符上可以加“.”,也可以不加“.”,加时,要把常数写在前面。
2 与矩阵的运算一致。
□数组的幂运算“.^”表示每个数组元素的幂运算。
与矩阵的幂运算不同□数组的指数运算、对数运算和开放运算分别为exp、log和sqrt,其运算实质是针对数组内部的每个元素进行。
二数组函数运算□只要把所有运算的数组当数字一样带人函数中,不需要做什么变形;□通用格式为funname(A),funname为函数名。
三数组逻辑运算□基本逻辑运算== 等于eq~= 不等于ne<小于lt>大于gt<= 小于等于le>= 大于等于ge& 逻辑与and丨逻辑或or~ 逻辑非~□关系比较的结果由0和1组成,关系满足对应值为1,否则为1.□逻辑与运算双方的对应元素都非0时,为1,否则为0逻辑或运算双方的对应元素有一非0时,为1,否则为0逻辑非运算数组对应的值为0时结果为1,否则为0□运算双方有一方为常数时,结果与数组同维,是数组元素依次与常数比较的结果。
□优先级关系先后为:比较运算、算术运算、逻辑与或非。
□逻辑关系函数any 向量的任意元素不为0则返回真all 向量的所有元素不为0则返回真xor 逻辑或非isempty 判断空矩阵isequal 判断相等矩阵isnumeric 判断数值矩阵islogical 判断逻辑数组logical 转换数值为逻辑型isnan 判断不定数isinf 判断无穷大元素isfinite 判断有限大元素find 寻找非零元素坐标abs表绝对值运算。
如下面的总结是以M文件“sin.m”为例。
1,.1表示0.1,.2表示0.22,要想在Matlab中创建一个数组,用户只需先输入一个左方括号,然后输入每个数值并用空格(或逗号)隔开,最后用一个右方括号结束数组创建。
3,Matlab中,可以通过下标来访问单个数组元素。
例如x(1)是x的第一个元素,x(2)是x的第二个元素。
为了同时访问一块数据,Matlab提供了冒号如:x(1:4)。
这样得到x数组中第1个到第4个元素,括号中的“1:4”的意思是从1开始,然后加1计数直到4。
4. x(7:end)这条命令返回x数组的第7个元素到最后一个元素。
关键字end 表示x数组的最后一个元素5.引用数组元素时,可以通过控制递增顺序和步进值。
y(3:-1:1)表示从3开始,向下减1计数,到1结束。
y(2,2,7)表示从2开始,以步长为2计数,到7结束。
6.可以随机抽取数组中一个或多个元素的值,y([8 2 9 1])。
在这里,用到了另外一个数组[8 2 9 1],并按照希望的顺序提取数组y中的元素。
提取的第1个元素是y中的第8个值,第2个元素是y中的2个值,第3个元素是y中的第9个值,第4个元素是y中的第1个值。
实际上,[8 2 9 1]本身就是一个数组,它的作用是指定抽取地址。
抽取的索引地址可以相同,同一个数允许多次调用,用户可以随意地重新排列和复制数组元素,该特性使Matlab编程更具高效性。
7.sin.m例子中x的值可以有另外两种输入方法:(1)x = (0:0.1:1)*pi(2)x = linspace(0,pi,11)。
冒号表示法使用户能够直接指定数据点之间的增量,而不用指定数据点的个数;linspace函数法则使用户能够直接指定数据点的个数,而不用指定数据点之间的增量。
这两种方式生成的数组时等间隔分布的。
8.创建对数间隔的数组,用logspace函数实现。
如logspace(0,2,11)创建从100开始到102结束,包含11个值的数组。
2.Matlab数值数组及其运算2.1引导2.2⼀维数组的创建与寻访2.3⼆维数组的创建2.4⼆维数组元素的标识2.5⼆维数组的⼦数组寻访和赋值2.6执⾏数组运算的常⽤函数2.7数组运算和矩阵运算2.8多项式的表达和创建2.9多项式运算函数2.10标准数组⽣成函数和数组操作函数2.11数组构建技巧综合2.12⾼维数组的创建2.13关系运算2.14逻辑操作2.1 引导 2.1.1 function [ output_args ] = Untitled2( input_args )x=0:0.1:1y=x.*exp(-x)plot(x,y,'-r'),xlabel('x'),ylabel('y'),title('y=x*exp(-x)')gridend运⾏效果2.2 ⼀维数组的创建与寻访 2.2.1 ⼀维数组的⼦数组寻访和赋值 2.2.1.1 ⼦数组的寻访 2.2.2 ⼦数组的赋值2.3 ⼆维数组的创建 2.3.1 直接输⼊法 2.3.2 复数数组的另⼀种输⼊⽅式2.4 ⼆维数组元素的标识 2.4.1 "逻辑1"标识1 function [ output_args ] = Untitled2( input_args )2 A = zeros(2,5);%A 两⾏五列3 A(:)=-4:5%初始化4 L=abs(A)>3%找出所有绝对值⼤于3的元素5 islogical(L)%判断是否是逻辑数组6 X=A(L)%把下标给x7 end 2.4.2 逻辑数组与⼀般双精度数组的关系和区别1 function [ output_args ] = Untitled2( input_args )2 A = zeros(2,5);%A 两⾏五列3 A(:)=-4:5%初始化4 L=abs(A)>3%找出所有绝对值⼤于3的元素5 islogical(L)%判断是否是逻辑数组6 X=A(L)%把下标给x78 Num=[1,0,0,0,1;0,0,0,0,1];9 islogical(Num) %Num不是逻辑数组10 %Y=A(Num)%只有逻辑数组才可以这样⽤,所有这样错误11 end2.5 ⼆维数组的⼦数组寻访和赋值 2.5.1 不同赋值⽅式⽰例1 function [ output_args ] = Untitled2( input_args )2 A=zeros(2,4)%A初始化为2⾏4列3 A(:)=1:8%A从1到8赋值(每列从上到下,从左到右)45 s=[2356]6 A(s)%s是A的范围从上到下7 Sa=[10203076]'%'是⽤于赋值⽤8 A(s)=Sa910 A(:,[2,4])=ones(2)%第⼆列第4列都变成111 end2.6 执⾏数组运算的常⽤函数 演⽰pow2的数组运算性质1 function [ output_args ] = Untitled2( input_args )2 A=[1:4;5:8]3 pow2(A)%2的A次⽅4 end2.7 数组运算和矩阵运算 2.7.1 两种不同转置的⽐较1 function [ output_args ] = Untitled2( input_args )2 A(:)=1:63 A=A*(1+i)4 A_A=A.'%转置5 A_M=A'%转置(不加.后⾯的复数会变号)6 end2.8 多项式的表达和创建 2.8.1 求3阶⽅阵A的特征多项式1 function [ output_args ] = Untitled2( input_args )2 A=[111213;141516;171819];3 PA = poly(A)%求特征多项式4 PPA=poly2str(PA,'s')%把特征多项式转化为表达式5 end 2.8.2 由给定向量求多项式系数向量1 function [ output_args ] = Untitled2( input_args )2 R=[-0.5,-0.3+0.4*i,-0.3-0.4*i]3 P=poly(R)%求特征向量4 PR=real(P)%求对应的系数向量5 PPR=poly2str(PR,'x')%转化为表达式6 end2.9 多项式运算函数 2.9.1 1 function [ output_args ] = Untitled2( input_args )2 %分⼦第⼀项多项式系数分别为1*s^2+0*s+2 1*s+4 1*s+13 p1=conv([1,0,2],conv([1,4],[1,1]));4 %分⼦的多项式系数为 1*s^3 + 0*s^2 + 1*s + 15 p2=[1011];6 %q,r 分别是商和余多项式7 [q,r]=deconv(p1,p2);89 cq='商多项式为 ';cr='余多项式为 '10 %转化为表达式11 disp([cq,poly2str(q,'s')]),disp([cr,poly2str(r,'s')])12 end 2.9.2 polyval 与 polyvalm的区别1 function [ output_args ] = Untitled2( input_args )2 a=[123]; %多项式为x^2+2*x+33 A=[12;34]; %定义⼀个⼆维矩阵4 polyvalm(a,A)%求结果5 %其实相当于把A这个⼆维矩阵直接替换变量x,即求 A^2+2*A+3*E 这个矩阵多项式。
Matlab数组、数组运算和矩阵运算1、数值数组matlab中数组不需要声明。
(1)对一维数值数组赋初值逐个元素输入:x=[1 2 pi/2]冒号生成:x=1:0.1:4定数线性采样法:x=linspace (a,b,n)%相当于第一个数为a,最后一个数为b,以n为采样点数等间距采样。
x=logspace(a,b,n)%相当于第一个数为10a,最后一个数为10b,以n为采样点数等间距采样。
(2)对一维数值数组的寻访x(3) %寻访第三个元素x([1 2 3]) %寻访第1,2,3个元素x(1:3) %寻访第1到3个元素x(3:-1:1) %由前三个元素倒排成子数组x(find(x>0.5)) %由大于0.5的元素构成的子数组(3)对二维数值数组赋初值逐个赋值:x=[1,2,3; 3,4,6; 7,8,9]%“;”为二维数组“行”的分隔符号,而“,”和空格为同一行元素的分隔符。
整列赋值:x(:,[4,5])=4 %第4、5列赋值为4元素重排:A=reshape(1:9,3,3)%将1到9重新排列成一个(3*3)矩阵,注意matlab是列“优先”,即先排第一列再排第二列,而不是按行来排。
(4)二维数组元素的标识和寻访“全下标”标识:A(3,5) %第3行第5列元素“单下标”标识:对于一个(m*n)维数组A中第r行第c列元素,其“单下标”表示为:A(l) %这里l=(c-1)*m+r2、数组运算和矩阵运算(1)数组运算指令含义A.'相当于conj(A'),conj的作用help一下吧……A=s把标量s赋给A的每个元素s+B标量s分别与B元素之和s-B,B-s标量s分别与B元素之差s.*A标量s分别与A元素之积s./B,B.\ss分别被B的元素除A.^nA的每个元素自乘n次A.^p对A的各个元素分别求非整数幂p.^A以p为底,分别以A的元素为指数求幂A+B对应元素相加A-B对应元素相减A.*B对应元素相乘A./BA的元素被B的对应元素除B.\A同上exp(A)以e为底,分别以A的元素为指数求幂log(A)对A的各个元素求对数sqrt(A)对A的各个元素求平方根f(A)求A各个元素的函数值A#B对应元素的关系运算,#代表关系运算符A@B对应元素的逻辑运算,@代表逻辑运算符(2)矩阵运算含义A'共轭转置s*A标量s分别与A元素之积S*inv(B)B阵的逆乘sA^nA阵为方阵时,自乘n次A^p方阵A的非整数乘方p^AA阵为方阵时,标量的矩阵乘方A+B矩阵相加A-B矩阵相减A*B矩阵相乘A/BA右除BB\AA左除Bexpm(A)A的矩阵指数函数logm(A)A的矩阵对数函数sqrtm(A)A的矩阵平方根函数funm(A,'FN')一般矩阵函数3、逻辑数组看例子就明白了:A=zeros(2,5); %预生成一个(2*5)全零数组A(:)=-4:5; %运用“全元素”方法向A赋值L=abs(A)>3 %产生一个与A同维的“0 -1”逻辑值数组islogical(L) %判断L是否逻辑值数组。
实验二MATLAB数值数组及其运算班级:电子信息工程2班学号:1004101049 姓名:王率率实验目的1.掌握数值数组的创建和寻访方法;2.理解数组运算和矩阵运算的含义;3.熟悉标准数组生成函数和数组操作函数的运用;4.熟悉两类特殊数组的应用;5.了解关系运算和逻辑运算及应用。
内容步骤在计算机上完成以下各题并进行结果验证,并按各题要求完成实验报告。
1.用2种方法生成行向量[3 5 7 9 11 13 15 17 19],并将其赋值给变量C。
写出其命令。
c=[3 5 7 9 11 13 15 17 19] %方法1c=linspace(3,19,9) %方法2c=[3:2:19] %方法32.输入A= [2 5 6; 7 1 5; 3 1 5],分别使用全下标和单下标取出元素“7”。
写出其命令。
A=[2 5 6;7 1 5;3 1 5]A(2,1) %全下标A(2) %单下标3.求矩阵[1 3;2 4]的转置矩阵、逆矩阵、矩阵的秩、矩阵的行列式值、矩阵的特征值和特征向量。
分别写出其命令和结果。
A=[1 3;2 4]B=A' %转置矩阵B1=inv(A) %逆矩阵C=rank(A) %矩阵的秩C1=det(A) %矩阵的行列式值[V,D]=eig(A) %特征值和特征向量运行结果:A = 1 32 4B = 1 23 4B1 =-2.0000 1.50001.0000 -0.5000C =2C1=-2V =-0.9094 -0.56580.4160 -0.8246D =-0.3723 00 5.37234.输入A= [2 5 6;7 1 5;3 1 5],B=[2 2 2;1 1 1; 3 3 3],在命令窗口中执行下列表达式,掌握其含义,并将运行结果写入实验报告:A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2) A(:,3)*B(2,:) A*B A.*B A^2A.^2 B/AB./A运行结果依次为:B=[2 2 2;1 1 1; 3 3 3]ans = 5ans = 511ans = 3 1 5ans = 2 67 53 5ans = 12515ans = 6 6 65 5 55 5 5ans = 27 27 2730 30 3022 22 22ans = 4 10 127 1 59 3 15ans = 57 21 6736 41 7228 21 48ans = 4 25 3649 1 259 1 25ans = 0.4211 0.3684 -0.47370.2105 0.1842 -0.23680.6316 0.5526 -0.7105ans = 1.0000 0.4000 0.33330.1429 1.0000 0.20001.0000 3.0000 0.60005.用MATLAB 求方程组⎪⎩⎪⎨⎧=+=+-=-10421554832z x z y x y x 的解,将命令和运行结果写入实验报告。