MATLAB通信系统仿真陈晓红手机:15640518389邮箱:cxh830915@126.com第一章MATLAB语言基础1.1MATLAB简介了解MATLAB语言的功能和主要特点掌握MATLAB语言的基本操作1.1MATLAB简介一、概述MATLAB的名称源自MatrixLaboratory,它的首创者是在数值线性代数领域颇有影响的CleveMoler博士,他也是生产经营MATLAB产品的美国Mathworks公司的创始人之一。MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而使其被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作中。MATLAB产品族可以用来进行如下工作:数值分析;数值和符号计算;工程与科学绘图;控制系统的设计与仿真;数字图像处理;数字信号处理;通讯系统设计与仿真;财务与金融工程等。1.1MATLAB简介二、MATLAB仿真的意义当在实际电子通信系统中进行试验研究比较困难或者根本无法实现时,仿真技术就成为必然的选择。1.1MATLAB简介MATLAB与其它计算机高级语言如C,C++等相比,MATLAB语言编程要简洁得多,编程语句更加接近数学描述,可读性好,其强大的图形功能和可视化数据处理能力也是其它高级语言望尘莫及的。对于具有任何一门高级语言基础的学生来说,学习MATLAB十分容易。1.1MATLAB简介MATLAB使得人们摆脱了常规计算机编程的繁琐,让人们能够将大部分精力投入到研究问题的数学建模上。可以说,应用MATLAB这一数学计算和系统仿真的强大工具,可以使科学研究的效率得以成百倍的提高。1.1MATLAB简介二、MATLAB特点跨平台的数学语言超高级语言语法简单,编程风格接近数学风格强大的绘图功能计算精度很高拥有学科众多,领域广泛的工具箱可移植1.1MATLAB简介二、MATLAB入门操作命令窗口CommandWindow历史命令窗口CommandHistory当前目录窗口CurrentDirectory工作空间窗口Workspace1.1MATLAB简介1.1MATLAB简介1.CommandWindow可显示除图像以为的所有结果最简单的计算器使用法例1.1求[12+2×(7-4)]÷32例1.2输入矩阵例1.3矩阵A的分行输入987654321AMATLAB表达式的基本运算符加+减-乘*除/或\幂^MATLAB中可以采用逗号或空格来分隔矩阵中的列元素,而采用分号或回车符来分隔矩阵的行,整个矩阵包含在方括号“[]”内。1.1MATLAB简介数值的记述MATLAB的数值采用习惯的十进制表示,可以带小数点或负号3-990.0019.4561.3e-34.5e331.1MATLAB简介变量命名规则变量名、函数名对字母大小敏感;变量名的第一个字符必须是英文字母(可包含英文、数字和下划线,但不得包含空格和标点)。1.1MATLAB简介1.1MATLAB简介复数和复数矩阵MATLAB把复数作为一个整体处理。虚数单位用预定义变量i或j表示;复数z=a+bi=直角坐标是和极坐标系之间转换的MATLAB指令:real(z)imag(z)abs(z)angle(z)MATLAB的矩阵元素允许是复数、复变量和由它们组成的表达式ire1.1MATLAB简介例1.5z1=3+4i,z2=1+2i,z3=,计算z=z1z2/z3例1.6A=[1,3;2,4]-[5,8;6,9]*iB=[1+5i,2+6i;3+8*i,4+9*i]C=A*B例1.7求上述复数矩阵C的实部、虚部、模和相角62ie1.1MATLAB简介指令窗的常用控制指令clc清除指令窗中显示内容clear清除工作空间中保存的变量exit关闭/退出MATLABquit关闭/退出MATLAB2.CommandHistoryWindow记录着用户在指令窗中所输入过的所有指令行。1.1MATLAB简介3.CurrentDirectoryWindow组织、管理和使用所有matlab文件和非matlab文件。1.1MATLAB简介例1.8在当前目录窗口中获取M和MAT文件信息,比如matlab6p5\toolbox\matlab\elmat\ones.m文件的文件信息。(1)使matlab6p5\toolbox\matlab\elmat出现在当前目录栏中。此时,就可在文件列表中看到ones.m的文件类型和简单描述。(2)下拉菜单项File:Preference,引出参数选择Preference对话框,点选CurrentDirectory项,勾选“ShowM-filecommentsandMAT-filecontents”。这样就可以看到详细的文件描述。1.1MATLAB简介4.WorkspaceWindow内存变量的查阅、保存和编辑。1.1MATLAB简介内存变量的查阅与编辑数组编辑器和大数组的输入内存变量的保存内存变量的删除1.1MATLAB简介第一章MATLAB语言基础1.2MATLAB数值数组及其运算掌握一、二维数值数组的创建与寻访掌握数组运算与矩阵运算的区别了解字符串运算数组是指一组实数或复数排成的长方阵列,它可以是一维的“行”或“列”,也可以是二维的“矩形”,也可以是三维的“若干同维矩形的堆叠”,甚至更高的维数。数组运算是指:无论在数组是施加什么运算(加减乘除或函数),总认定是那种运算对被运算组中的每个元素平等地实施同样的操作。1.2MATLAB数值数组及其运算1.2MATLAB数值数组及其运算引例2.1绘制函数在时的曲线x=0:0.1:1;y=x.*exp(-x);plot(x,y)xlabel('x');ylabel('y');title('y=x.*exp(-x)');xxey1x01.2MATLAB数值数组及其运算说明:1.第一句指令定义自变量采样数组:以0为起点,每隔0.1取一个采样点,直到1为止,该数组是1×11的数组2.运算符“.*”,实施数组x和数组exp(x)对应元素的相乘。因此,所得结果y也是1×11的数组。数组运算避免了效率很低的循环运算。3.plot根据所得的x数组和y数组,绘制曲线。4.定义在连续区间上的函数,进行数值计算时必须对此给定的连续区间进行适当的采样,得到一个采样值数组。数值计算都是关于这种采样数组进行的。1.2MATLAB数值数组及其运算一、一维数组的创建(1)逐个元素输入法(2)冒号生成法(3)函数生成法1.2MATLAB数值数组及其运算(1)逐个元素输入法例2.2x=[2pi/2sqrt(3)3+5*i](2)冒号生成法x=a:inc:b说明:1、a是数组的第一个元素;inc是采样点之间的间隔,即步长。2、a,inc,b用冒号分隔,冒号必须在英文状态下。3、inc可以省略,省略时,默认其值为1。4、inc可取整数或负数。例2.3A=1:2:10,B=1:10,C=10:-1:11.2MATLAB数值数组及其运算(3)函数生成法线性等分——A=linspace(a1,an,n)对数等分——A=logspace(a1,an,n)说明:1、A=linspace(a1,an,n),a1首元素,an尾元素,n是采样总点数(默认为100)。该指令作用与A=a1:(an-a1)/n-1:an相同。2、A=logspace(a1,an,n),a1是首元素的幂,an是尾元素的幂,n是采样总点数。A(n)=n默认50。例2.4A=linspace(3,50,6),B=logspace(2,6,3)an101.2MATLAB数值数组及其运算二、一维数组的子数组的寻访和赋值例2.5rand(‘state’,0);x=rand(1,5);x(3)%寻访数组x的第三个元素x([125])%寻访数组x的第一、二、五个元素组成的子数组x(1:3)%寻访前3个元素组成的子数组x(3:end)%寻访前3个以为的全部其它数据x(3:-1:1)%由前3个元素倒排成的子数组x([12344321])%对元素可以重复访问,所得数组长度允许大于原数组1.2MATLAB数值数组及其运算例2.4子数组的赋值x(3)=0%对上例中的第三个元素赋值为0x([14])=[11]%对x数组的第一、四个元素都赋值为1说明:保证被重新赋值的子数组的长度与送入的长度相同1.2MATLAB数值数组及其运算三、二维数组的创建对于较小数组,从键盘上直接输入比较简单,二维数组必须有以下3个要素:1、整个输入数组必须以方括号“[]”为其首尾;2、数组的行与行之间必须用分号“;”,或回车键隔离;3、数组元素必须用逗号或空格分隔。例2.6a=2.7358;b=33/79;C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i]1.2MATLAB数值数组及其运算对于较大而复杂的数组,可用两种方法:1、公式编辑器2、专门建立一个M文件,起名保存,以后只要在matlab指令窗中,运行该文件,文件中的数组就会自动生成于matlab内存中。1.2MATLAB数值数组及其运算四、二维数组的子数组寻访和赋值1、二维数组元素的标识全下标标识法如A(3,5)单下标标识法由于数组在matlab中规定是按列存储的,首先对二维数组的所有元素“一维编号”,即设想把二维数组的所有列,按先左后右,首尾相接排成一维长列,然后自上而下对元素位置进行编号。以(m×n)的二维数组A为例,若全下标元素位置是“第r行第c列”,则相应的单下标为l=(c-1)×m+r1.2MATLAB数值数组及其运算四、二维数组的子数组寻访和赋值2、二维数组的子数组寻访和赋值A(r,c)A(r,:)由A的r行和全部列上的元素组成A(:,c)由A的全部行和c列上的元素组成A(:)单下标全元素寻访A(:)=D(:)全元素赋值方式,A、D两个数组的总元素相等,但行宽、列长不一定相同。1.2MATLAB数值数组及其运算例2.7A=zeros(2,4)A(:)=1:8s=[235]A(s)Sa=[102030]’A(s)=SaA(:,[2,3])=ones(2)1.2MATLAB数值数组及其运算五、标准数组生成函数和数组操作函数1、eye产生单位数组ones全1数组zeros全0数组rand均匀分布随机数组randn正态分布随机数组1.2MATLAB数值数组及其运算例2.8ones(1,2)randn(‘state’,0)randn(2,3)eye(3)1.2MATLAB数值数组及其运算五、标准数组生成函数和数组操作函数2、数组操作函数reshape总元素数不变的前提下,改变各维的大小tril提取数组下三角元素,生成下三角阵triu提取数组上三角元素,生成上三角阵flipud沿水平轴上下翻转fliplr沿垂直轴左右翻转repmat按指定维上的数组铺放模块数组rot90逆时针旋转90度1.2MATLAB数值数组及其运算例2.9a=-4:4,A=reshape(a,3,3),flipud(A)fliplr(A)rot90(A)repmat(A,1,3)1.2MATLAB数值数组及其运算六、数组运算和矩阵运算二维数组和矩阵在外观外形和数据结构上看,没有区别。所以,二维数组和矩阵的标识、建立、存储可以使用相同的指令,区别只在他们的运算符和运算法则。数组“除、乘方、转置”运算前的小黑点决不能遗漏,否则不按数组运算规律进行。在执行数组与数组之间的运算时,参与运算的数组必须是同维的,运算所得结果数组也与原数组同维。数组的运算是针对每个元素的运算,而矩阵的运算则遵循线性代数中矩阵的运算法则。1.2MATLAB数值数组及其运算六、数组运算和矩阵运算例2.10A=zeros(2,3);A(:)=1:6;A=A*(1+i);A1=A.’A2=A’1.2MATLAB数值数组及其运算六、数组运算和矩阵运算矩阵、向量、标量都是