《MATLAB基础》PPT课件.ppt

上传人:za****8 文档编号:16087247 上传时间:2020-09-18 格式:PPT 页数:115 大小:2.08MB
返回 下载 相关 举报
《MATLAB基础》PPT课件.ppt_第1页
第1页 / 共115页
《MATLAB基础》PPT课件.ppt_第2页
第2页 / 共115页
《MATLAB基础》PPT课件.ppt_第3页
第3页 / 共115页
点击查看更多>>
资源描述
2020/9/18,1,MATLAB在通信中的应用,2020/9/18,2,OK, Now begin,2020/9/18,3,课程介绍,定位:专业选修课 目标:了解MATLABSimulink ,熟练掌握简单编程,结合所学通信工程专业知识,能够使用MATLAB对通信系统进行仿真,加深理解。 考核:待定,2020/9/18,4,第一章主要内容,MATLAB初步认识 MATLAB操作环境 MATLAB矩阵运算 MATLAB程序设计 MATLAB绘图基础,2020/9/18,MATLAB在通信中的应用,5,第一讲 MATLAB初步认识,1.1.1 MATLAB的发展 MATLAB语言是由美国的Clever Moler博士于1980年开发的; 设计者的初衷是为解决“线性代数”课程的矩阵运算问题; 取名MATLAB即Matrix Laboratory 矩阵实验室的意思; MATLAB以商品形式出现后的短短几年,就以其良好的开放性和运行的可靠性,成功地应用于各工程学科的研究领域。,2020/9/18,MATLAB在通信中的应用,6,MATLAB版本的发展,1984年,MATLAB第1版(DOS版) 1992年,MATLAB4.0版 1994年,MATLAB 4.2版 1997年,MATLAB 5.0版 1999年,MATLAB 5.3版 2000年,MATLAB 6.0版 2001年,MATLAB 6.1版 2002年,MATLAB 6.5版 2004年,MATLAB 7.0版,第一讲 MATLAB初步认识,2020/9/18,MATLAB在通信中的应用,7,1.1.2 MATLAB应用领域 仿真和建模 实时仿真 自动控制 信号处理与通信 数据分析、科学计算 算法开发 图形、可视化研究 独立应用开发 其他领域,第一讲 MATLAB初步认识,2020/9/18,MATLAB在通信中的应用,8,1.1.3 MATLAB的主要特点1简单易学 与C语言几乎一致 2、编程简洁、效率高 语言规则不强,无需编译 3、强大而简单的绘图功能 二、三维绘图,直观展示结果,第一讲 MATLAB初步认识,2020/9/18,MATLAB在通信中的应用,9,4、扩展性强,MATLAB主工具箱 符号数学工具箱 SIMULINK仿真工具箱 控制系统工具箱 信号处理工具箱 图象处理工具箱 通信工具箱 系统辨识工具箱 神经元网络工具箱 金融工具箱,第一讲 MATLAB初步认识,2020/9/18,MATLAB在通信中的应用,10,1信号处理工具箱(SignalProcessingToolbox),包括 1)数字和模拟滤波器设计、应用及仿真; 2)谱分析和估计; 3)FFT变换; 4)DCT变换。 2通信工具箱(CommunicationToolbox),包括: 1)信号编码; 2)调制解调; 3)滤波器和均衡器设计; 4)通道模型; 5)多路访问; 6)错误控制编码。,第一讲 MATLAB初步认识,2020/9/18,MATLAB在通信中的应用,11,第二讲 MATLAB的基础准备及入门,一、MATLAB的安装 二、目录结构与环境变量 三、MATLAB工作环境 四、命令窗口(Command Window) 五、历史命令窗口(Command History) 六、工作空间窗口(Workspace) 七、MATLAB的程序编辑器 八、保存和检索数据 九、帮助与在线查询,2020/9/18,MATLAB在通信中的应用,12,第二讲 MATLAB的基础准备及入门,一、MATLAB的安装,A碟:Matlab主程序及工具箱扩展包; B碟:帮助文件。 建议安装双碟版的Matlab 6.1、6.5或7.0,并且采用完全安装。完全安装需要大约1.4G的硬盘空间。,2020/9/18,MATLAB在通信中的应用,13,第二讲 MATLAB的基础准备及入门,二、Matlab的目录结构,1、MATLAB的目录结构。 正确安装MATLAB后,在硬盘上生成一个文件夹,如C:MATLAB,在这个根目录下有: binextern demoshelp javartw simulinkstateflow toolboxsys jauninstall work,2020/9/18,MATLAB在通信中的应用,14,第二讲 MATLAB的基础准备及入门,二、Matlab的目录结构,(1) C:matlabbin 该目录下有建立MEX文件所需的批处理文件和必需的二进制文件。 (2) C: matlabextern 包含MATLAB与C或FORTRAN语言交互所需的函数定义和链接库。 (3) C:matlabtoolbox 工具箱目录,该目录包含以下子目录: matlab MATLAB核心工具包 simulinkSimulink函数和工具,2020/9/18,MATLAB在通信中的应用,15,第二讲 MATLAB的基础准备及入门,二、Matlab的目录结构,(4) C:matlabwork 这是MATLAB的工作空间,在启动系统时直接进入该目录用以保存用户自己的.mat或.m文件。 作为MATLAB的高级用户,应对MATLAB安装后的目录有深入的了解。,2020/9/18,MATLAB在通信中的应用,16,第二讲 MATLAB的基础准备及入门,三、MATLAB的工作环境,Command Window 命令窗口,Workspace 工作空间窗口 或 Current Directory 当前目录窗口,Command History 命令历史窗口,2020/9/18,MATLAB在通信中的应用,17,第二讲 MATLAB的基础准备及入门,四、命令窗口的菜单,Set Path 因机房计算机安装了硬盘还原卡,所以上机做实验时,每位同学在E盘下建立一个目录(英文),然后将该目录加入到Matlab搜索路径中,并将其设置为当前目录(Current Directory)。,2020/9/18,MATLAB在通信中的应用,18,第二讲 MATLAB的基础准备及入门,四、命令窗口的命令,命令窗口是MATLAB的主要交互窗口,MATLAB命令窗口中的“”为命令提示符,表示MATLAB正在处于准备状态。,2020/9/18,MATLAB在通信中的应用,19,第二讲 MATLAB的基础准备及入门,四、命令窗口的命令,1窗口命令 clf:清除当前Figure窗口里的所有非隐藏图形对象。 Close:关闭当前的Figure窗口。 Close all:关闭所有的Figure窗口。 clc:清除命令窗口里的内容,光标回到窗口的左上角,2020/9/18,MATLAB在通信中的应用,20,第二讲 MATLAB的基础准备及入门,五、历史命令窗口(Command History),在历史窗口中记录着用户在MATLAB命令窗中所输入过的全部命令,在这个窗口中可以实现几个主要的功能是: 1、单行或多行命令的复制 在命令历史窗口用鼠标选定所要拷贝的命令,用右键弹出上下文菜单,选中Copy项,然后可以用Ctrl+V将其复制到命令窗口或任何地方。 2、单行命令的运行 选中单行命令,用右键弹出上下文菜单,选中Evaluate Selection,即会在命令窗口运行该行命令,也可直接双击该行命令,随即在命令窗口看到运行结果。 3、多行命令的运行 方法同于单行命令;选中多行命令,用右键弹出上下文菜单,选中Evaluate Selection,即会在命令窗口运行该多行命令。,2020/9/18,MATLAB在通信中的应用,21,第二讲 MATLAB的基础准备及入门,五、历史命令窗口(Command History),4、把多行命令写成M文件 选中多行命令,用右键弹出上下文菜单,选中Create M-File菜单项,就引出M文件编辑器,并将多行文本拷入,再利用M文件编辑器的操作保存即可。 5、命令窗口实录命令diary 在MATLAB运行过程中如果希望将当前命令窗口中所有命令(包括结果)保存起来,可以用diary命令。 (1)在命令窗口运行命令 diary my_diary,全部命令记录在内存中; (2)运行命令 diary off后,内存中的全部内容记录在名为my_diary的日志文件中。(注意:日志文件可以带扩展名.txt,也可以不带扩展名),2020/9/18,MATLAB在通信中的应用,22,第二讲 MATLAB的基础准备及入门,六、工作空间窗口(Workspace),工作空间窗口又称内存浏览器,在其中保存着用户所执行命令或程序的中间变量和结果。,2020/9/18,MATLAB在通信中的应用,23,第二讲 MATLAB的基础准备及入门,七、MATLAB的程序编辑器,进入程序编辑器 在菜单File中选New(M-File)或Open项; 直接利用按钮工具栏中的按钮New或Open; 在命令窗口中输入Edit命令。 MATLAB 的这一编辑器主要用来编辑M文件。当一组命令通过改变某个变量的值就可以反复使用去解决不同的问题时,可以利用M文件编辑器。,2020/9/18,MATLAB在通信中的应用,24,第二讲 MATLAB的基础准备及入门,七、MATLAB的程序编辑器,例1:画出指数衰减曲线y1=exp(-t/3)*sin(3*t)和它的包络y2=exp(-t/3),t的取值范围是(0,4pi)。 %example1.m t=0:pi/100:4*pi; y2=exp(-t/3); y1=y2.*sin(3*t); plot(t,y1,-r,t,y2,:b,t,-y2,:b) 存为example1.m,然后选中 下拉菜单Debug|Run运行得到右图。,2020/9/18,MATLAB在通信中的应用,25,第二讲 MATLAB的基础准备及入门,八、数组编辑器(Array Editor),当输入大型数组时建议使用数组编辑器。 在命令窗口中给一个变量赋为“空”阵; 在工作空间浏览器中双击该变量,打开数组编辑器; 在左上方的行(size)、列(by)数栏中填写待建数组的大小,于是在编辑窗口出现数组元素格;(7.0版本中自动根据元素个数确定维数。) 逐格填写元素值。与此同时在内存浏览器中的相应变量已经改变。,2020/9/18,MATLAB在通信中的应用,26,第二讲 MATLAB的基础准备及入门,八、保存和检索数据,当你在工作窗中做了一些运算之后,需要暂时休息一下,希望将所作的工作保存,以便以后接着做下去,可以点击File|Save Workspace As项,会弹出一个对话框,选择保存路径并键入文件名,按“保存”键。当再次开始工作时,用File|Load workspace 或File|Import Data再把该文件装入,原来定义的变量又可以使用了。 例1:建立一个工作文件(.mat) 在工作窗中键入 a=1 2 3;4 5 6;7 8 9 b=1;2;3 a*b 按Enter,则计算出结果 ans=14;32;50 在File菜单中点取Save workspace将工作窗中内容存为file1.mat,系统默认保存路径为MATLABwork,2020/9/18,MATLAB在通信中的应用,27,第二讲 MATLAB的基础准备及入门,九、保存和检索数据,重新启动MATLAB,键入a,回车,系统回复 ? Undefined function or variable a.(表明此时系统中变量a没有定义) 在命令窗口键入Load file1.mat将文件装入,再键入a,回车,系统将恢复。 a= 1 2 3 4 5 6 7 8 9 键入who,显示出当前工作 环境下的变量名。 键入whos,显示出当前工作 环境下所有变量的具体信息。,2020/9/18,MATLAB在通信中的应用,28,第二讲 MATLAB的基础准备及入门,十、帮助与在线查询,1、查找Matlab基本函数的信息(Elementary math functions) help elfun 2、查找某个具体函数的信息及使用方法:help 函数名 例:查找有关正弦函数的信息: help sin 3、浏览器界面的帮助信息 helpwin 显示帮助总览。在此界面下可以查找所有基本函数和专用函数的详细信息。,2020/9/18,MATLAB在通信中的应用,29,第三讲 MATLAB的基本运算,一、数组与矩阵的创建 二、矩阵运算与数组运算 三、基本元素群函数,2020/9/18,MATLAB在通信中的应用,30,1、变量命名 A变量名必须是不含空格的单个单词; B变量名区分大小写; C. 变量名最多不超过63个字符; D变量名必须以字母打头,之后可以是任意字母、数字或下划线,变量名中不允许使用标点符号。 E.标准的函数名及命令名必须用小写字母。 F .默认变量:ans,第三讲 MATLAB的基本运算,2020/9/18,MATLAB在通信中的应用,31,2MATLAB内部特殊变量和常数,变量ans:临时变量,通常指示当前的答案。 常数eps:表示浮点相对精度;变量值作为一些MATLAB函数计算的相对浮点精度,按IEEE标准,esp= 2-52,(3)常数pi:表示圆周率 =3.1415926535897,(4)常数Inf:代表正无穷大 (5)虚数单位i,j:表示复数虚部单位,相当于 。 (6) NaN:表示非数值。如当Inf-Inf,Inf/Inf, 0*Inf,0/0均产生该结果。,2020/9/18,MATLAB在通信中的应用,32,3赋值语句(1) 变量=表达式 或数;,第三讲 MATLAB的基本运算,整个矩阵的值应放在方括号中; 同一行中各元素之间以逗号“,”或空格分开; 不同行的元素以分号“;”隔开。,(2) 表达式 其中表达式是用运算符将有关运算量连接起来的式子,其结果是一个矩阵。,(3) 赋值规则:,2020/9/18,MATLAB在通信中的应用,33,4、生成数组的函数 “:”的用法 例1:av=1:10 %产生一个从 1 到10的数组,间隔为 1 (行向量) av=1,2,3,4,5,6,7,8,9,10 例2:aw=1:2:10 %产生一个从 1 到10 之间的数组,间隔为 2 aw=1,3,5,7,9 例3:as=0:pi/40:4*pi as = 0 0.7854 1.5708 2.3562 3.1416 3.9270 4.7124 5.4978 6.2832 例4:al=10:-2:0 al = 10 8 6 4 2 0,第三讲 MATLAB的基本运算,2020/9/18,MATLAB在通信中的应用,34,4、生成数组的函数 常用数组函数 例1:aj=linspace(0,1,10) %利用线性等分指令生成向量 (间隔1/9) aj = 0 0.1111 0.2222 0.3333 0.4444 0.5556 0.6667 0.7778 0.8889 1.0000 (0 1/9 2/9 3/9 1 ) 例2:ap=rand(1,5) %产生15的随机数矩阵。范围(0,1),均值:0.5 ap = 0.0153 0.7468 0.4451 0.9318 0.4660,第三讲 MATLAB的基本运算,2020/9/18,MATLAB在通信中的应用,35,5矩阵的元素标注,在MATLAB中,变量的元素(即矩阵元)用圆括号“()”中的数字(也称为下标)来注明, 一维矩阵(也称数组)中的元素用一个下标表示. 二维矩阵由两个下标数构成,以逗号分开. 对三维矩阵则由三个下标数构成。,2020/9/18,MATLAB在通信中的应用,36,矩阵元素的标示:,A(:,j) 数组A的第j列全部元素 A(i,:) 数组A的第i行全部元素 A(i,j) 数组A的第i行第j列的元素 A(:,j:L:j+n) 数组A的第j列-第j+n列(下 标增量为L)全部元素 A(i:k:i+m,:) 数组A的第i行-第i+m行(下标 增量为k)元素 A(i:k:i+m,j:L:j+n) 数组A的第i行-第i+m 行(下标增量为k)并在第j列 -第j+n列(下标增量为L)全 部元素,2020/9/18,MATLAB在通信中的应用,37,例 演示建立34的矩阵并取子数组的方法。,a=1 2 3 4;5 6 7 8;9 10 11 12; a(1,:) a(:,end) a24=a(2,4) % 取a的第二行、第四列的元素 a(1:2:4,:) a(:,1:2:end) a1=a(1,2,2,3,4) a2=a(1,2,2,3,1) a3=a(3,1,:) a(1,3,2,4)=zeros(2) %对a(1,3,2,4)赋值,2020/9/18,MATLAB在通信中的应用,38,在MATLAB中,定义为空矩阵。 给变量X赋空矩阵的语句为X=。 注意,X=与clear X不同, clear是将X从工作空间中删除, 而空矩阵则存在于工作空间中,只是维数为0。,6.矩阵的元素的删除,2020/9/18,MATLAB在通信中的应用,39,7、生成矩阵的常用函数 eye生成单位矩阵 例1: eye(n) %生成n 维的单位阵 eye(m,n) %生成mn 维的单位阵 eye(size(A) %生成与 A同维的单位阵 ones 生成全1阵(常用于大型程序中预先定维) zeros 生成全0阵(常用于大型程序中预先定维) rand 生成均匀随机阵(范围(0,1),均值:0.5) randn 生成正态随机阵(均值:0;方差:1),第三讲 MATLAB的基本运算,2020/9/18,MATLAB在通信中的应用,40,例题,分别建立33的全零矩阵A以及与矩阵A同样大小的全一矩阵。,建立均值为0.6、方差为0.1的5阶正态分布随机矩阵。,2020/9/18,MATLAB在通信中的应用,41,第三讲 MATLAB的基本运算,算术运算:进行数值计算。 关系运算:比较两个操作数的大小。 逻辑运算:进行逻辑运算。,二、矩阵运算与数组运算,2020/9/18,MATLAB在通信中的应用,42,算术运算,1、基本运算 A+B 加法 A*B乘法 AnA(方阵)的n次幂 k*A 数乘矩阵 A/BA右除B(A*inv(B)) BAA左除B(inv(B)*A),2020/9/18,MATLAB在通信中的应用,43,算术运算,2、元素群运算(“” 运算符) k.*A 数乘矩阵(k*A) A.*B对应各元素相乘 A.n矩阵A各元素的n次幂 A./BA对应各元素右除B B.AA对应各元素左除B(A./B) 两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。,2020/9/18,MATLAB在通信中的应用,44,算术运算,3、其它算术运算 AA的共轭转置 conj(A) 或 conj(A)A的转置(conjugate:共轭) inv(A)A的逆阵(inverse),2020/9/18,MATLAB在通信中的应用,45,第三讲 MATLAB的基本运算,(二)、关系运算与逻辑运算 MATLAB提供了6种关系运算符: (大于)、 =(大于或等于)、=(等于)、=不等于)。 MATLAB提供了3种逻辑运算符: ,程序控制结构,2数据的输出 disp(输出项) 其中输出项既可以为字符串,也可以为矩阵。,2020/9/18,MATLAB在通信中的应用,54,例-1 输入x,y的值,并将它们的值互换后输出。 程序如下: x=input(Input x please.); y=input(Input y please.); z=x; x=y; y=z; disp(x); disp(y);,程序控制结构,2020/9/18,MATLAB在通信中的应用,55,2 选择结构,1if语句 在MATLAB中,if语句有3种格式。 (1) 单分支if语句:,程序控制结构,格式之一: if 表达式 语句组A end 其工作流程如图所示。,2020/9/18,MATLAB在通信中的应用,56,程序控制结构,格式之二: if 表达式 语句组A else 语句组B end 其工作流程如图所示。,2020/9/18,MATLAB在通信中的应用,57,例2 计算分段函数的值。 程序如下: x=input(请输入x的值:); if x=0 y= (x+sqrt(pi)/exp(2); else y=log(x+sqrt(1+x*x)/2; end y,程序控制结构,2020/9/18,MATLAB在通信中的应用,58,程序控制结构,格式之三: if 表达式1 语句组A elseif 表达式2 语句组B else 语句组C end 工作流程原理如图2.3所示。,2020/9/18,MATLAB在通信中的应用,59,例-3 输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。 c=input(请输入一个字符,s); if c=A end,程序控制结构,2020/9/18,MATLAB在通信中的应用,60,2switch语句 switch语句根据表达式的取值不同,分别执行不同的语句,其语句格式为: switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 case 表达式m 语句组m otherwise 语句组n end,程序控制结构,2020/9/18,MATLAB在通信中的应用,61,例4 某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示): price200 没有折扣 200price500 3%折扣 500price1000 5%折扣 1000price2500 8%折扣 2500price5000 10%折扣 5000price 14%折扣 输入所售商品的价格,求其实际销售价格。,程序控制结构,2020/9/18,MATLAB在通信中的应用,62,程序如下: price=input(请输入商品价格); switch fix(price/100) case 0,1 %价格小于200 rate=0; case 2,3,4 %价格大于等于200但小于500 rate=3/100; case num2cell(5:9) %价格大于等于500但小于1000 rate=5/100; case num2cell(10:24) %价格大于等于1000但小于2500 rate=8/100; case num2cell(25:49) %价格大于等于2500但小于5000 rate=10/100; otherwise %价格大于等于5000 rate=14/100; end price=price*(1-rate) %输出商品实际销售价格,程序控制结构,2020/9/18,MATLAB在通信中的应用,63,3try语句(matlab特有) 语句格式为: try 语句组1 catch 语句组2 end try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。,程序控制结构,2020/9/18,MATLAB在通信中的应用,64,例5 矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。 程序如下: A=1,2,3;4,5,6; B=7,8,9;10,11,12; try C=A*B; catch C=A.*B; end C lasterr %显示出错原因,程序控制结构,2020/9/18,MATLAB在通信中的应用,65,特殊矩阵 zeros ones rand randn 矩阵运算 算术:点运算(对应运算) 关系 逻辑 程序控制 顺序 选择:if 循环:for while end,小结,2020/9/18,MATLAB在通信中的应用,66,3 循环结构 1for语句 for语句的格式为: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 表达式1:循环变量的初值, 表达式2:循环变量的步长, 表达式3:循环变量的终值。,程序控制结构,2020/9/18,MATLAB在通信中的应用,67,例-6 一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。 程序如下: for m=100:999 m1=fix(m/100); %求m的百位数字 m2=rem(fix(m/10),10); %求m的十位数字 m3=rem(m,10); %求m的个位数字 if m=m13+m23+m33 disp(m) end end,程序控制结构,2020/9/18,MATLAB在通信中的应用,68,2while语句 while 表达式 语句A end,程序控制结构,2020/9/18,MATLAB在通信中的应用,69,例-7 从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。 sum=0; cnt=0; val=input(Enter a number (end in 0):); while (val=0) sum=sum+val; cnt=cnt+1; val=input(Enter a number (end in 0):); end if (cnt 0) sum mean=sum/cnt end,程序控制结构,2020/9/18,MATLAB在通信中的应用,70,控制程序流的其它几个常用命令,暂停命令pause, pause(n)的使用 查看中间运算结果,回车后程序继续运行。 keyboard 将控制权暂时交给键盘,然后当用户输入return时,控制权还给MATLAB break 中断,在for循环中,和if语句配合,跳出循环; continue 跳过位于其后的循环中的其它命令,执行循环的下一步迭代 return 结束return所在的函数的执行,2020/9/18,71,例-8 求100,200之间第一个能被21整除的整数,程序如下: for n=100:200 if rem(n,21)=0 continue end break end n,2020/9/18,MATLAB在通信中的应用,72,1 M文件 1.1 M文件概述 用MATLAB语言编写的程序,称为M文件。 M文件可以根据调用方式的不同分为两类:命令文件(Script File)和函数文件(Function File)。 扩展名为:.m,二、M文件,2020/9/18,MATLAB在通信中的应用,73,例-1 分别建立命令文件和函数文件,将华氏温度f转换为摄氏温度c。 程序1: 首先建立命令文件并以文件名f2c.m存盘。 clear; %清除工作空间中的变量 f=input(Input Fahrenheit temperature:); c=5*(f-32)/9 然后在MATLAB的命令窗口中输入f2c,Input Fahrenheit temperature:73 c = 22.7778,M文件,2020/9/18,MATLAB在通信中的应用,74,程序2: 首先建立函数文件f2c.m。 function c=f2c(f) c=5*(f-32)/9 然后在MATLAB的命令窗口调用该函数文件。 clear; y=input(Input Fahrenheit temperature:); x=f2c(y) 输出情况为: Input Fahrenheit temperature:70 c = 21.1111 x = 21.1111,M文件,2020/9/18,MATLAB在通信中的应用,75,不同点: 命令文件:没有输入参数,不返回输出参数 函数文件:有输入参数,返回输出参数 命令文件:对工作空间变量操作 函数文件:局部变量 命令文件:直接运行 函数文件:不能直接运行,函数调用,M文件,2020/9/18,MATLAB在通信中的应用,76,函数文件由function语句引导,基本结构为: function 输出形参表=函数名(输入形参表) % 注释说明部分 函数体语句 其中以function开头的一行为引导行,表示该M文件是一个函数文件。 函数名的命名规则与变量名相同。文件名与函数名的关系。 输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于一个时,则应该用方括号括起来。,三 函数文件的基本结构,M文件,2020/9/18,MATLAB在通信中的应用,77,M函数文件的基本格式: 函数声明行 H1行(用%开头的注释行) 在线帮助文本(用%开头) 编写和修改记录(用%开头) 函数体,函数文件的基本结构,2020/9/18,MATLAB在通信中的应用,78,函数文件-举例,例 编写函数文件求半径为r的圆的面积和周长 函数文件如下: function s,p=fcircle(r) %CIRCLE calculate the area and perimeter of a circle of radii r %r 圆半径 %s 圆面积 %p 圆周长 %2004年7月30日编 s=pi*r*r; p=2*pi*r;,2020/9/18,MATLAB在通信中的应用,79,函数调用的一般格式是: 输出实参表=函数名(输入实参表) 要注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。 函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。,函数调用,2020/9/18,MATLAB在通信中的应用,80,例 利用函数文件,实现直角坐标(x,y)与极坐标(,)之间的转换。 函数文件tran.m: function rho,theta=tran(x,y) rho=sqrt(x*x+y*y); theta=atan(y/x); 调用tran.m的命令文件main1.m: x=input(Please input x=:); y=input(Please input y=:); rho,the=tran(x,y); rho the,函数调用,2020/9/18,MATLAB在通信中的应用,81,局部变量与全局变量,在函数内临时产生的变量称为局部变量 由调用函数空间、基本工作空间或其它函数工作空间提供的变量称为全局变量。 1.global 格式:global X Y Z 功能:将变量 X、Y、Z定义成全局变量。 2Persistent 格式:persistent X Y Z 功能:将变量X、Y、Z定义成永久变量。persistent 函数只用于函数文件中,使在每次调用时保持变量的值不变。,2020/9/18,MATLAB在通信中的应用,82,第五讲 MATLAB绘图,二维图形绘制 三维图形绘制,2020/9/18,MATLAB在通信中的应用,83,在MATLAB中,图形的绘制必须在图形窗中进行。通常,只要执行了任意一种绘图命令,图形窗口(Figure)就会自动产生。 1figure命令 格式:figure 或 figure(N) 功能:创建一个编号为N图形窗口。,2clf命令:清除当前图形窗口中的所有的内容。 3close命令:关闭图形窗口 格式一:close 或 close (N) 关闭当前图形窗口或指定编号N的图形窗口。 格式二:close all 关闭所有图形窗口。,第五讲 MATLAB绘图,2020/9/18,MATLAB在通信中的应用,84,二维图形绘制,基本绘图命令 plot(Y) plot(X,Y) plot(X,Y,s) plot(X1,Y1,s,X2,Y2,s),plot,2020/9/18,MATLAB在通信中的应用,85,二维图形绘制,plot(Y) 以Y的索引坐标为横坐标,Y本身为纵坐标,绘制图形,【例】 y=rand(100,1); plot(y),2020/9/18,MATLAB在通信中的应用,86,二维图形绘制,plot(X,Y) 以X为横坐标,Y为纵坐标,绘制图形,这是实际应用最常见的,【例】 x=0:0.01*pi:2*pi; plot(x,sin(x),2020/9/18,MATLAB在通信中的应用,87,二维图形绘制,plot(X,Y,s) 以X为横坐标,Y为纵坐标,绘制图形,第3个参数控制图形显示属性(线形、颜色及标识等),2020/9/18,MATLAB在通信中的应用,88,二维图形绘制,plot(X,Y,s) 以X为横坐标,Y为纵坐标,绘制图形,第3个参数控制图形显示属性(线形、颜色及标识等),【例】 x=0:0.01*pi:2*pi; y=sin(x); z=cos(x); plot(x,y,rd,x,z,-.k),2020/9/18,MATLAB在通信中的应用,89,标题与轴标签,对图形加上标题,标明横纵坐标,【例】 x=0:0.01*pi:2*pi; y=sin(x); plot(x,y) title(正弦函数) xlabel(x(0-2pi) ylabel(y=sin(x),title 给图形加标题 xlable 给x轴加标注 ylable 给y轴加标注,2020/9/18,MATLAB在通信中的应用,90,转义符号的标注,在标注中如何输入特殊符号? 字符转换 如:pi 即显示为 Omega 即显示为 无须记住,用时会查,会联想即可 常见符号转义示例,2020/9/18,MATLAB在通信中的应用,91,文本标注,text(x,y,text) gtext(text) 将标注加到图形任意位置,【例】 x=0:0.01*pi:2*pi; plot(x,sin(x) text(3*pi/4,sin(3*pi/4),2020/9/18,MATLAB在通信中的应用,92,坐标轴的形式与刻度,(1)设置坐标轴函数axis 格式一:axis(xmin xmax ymin ymax zmin zmax) 功能:对当前三维图形对象的X、Y和Z轴进行标定。 格式二:axis off(on) 功能:使坐标轴、刻度、标注和说明变为不显示(显示)状态。,(2)对数坐标轴命令semilogx、 semilogy、loglog 格式:semilogx(.) semilogy(.) 功能:在X/Y轴上采用常用对数来进行标定。该命令的调用格 式与plot函数的调用格式相同。,(3)极坐标函数polar 格式:polar(theta,rho,s) 功能:绘制由S指定样式、颜色的极坐标图形。,2020/9/18,MATLAB在通信中的应用,93,图形的样式,(4)图形边框控制命令box 格式:box on(off) 对所绘制的图形添加图形边框(默认状态),或关闭图形边框。,(5)设置网格线命令grid 格式:grid on(off) 功能:对当前坐标图加上网格线或撤消网格线。,(6)图形标注函数legend 格式:legend( string1, string2, string3, .) 功能:在当前图中添加图例。 格式:Legend off 功能:撤消当前坐标图上的图例。,2020/9/18,MATLAB在通信中的应用,94,多次绘制得到重叠效果 hold on 开启图形保持功能 hold off 关闭图形保持功能 坐标限若不一致,自动调整,图形的保持,【例】 x=0:0.1*pi:2*pi; y=sin(x); z=cos(x) plot(x,y,-*) hold on %开启 plot(x,z,-o) plot(x,y+z,-h) legend(sin(x),cos(x),sin(x)+cos(x),0) hold off %关闭,2020/9/18,MATLAB在通信中的应用,95,不同坐标绘图,不同坐标轴下叠加图形,通过在相同位置创建新的坐标轴来实现图形叠加 方便数据的比较观察,例:一个将有害的废料转化为无害的生物医学实验。实验 中的废料的聚乙烯物质(TCE)和相关温度数据如下: TCE=515 420 370 250 135 120 60 20; temp=29 23 27 25 20 23 23 27;,2020/9/18,MATLAB在通信中的应用,96,不同坐标绘图,不同坐标轴下叠加图形,上述数据在35天中每隔5天一个采样得到,即 days=0:5:35; tce=515 420 370 250 135 120 60 20; temp=29 23 27 25 20 23 23 27; plotyy(days,tce,days,temp);,2020/9/18,MATLAB在通信中的应用,97,二维图形绘制,子图 几个图形在同一图形窗口表示出来,subplot,格式:subplot(m,n,p) 或 subplot(nmp),将图形窗口分成mn个子图形窗口,并选择第p个子图形窗口作为当前图形窗口,供绘制函数作图使用。,2020/9/18,MATLAB在通信中的应用,98,子图,b=1,0.5;a=1.-0.5; n=0:30; d=(n-0)=0; x=cos(0.2*pi*n+pi/4); h=filter(b,a,d); h1=impz(b,a,31); y=filter(b,a,x); w=0:500*2*pi/500; H=freqz(b,a,w); M=abs(H);A=angle(H); subplot(231);stem(n,h1); title(使用impz函数所求单位脉冲响应); subplot(234);stem(n,h); title(使用fliter函数所求单位脉冲响应); subplot(233);stem(n,x);title(输入信号); subplot(236);stem(n,y);title(输出信号); subplot(232);plot(w/pi,M);title(幅度响应); subplot(235);plot(w/pi,A/pi);title(相位响应);,1,2,3,4,5,6,2020/9/18,MATLAB在通信中的应用,99,二维图形绘制,二维特殊函数图,表:Matlab中常见二维特殊图形函数,2020/9/18,MATLAB在通信中的应用,100,二维图形绘制,例,【例】 x=1:10; y=rand(10,1); bar(x,y) subplot(2,1,2) x=11 12 34 35 36 58 59 54 80 81 82 83 84 85 86; hist(x),bar,hist,2020/9/18,MATLAB在通信中的应用,101,例,绘制阶梯曲线 x=0:pi/20:2*pi;y=sin(x);stairs(x,y),2020/9/18,MATLAB在通信中的应用,102,h2=1 1;1 -1;h4=h2 h2;h2 -h2; h8=h4 h4;h4 -h4; t=1:8; for i=1:8 subplot(8,1,i); stairs(t,h8(i,:) axis(off) end,2020/9/18,MATLAB在通信中的应用,103,例:绘制火柴杆绘图 t=0:0.2:2*pi; y=cos(t); stem(y),2020/9/18,MATLAB在通信中的应用,104,例:绘制直方图 t=0:0.2:2*pi; y=cos(t); bar(y),2020/9/18,MATLAB在通信中的应用,105,x=1 2 3 4 5 6 7;y=0 0 0 1 0 0 0;pie(x,y),2020/9/18,MATLAB在通信中的应用,106,三维图形绘制,常用基本命令plot3() plot3(x,y,z) %x,y,z为3个相同维数的向量 plot3(X,Y,Z) %X,Y,Z为3个相同阶数的矩阵 plot3(X,Y,Z,s)%s为定义线形的参数,plot3,2020/9/18,MATLAB在通信中的应用,107,三维图形绘制,例:绘制三维螺旋线,【例】 t = 0:0.1:10*pi; x = exp(-t/20).*cos(t); y = exp(-t/20).*sin(t); z = t; plot3(x,y,z); xlabel(x); ylabel(y); zlabel(z);,2020/9/18,MATLAB在通信中的应用,108,三维图形绘制,Matlab中主要用mesh,surf命令绘制二元函数,mesh(x,y,z)画网格曲面,x, y, z是数据矩阵,分别表示数据点的横坐标、纵坐标和函数值,该命令将数据点在空间中描出,并连成网格,surf(x,y,z)画完整曲面, x, y, z是数据矩阵,分别表示数据点的横坐标、纵坐标和函数值,该命令将数据点所表示曲面画出,2020/9/18,MATLAB在通信中的应用,109,三维图形绘制,绘图示例,z=peaks(20); surf(z), t=0:pi/6:4*pi; x,y,z=cylinder(4+cos(t),30); surf(x,y,z),2020/9/18,MATLAB在通信中的应用,110,三维图形绘制,创建3-D网格和表面 理解Matlab向量式计算的好处,x = -1 0 1; y = 9 10 11 12; X,Y = meshgrid(x,y) Matlab 返回 X = -1 0 1 -1 0 1 -1 0 1 -1 0 1 Y = 9 9 9 10 10 10 11 11 11 12 12 12,meshgrid(x,y)生成X,Y矩阵 X重复x为行向量 Y重复y为列向量,2020/9/18,MATLAB在通信中的应用,111,三维图形绘制,例:马鞍面绘制,%马鞍面函数 %z=x2-2y2 t2=-30:.3:30; x2,y2=meshgrid(t2); z2=x2.2-2*y2.2; mesh(x2,y2,z2); title(马鞍面),2020/9/18,MATLAB在通信中的应用,112,三维图形绘制,柱面与球面 (1) 圆柱面 t=0:pi/180:2*pi; r=1; X,Y,Z=cylinder(r,50); %画圆柱面 mesh(X,Y,Z) (2) 旋转面 t=0:pi/12:3*pi; r=abs(exp(-0.25*t).*sin(t); X,Y,Z=cylinder(r,30); mesh(X,Y,Z),2020/9/18,MATLAB在通信中的应用,113,三维图形绘制,柱面与球面 (3) 球面 a、球面画法 X,Y,Z=sphere(30); mesh(X,Y,Z) axis(square) b、地球表面气温分布示意图 X,Y,Z=sphere(30); T=abs(Z); surf(X,Y,Z,T) caxis(-max(max(T),max(max(T) colormap(hot),2020/9/18,MATLAB在通信中的应用,114,三维图形绘制,绘制三维饼状图,【例】 x=2,4,6,8; pie3(x,1,1,1,1) %第二个参数控制各块的分离,2020/9/18,MATLAB在通信中的应用,115,小结,MATLAB 基本集成环境 命令窗口、工作空间窗口、历史记录窗口、当前目录 MATLAB 运算 变量、赋值、函数、特殊矩阵函数 MATLAB 程序设计 M文件、函数文件、程序控制 MATLAB 绘图 二、三维曲线绘制、标注,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!