收藏 分享(赏)

MATLAB 入门教程.ppt

上传人:hwpkd79526 文档编号:8386681 上传时间:2019-06-23 格式:PPT 页数:81 大小:493.50KB
下载 相关 举报
MATLAB 入门教程.ppt_第1页
第1页 / 共81页
MATLAB 入门教程.ppt_第2页
第2页 / 共81页
MATLAB 入门教程.ppt_第3页
第3页 / 共81页
MATLAB 入门教程.ppt_第4页
第4页 / 共81页
MATLAB 入门教程.ppt_第5页
第5页 / 共81页
点击查看更多>>
资源描述

1、第二讲 数值数组及其运算,数值数组和数组运算始终是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.1 引言,数组:由一组实数或复数排成的长方阵列(Array) 一维的“行”或“列” 二维的“矩形” 三维的“若干矩形的堆叠” 更高的任

2、意维,2.1 引言,数组运算:无论对数组施加什么运算(包括函数),总认为是对数组中每个元素平等的实施同样的操作 设计数组和数组运算的目的: 使程序简单、易读;更接近数学公式 提高程序向量化程度,提高计算效率,节省系统开销,2.1 引言,绘制函数 在0x1时的曲线 x=0:0.1:1 %定义自变量的采样点取值数组 y=x.*exp(-x)%利用数组运算计算各自变量采样点上的函数值 plot(x,y),xlabel(x),ylabel(y),title(y=x*exp(-x) %绘图 第一句定义自变量数组:0为起点,每隔0.1取一个点,直到1。得到111的数组 第二句中,指数函数exp(-x)对x

3、每个元素求值,结果也是111的数组 数组乘是两个数组对应元素相乘,得到y也是111的数组 连续函数必须在相应区间上采样才能进行数值计算,2.1 引言,2.2 一维数组的创建和寻访,1. 一维数组的创建 逐个元素输入 x=2 pi/2 sqrt(3) 3+5i 冒号生成 格式 x=a:inc:b a是第一个元素,inc是步长(缺省为1) 若(b-a)是inc的整数倍,则生成数组最后一个元素等于b,否则小于binc可取正数或负数。取正:ab,2.2 一维数组的创建和寻访,线性采样 格式 x=linspace(a,b,n) a,b是第一个和最后一个元素,n是采样点数 生成1n的数组 等价于x=a:(

4、b-a)/(n-1):b 运用MATLAB函数生成法 如rand,zeros,ones等 以上均为行数组,列数组转置即可,2.2 一维数组的创建和寻访,2.一维数组子数组的寻访和赋值 子数组的寻访(Address) rand(state,0)%把均匀分布伪随机发生器置为0状态 x=rand(1,5) %产生15的均布随机数组 x(3) %寻访数组x的第三个元素 x(1 2 5)%寻访数组x的第一、二、五个元素组成的子数组 x(1:3) %寻访前三个元素组成的子数组 x(3:end)%寻访除前2个元素外的全部其他元素。end是最后一个元素的下标 x(3:-1:1) %由前三个元素倒排构成的子数组

5、 x(find(x0.5) %由大于0.5的元素构成的子数组 x(1 2 3 4 4 3 2 1)%对元素可以重复寻访,使所得数组长度允许大于原数组,2.2 一维数组的创建和寻访,子数组的赋值(Assign) x(3) = 0 %第三个元素赋值为0 x(1 4)=1 1 %第一、四个元素都赋值为1 保证被赋值的子数组长度与送入的数组长度相同,2.3 二维数组的创建,二维数组与矩阵 二维数组是由实数或复数排列成矩形构成的 从数据结构上看,矩阵和二维数组没有区别 当二维数组带有线性变换含义时,就是矩阵,2.3 二维数组的创建,1.直接输入法 二维数组三要素: 整个数组必须以“”为首尾 数组行与行之

6、间必须用“;”或回车隔离 数组元素必须用“,”或空格分隔,2.3 二维数组的创建,在MATLAB环境下,用下面三条指令创建二维数组C a=2.7358; b=33/79;%这两条指令分别给变量 a ,b 赋值 C=1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i %创建二维数组C C =1.0000 5.4716 + 0.4177i 0.6909 0.7071 4.8244 3.5000 + 1.0000i “;”在“”内,是数组行分隔符 “;”作为指令结束符,不显示执行结果,2.3 二维数组的创建,复数数组的另一种输入方式 M_r=1,2,3;4,5,6,M

7、_i=11,12,13;14,15,16 CN=M_r+i*M_i %由实部、虚部数组构成复数数组 M_r =1 2 34 5 6 M_i =11 12 1314 15 16 CN =1.0000 +11.0000i 2.0000 +12.0000i 3.0000 +13.0000i4.0000 +14.0000i 5.0000 +15.0000i 6.0000 +16.0000i “,”在“”内,是数组元素分隔符 “,”作为指令结束符,显示执行结果,2.3 二维数组的创建,2.数组编辑器创建 单击工作空间中的“新建”图标 3.利用M文件创建和保存数组 对于经常需要调用的数组,尤其是比较大而复

8、杂的数组,值得为它专门建立一个M文件 4.利用MATLAB函数创建,2.4 二维数组元素的标识,1.“全下标”标识 经典教科书的标识法 即指出是“第几行,第几列”的元素 优点:几何概念清楚,引述简单。(最常用) “全下标”由两个下标组成:行下标,列下标。例如:A(2,5),2.4 二维数组元素的标识,2.“单下标”标识 就是用一个下标来指明元素在数组中的位置 对二维数组元素进行“一维编号” 把二维数组所有列,按先左后右的次序,首尾相接排成“一维长列”,然后自上往下编号 “单下标”与“全下标”转换关系:以(mn)的二维数组A为例,全下标元素位置是“第r行,第c列”,改为单下标表示为a=(c-1)

9、m+r。 MATLAB有两个指令可实现此转换: sub2ind 据全下标算出单下标 ind2sub 据单下标算出全下标,2.4 二维数组元素的标识,3.“逻辑1”标识 常用问题:寻找数组中大于某值的元素找出数组 中所有绝对值大于3的元素A=zeros(2,5); %预生成一个25全零数组 A(:)=-4:5 %运用“全元素”赋值法获得A L=abs(A)3 %产生与A同维的“0-1”逻辑值数组 islogical(L) %判断L是否逻辑值数组 X=A(L) %把L中逻辑值1对应的A元素取出,2.4 二维数组元素的标识,A =-4 -2 0 2 4-3 -1 1 3 5 L =1 0 0 0 1

10、0 0 0 0 1 ans =1 X =-445 L的元素是0或1,它是“逻辑数组”,是一种特殊的数据类型。 “逻辑1”标识法:通过与A同样大小的逻辑数组L中“1”的位置指示A中元素的位置,2.5 二维数组的子数组寻访和赋值,A(r,c) A的r行c列元素 A(r,:) A的r行全部元素 A(:,c) A的c列全部元素 A(:) A的“单下标全元素”寻访 A(s) “单下标”寻访。生成“s指定的”一维数组。s是行数组(或列数组),则A(s)就是长度相同的行数组(或列数组)。 A(L) “逻辑1”寻访 。由与A同样大小的“逻辑数组”L中的“1”元素选出A的对应元素。,A(r,c)=Sa“双下标”

11、方式赋值。Sa的“行宽、列长”必须与A(r,c)的“行宽、列长”相同。 A(:)=D(:) 全元素赋值。结果:保持A的“行宽、列长”不变。条件:A、D两个数组的元素数相等。 A(s)=Sa “单下标”部分元素赋值。结果:保持A的“行宽、列长”不变。条件:s单下标数组长度必须与一维数组Sa的长度相等,但s、Sa不一定同是“行数组”或“列数组”。,2.5 二维数组的子数组寻访和赋值,A=zeros(2,4) %创建24的全零数组 A =0 0 0 00 0 0 0 A(:)=1:8 %全元素赋值方式 A =1 3 5 72 4 6 8 s=2 3 5; %产生单下标数组行数组 A(s) %由“单下

12、标行数组”寻访产生A元素组成的行数组 Sa=10 20 30 %Sa是长度为3的“列数组”(行数组也可以) A(s)=Sa %单下标方式赋值,2.5 二维数组的子数组寻访和赋值,ans =2 3 5 Sa =102030 A =1 20 30 710 4 6 8 A(:,2 3)=ones(2) %双下标赋值方式:把A的第2、3列元素全赋为1 A =1 1 1 710 1 1 8,2.5 二维数组的子数组寻访和赋值,2.6 执行数组运算的常用函数,数组加、减、乘、除、幂 函数的数组运算规则: 函数f(.)对数组的运算相当于对数组的每一个元素作相同的函数运算 大部分常用函数都执行数组运算 三角、

13、指数、复数、取整求余、坐标变换,2.7 数组运算和矩阵运算,矩阵运算有明确、严格的数学规则 数组运算是MATLAB定义的规则 目的:数据管理方便、操作简单、指令形式自然、执行计算有效 缺乏严谨的数学推理,本身仍在完善 影响随MATLAB而扩大,2.7 数组运算和矩阵运算,运算指令对照 A. 非共轭转置 A 共轭转置 A.n 各元素n次幂 An 方阵的n次幂 A.*B 对应元素相乘 A*B 矩阵相乘 A./B A元素除以B元素 A/B A右除B B.A 同上 BA A左除B exp(A) 对各元素求幂 expm(A) 矩阵指数 log(A) 对各元素求对数 logm(A) 矩阵对数 sqrt(A

14、) 对各元素求方根 sqrtm(A) 矩阵平方根,2.7 数组运算和矩阵运算,A=s 标量赋给A的每个元素(s和A同大小) A#B 对应元素关系运算(=,=,=,=) AB 对应元素逻辑运算(&,|,)关系运算和逻辑运算仅对数组进行。,2.7 数组运算和矩阵运算,两种不同转置的比较 clear;A=zeros(2,3); A(:)=1:6; %全元素赋值法 A=A*(1+i) %运用标量与数组乘产生复数矩阵 A_A=A. %数组转置,即非共轭转置 A_M=A %矩阵转置,即共轭转置 A =1.0000 + 1.0000i 3.0000 + 3.0000i 5.0000 + 5.0000i2.0

15、000 + 2.0000i 4.0000 + 4.0000i 6.0000 + 6.0000i A_A =1.0000 + 1.0000i 2.0000 + 2.0000i3.0000 + 3.0000i 4.0000 + 4.0000i5.0000 + 5.0000i 6.0000 + 6.0000i A_M =1.0000 - 1.0000i 2.0000 - 2.0000i3.0000 - 3.0000i 4.0000 - 4.0000i5.0000 - 5.0000i 6.0000 - 6.0000i,两种不同乘的比较 clear;A=1,2;3,4 B=2,3;4,5 C_A=A.*

16、B C_M=A*B A =1 23 4B =2 34 5C =2 612 20D =10 1322 29,2.7 数组运算和矩阵运算,2.7 数组运算和矩阵运算,两种不同求平方根的比较 clear;B=4,9;16,25 B_A=sqrt(B) B_M=sqrtm(B)B =4 916 25 B_A =2 34 5 B_M =0.9421 + 0.9969i 1.5572 - 0.3393i2.7683 - 0.6032i 4.5756 + 0.2053i,2.8 标准数组生成函数和数组操作函数,1.标准数组生成函数 diag 产生对角形数组 eye 产生单位数组 magic 产生魔方数组(以

17、上三类数组不适用于高维,只适用于二维以下) ones 产生全1数组 rand 产生均匀分布随机数组 randn 产生正态分布随机数组 zeros 产生全0数组,2.8 标准数组生成函数和数组操作函数,标准数组产生的演示 ones(1,2) %产生长度为2的全1行数组 ans =1 1 randn(state,0)%把正态随机数发生器置0 A=randn(2,3)%产生23的正态随机阵 A =-0.4326 0.1253 -1.1465-1.6656 0.2877 1.1909 B=eye(3) %产生33的单位阵 B =1 0 00 1 00 0 1,2.8 标准数组生成函数和数组操作函数,C

18、=diag(A) %取A阵的对角元 C =-0.43260.2877 D=diag(C) %内diag取A的对角元,外diag利用一维数组生成对角阵 D =-0.4326 00 0.2877,2.8 标准数组生成函数和数组操作函数,2.数组操作函数(P115表3.23) rot90 把数组逆时针旋转90度 diag 提取对角元素,或生成对角阵 flipud 上下交换 fliplr 左右交换 repmat 按指定的行数列数铺放模块数组 reshape 改变行数列数,元素数不变 以上指令只适用于二维数组,2.8 标准数组生成函数和数组操作函数,reshape的使用演示 a=-4:4 A=resha

19、pe(a,3,3) %把一维数组a重排成33的二维数组 a =-4 -3 -2 -1 0 1 2 3 4 A =-4 -1 2-3 0 3-2 1 4,diag的使用演示 b=diag(A) %取A元素对角阵生成数组b B=diag(b) %根据b数组生成B对角矩阵 b =-404 B =-4 0 00 0 00 0 4,2.8 标准数组生成函数和数组操作函数,A =-4 -1 2-3 0 3-2 1 4,repmat使用演示 B1=repmat(B,2,2) B1 =-4 0 0 -4 0 00 0 0 0 0 00 0 4 0 0 4-4 0 0 -4 0 00 0 0 0 0 00 0

20、4 0 0 4,2.8 标准数组生成函数和数组操作函数,2.8 标准数组生成函数和数组操作函数,flipud和fliplr使用演示 flipud(A) %上下对称交换 ans =-2 1 4-3 0 3-4 -1 2 fliplr(A) %左右对称交换 ans =2 -1 -43 0 -34 1 -2,A =-4 -1 2-3 0 3-2 1 4,2.9 数组构作技法综合,1.数组的扩展 赋值扩展法 A=reshape(1:9,3,3)%创建33数组A A =1 4 72 5 83 6 9,2.9 数组构作技法综合,A(5,5)=111 %扩展为55数组。扩展部分除(5,5)元素为111外,其

21、余均为0 A =1 4 7 0 02 5 8 0 03 6 9 0 00 0 0 0 00 0 0 0 111,2.9 数组构作技法综合,A(:,6)=222 %标量对子数组赋值,扩展为56数组 A =1 4 7 0 0 2222 5 8 0 0 2223 6 9 0 0 2220 0 0 0 0 2220 0 0 0 111 222,2.9 数组构作技法综合,多次寻访扩展法 AA=A(:,1:6,1:6)%相当于指令repmat(A,1,2) AA =1 4 7 0 0 222 1 4 7 0 0 2222 5 8 0 0 222 2 5 8 0 0 2223 6 9 0 0 222 3 6

22、 9 0 0 2220 0 0 0 0 222 0 0 0 0 0 2220 0 0 0 111 222 0 0 0 0 111 222 指令repmat 中,A为模块数组,1表示行方向上铺一块,2表示列 方向上铺两块。,A =1 4 7 0 0 2222 5 8 0 0 2223 6 9 0 0 2220 0 0 0 0 2220 0 0 0 111 222,2.9 数组构作技法综合,合成扩展法B=ones(2,6) %创建26全1数组 B =1 1 1 1 1 11 1 1 1 1 1,2.9 数组构作技法综合,AB_r=A;B %行数扩展合成 AB_r =1 4 7 0 0 2222 5 8 0 0 2223 6 9 0 0 2220 0 0 0 0 2220 0 0 0 111 2221 1 1 1 1 11 1 1 1 1 1,2.9 数组构作技法综合,AB_c=A,B(:,1:5) %列数扩展合成AB_c =1 4 7 0 0 222 1 12 5 8 0 0 222 1 13 6 9 0 0 222 1 10 0 0 0 0 222 1 10 0 0 0 111 222 1 1,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报