通信系统中的软件仿真.ppt_第1页
通信系统中的软件仿真.ppt_第2页
通信系统中的软件仿真.ppt_第3页
通信系统中的软件仿真.ppt_第4页
通信系统中的软件仿真.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二讲 数值数组及其运算,一、一维数组的创建和寻访,1、一维数组的创建 (1)逐个元素输入法 例:x=2 pi/2 sqrt(3) 3+5i x= 2.0000 1.5708 1.7321 3.0000+5.0000i (2)冒号生成法 该法通过“步长”设定,生成一维“行”数组的方法。 例:x=a:inc:b %inc是采样点的步长 (3)定数线性采样法 该法在设定的“总点数”下,均匀采样生成一维“行”数组。 例:x=linspace(a,b,n) %a,b分别是生成数组的第一和最后一个元素,n是采样总点数。,(4)定数对数采样法 该法在设定的“总点数”下,经“常用对数”采样生成一维“行”数组 例:x=logspace(a,b,n) %a,b分别代表生成数组的第一和最后元素分别为:10a,10b,n是采样点数。,2、一维数组的子数组寻访和赋值,【例1】子数组的寻访。 rand(state,0) %把均匀分布伪随机发生器置为0 x=rand(1,5) %产生(15)的均匀分布随机数组 x = 0.9501 0.2311 0.6068 0.4860 0.8913,x(3) %寻访数组x的第三个 ans = 0.6068,x(1 2 5) %寻访数组的第一、二、五元素组成的子数组,ans = 0.9501 0.2311 0.8913,x(1:3) %寻访数组前三个元素组成的子数组,ans = 0.9501 0.2311 0.6068,x(3:end) %寻访除三个元素外的全部其它元素。end是最后一个元素的下标,ans = 0.6068 0.4860 0.8913,x(3:-1:1) %由前3个元素倒排构成的子数组,ans = 0.6068 0.2311 0.9501,x(find(x0.5) %由大于0.5 的元素构成的子数组,ans = 0.9501 0.6068 0.8913,x(1 2 3 4 4 3 2 1) %对元素可以重复寻访,使所得数组长度允许大于原数组,ans = Columns 1 through 7 0.9501 0.2311 0.6068 0.4860 0.4860 0.6068 0.2311 Column 8 0.9501,二、二维数组的创建,1、直接输入法,【例2】在MATLAB环境下,用下面三条指令创建二维数组C。 a=2.7358; b=33/79; C=1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i C = 1.0000 5.4716 + 0.4177i 0.6909 0.7071 4.8244 3.5000 + 1.0000i,注意事项: 整个数组必须以方括号为其首尾 数组的行与行之间必须用分号或回车隔离; 数组元素必须由逗号或空格分隔。,2、利用M文件创建和保存数组,(1)打开文件编辑调试器,并在空白填写框中输入以下内容 % MyMatrix.m Creation and preservation of matrix AM AM=101,102,103,104,105,106,107,108,109;. 201,202,203,204,205,206,207,208,209;. 301,302,303,304,305,306,307,308,309; (2)保存此文件,并文件起名为MyMatrix.m (3)只要在指令窗中运行此文件,数组AM就会自动生成于Matlab内存中.,3利用冒号表达式建立一个向量 冒号表达式可以产生一个行向量,一般格式是: e1:e2:e3 其中e1为初始值,e2为步长,e3为终止值。 4建立大矩阵 大矩阵可由方括号中的小矩阵或向量建立起来。例如: A=1,2,3;4,5,6;7,8,9; C=A,eye(size(A);ones(size(A),A,C = 1 2 3 1 0 0 4 5 6 0 1 0 7 8 9 0 0 1 1 1 1 1 2 3 1 1 1 4 5 6 1 1 1 7 8 9,三、二维数组元素的标识,1、“全下标”标识 全下标标识由两个下标组成:行下标、列下标,2、“单下标”标识 单下标标识就是由一个下标来指明元素在数组中的位置,3、“逻辑1”标识 寻找数组中所有大于某值的元素的问题。,【例3】找出数组,中所有绝对值大于3的元素。,A=zeros(2,5); %预生成一个(25)全零数组 A(:)=-4:5 %运用“全元素”法向A赋值 L=abs(A)3 %产生与A同维的“01”逻辑值数组 islogical(L) %判断L是否逻辑值数组。输出若为1,则是 X=A(L) %把L中逻辑值1对应的A元素取出,A = -4 -2 0 2 4 -3 -1 1 3 5 L = 1 0 0 0 1 0 0 0 0 1 ans = 1 X = -4 4 5,四、二维数组的子数组寻访和赋值,1矩阵元素的提取 通过下标引用矩阵的元素,例如,A(3,2)=8 采用矩阵元素的序号来引用矩阵元素。矩阵元素的序号就是相应元素在内存中的排列顺序。 矩阵元素按列存储,先第一列,再第二列,依次类推。例如 A=1,2,3;4,5,6; A(3) ans = 2 序号(Index)与下标(Subscript )是一一对应的,以mn矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。其相互转换关系也可利用sub2ind和ind2sub函数求得。,2矩阵的拆分 (1) 利用冒号表达式获得子矩阵 A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。 A(i:i+m,:)表示取A矩阵第ii+m行的全部元素;A(:,k:k+m)表示取A矩阵第kk+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第ii+m行内,并在第kk+m列中的所有元素。 还可利用一般向量和end运算符来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。例如:,C(1,4,3:end) ans = 3 1 0 0 1 1 2 3 (2) 利用空矩阵删除矩阵的元素 在MATLAB中,定义 为空矩阵。给变量X赋空矩阵的语句为X= 。注意,X= 与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。,C = 1 2 3 1 0 0 4 5 6 0 1 0 7 8 9 0 0 1 1 1 1 1 2 3 1 1 1 4 5 6 1 1 1 7 8 9,【例4】不同赋值方式示例。 A=zeros(2,4) %创建(2*4)的全零数组 A = 0 0 0 0 0 0 0 0 A(:)=1:8 %全元素赋值方式 A = 1 3 5 7 2 4 6 8 s=2 3 5 %产生单下标数组行数组 s = 2 3 5 A(s) %由“单下标行数组”寻访产生A元素组成的行数组 ans = 2 3 5,Sa=10 20 30 %Sa是长度为3的“列数组” Sa = 10 20 30 A(s)=Sa %单下标方式赋值 A = 1 20 30 7 10 4 6 8 A(:,2 3)=ones(2) %双下标赋值方式:把A的第2、3列元素全赋为1 A = 1 1 1 7 10 1 1 8,【例5】演示pow2的数组运算性质。 A=1:4;5:8 %生成A(2*4)数组 A = 1 2 3 4 5 6 7 8 pow2(A) %计算2的幂也生成数组 ans = 2 4 8 16 32 64 128 256,五、执行数组运算的常用函数,六、数组运算和矩阵运算,【例 6】两种不同转置的比较 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.0000i 2.0000 + 2.0000i 4.0000 + 4.0000i 6.0000 + 6.0000i A_A = 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i 4.0000 + 4.0000i 5.0000 + 5.0000i 6.0000 + 6.0000i A_M = 1.0000 - 1.0000i 2.0000 - 2.0000i 3.0000 - 3.0000i 4.0000 - 4.0000i 5.0000 - 5.0000i 6.0000 - 6.0000i,运算指定形式,八、标准矩阵生成函数和数组操作函数,1通用的标准矩阵 常用的产生通用特殊矩阵的函数有: zeros:产生全0矩阵(零矩阵)。 ones:产生全1矩阵(幺矩阵)。 eye:产生单位矩阵。 rand:产生01间均匀分布的随机矩阵。 randn:产生均值为0,方差为1的标准正态分布随机矩阵。,【例】分别建立33、32和与矩阵A同样大小的零矩阵。 解: (1) zeros(3) (2) zeros(3,2) (3) 设A为23矩阵,则可以用zeros(size(A)建立一个与矩阵A同样大小零矩阵。 A=1 2 3;4 5 6; %产生一个23阶矩阵A zeros(size(A) %产生一个与矩阵A同样大小的零矩阵,【例】建立随机矩阵: (1) 在区间20,50内均匀分布的5阶随机矩阵。 (2) 均值为0.6、方差为0.1的5阶正态分布随机矩阵。,解: x=20+(50-20)*rand(5) y=0.6+sqrt(0.1)*randn(5),2用于专门学科的特殊矩阵 (1) 魔方矩阵 魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,n2共n2个整数组成。 MATLAB提供了求魔方矩阵的函数magic(n),其功能是生成一个n阶魔方阵。 (2)范得蒙矩阵vander(V) (3)希尔伯特矩阵hilb(n) 希尔伯特矩阵的逆矩阵invhilb(n) (4)托普利兹矩阵toeplitz(x) (5)伴随矩阵compan(p) (6)帕斯卡矩阵pascal(n),例 将101125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。,解:M=100+magic(5),M = 117 124 101 108 115 123 105 107 114 116 104 106 113 120 122 110 112 119 121 103 111 118 125 102 109,【例9】标准数组产生的演示。 ones(1,2) %产生长度为2的全1行数组 ans = 1 1 ones(2) %产生(22)全1阵 ans = 1 1 1 1 randn(state,0) %把正态随机数发生器置0 randn(2,3) %产生(23)的正态随机阵 ans = -0.4326 0.1253 -1.1465 -1.6656 0.2877 1.1909 D=eye(3) %产生(33)的单位阵 D = 1 0 0 0 1 0 0 0 1,diag(D) %取D阵的对角元素 ans = 1 1 1 diag(diag(D) %内diag取D的对角元素,外diag利用一维数组生成对角阵 ans = 1 0 0 0 1 0 0 0 1 repmat(D,1,3) %在水平方向“铺放”3个D阵 ans = Columns 1 through 9 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1,2、数组操作函数,【例 10】diag与reshape的使用演示。 a=-4:4 %产生一维数组 A=reshape(a,3,3) %把一维数组a重排成(33)的二维数组 a = Columns 1 through 9 -4 -3 -2 -1 0 1 2 3 4 A = -4 -1 2 -3 0 3 -2 1 4 a1=diag(A,1) %取A阵“第一上对角线”元素 a1 = -1 3,A1=diag(a1,-1) %产生以a1数组元素为“第一下对角线”元素的二维数组 A1 = 0 0 0 -1 0 0 0 3 0,A. %转置 ans = -4 -3 -2 -1 0 1 2 3 4 flipud(A) %上下对称交换 ans = -2 1 4 -3 0 3 -4 -1 2,九、数组构成技法综合,【11】数组的扩展。 (1)数组的赋值扩展法 A=reshape(1:9,3,3) %创建(33)数组A A = 1 4 7 2 5 8 3 6 9 A(5,5)=111 %扩展为(55)数组,扩展部分除(5,5)元素为111外,其余均为0 A = 1 4 7 0 0 2 5 8 0 0 3 6 9 0 0 0 0 0 0 0 0 0 0 0 111,1、索引扩展数组,A(:,6)=222 %标量对子数组赋值,并扩展为(56)数组 A = 1 4 7 0 0 222 2 5 8 0 0 222 3 6 9 0 0 222 0 0 0 0 0 222 0 0 0 0 111 222,(2)多次寻访扩展法 AA=A(:,1:6,1:6) %相当于指令repmat(A,1,2) AA = 1 4 7 0 0 222 1 4 7 0 0 222 2 5 8 0 0 222 2 5 8 0 0 222 3 6 9 0 0 222 3 6 9 0 0 222 0 0 0 0 0 222 0 0 0 0 0 222 0 0 0 0 111 222 0 0 0 0 111 222,(3)合成扩展法 B=ones(2,6) %创建(26)全1数组 B = 1 1 1 1 1 1 1 1 1 1 1 1 AB_r=A;B %行数扩展合成 AB_r = 1 4 7 0 0 222 2 5 8 0 0 222 3 6 9 0 0 222 0 0 0 0 0 222 0 0 0 0 111 222 1 1 1 1 1 1 1 1 1 1 1 1,AB_c=A,B(:,1:5) %列数扩展合成 AB_c = 1 4 7 0 0 222 1 1 2 5 8 0 0 222 1 1 3 6 9 0 0 222 1 1 0 0 0 0 0 222 1 1 0 0 0 0 111 222 1 1,【例12】提取子数组,合成新数组。 A %重显A数组 A = 1 4 7 0 0 222 2 5 8 0 0 222 3 6 9 0 0 222 0 0 0 0 0 222 0 0 0 0 111 222,AB_BA=triu(A,1)+tril(A,-1) %利用操作函数,使主对角元素为全为0 AB_BA = 0 4 7 0 0 222 2 0 8 0 0 222 3 6 0 0 0 222 0 0 0 0 0 222 0 0 0 0 0 222 AB1=A(1:2,end:-1:1);B(1,:) %灵活合成 AB1 = 222 0 0 7 4 1 222 0 0 8 5 2 1 1 1 1 1 1,【例13】单下标寻访和reshape指令演示。 clear A=reshape(1:16,2,8) %变一维数组成(28)数组 A = 1 3 5 7 9 11 13 15 2 4 6 8 10 12 14 16 reshape(A,4,4) %变(28)数组为(44)数组 ans = 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16,s=1 3 6 8 9 11 14 16; %定义“单下标”数组 A(s)=0 %利用“单下标”数组对A的元素重新赋值 A = 0 0 5 7 0 0 13 15 2 4 0 0 10 12 0 0,【例14】“对列(或行)同加一个数”三种的操作方法。 clear,A=reshape(1:9,3,3) A = 1 4 7 2 5 8 3 6 9 b=1 2 3;A_b1=A-b(1 1 1,:) %使A的第1,2,3行分别减b向量1 2 3 A_b1 = 0 2 4 1 3 5 2 4 6 A_b2=A-repmat(b,3,1) A_b2 = 0 2 4 1 3 5 2 4 6,A_b3=A(:,1)-b(1),A(:,2)-b(2),A(:,3)-b(3) A_b3 = 0 2 4 1 3 5 2 4 6,【例15】逻辑函数的运用示例。 randn(state,1),R=randn(3,6) %创建正态随机阵 R = 0.8644 0.8735 -1.1027 0.1684 -0.5523 -0.6149 0.0942 -0.4380 0.3962 -1.9654 -0.8197 -0.2546 -0.8519 -0.4297 -0.9649 -0.7443 1.1091 -0.2,L=abs(R)1.5 %不等式条件运算,结果给了出逻辑数组 L = 0 0 0 1 0 0 1 1 1 1 0 1 0 1 0 0 0 1,R(L)=0 %“逻辑1”对应的元素赋0值 R = 0.8644 0.8735 -1.1027 0 -0.5523 -0.6149 0 0 0 0 -0.8197 0 -0.8519 0 -0.9649 -0.7443 1.1091 0 s=(find(R=0) %利用find获得符合关系等式条件的元素“单下标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论