1、通信系统仿真通信系统仿真Email:相关书籍Matlab/Simulink通信系统建模与仿真实例分析通信系统建模与仿真实例分析邵邵玉斌玉斌,清华大学出版社清华大学出版社基于基于Matlab的通信系统仿真的通信系统仿真赵静等赵静等,北京航空航天北京航空航天大学出版社大学出版社Matlab及在电子信息类课程中的应用及在电子信息类课程中的应用唐向宏等唐向宏等,电电子工业出版社子工业出版社MATLAB基础教程基础教程薛山薛山,清华大学出版社清华大学出版社教学目标v了解通信系统建模仿真思想与方法了解通信系统建模仿真思想与方法v掌握掌握MatlabMatlab语言的基本操作语言的基本操作v学会使用学会使用
2、SimulinkSimulink进行建模与仿真进行建模与仿真对学习者的要求v 三个重要环节三个重要环节 课前预习课前预习 课上认真听讲,思考课上认真听讲,思考 课后实践、消化课后实践、消化v 经常进行阶段应用经常进行阶段应用 掌握知识的窍诀:反复上机实践掌握知识的窍诀:反复上机实践其他约定v不得迟到、早退、不得迟到、早退、缺课缺课,有事请假,有事请假v上课时请关闭手机或者调静音上课时请关闭手机或者调静音v迟交的作业恕不修改,只作记录迟交的作业恕不修改,只作记录v最终成绩最终成绩= = 期末考试成绩期末考试成绩+ +平时成绩平时成绩内容内容通信系统建模与仿真通信系统建模与仿真1Matlab简介简
3、介2Matlab语言基础语言基础3内容内容通信系统建模仿真通信系统建模仿真1分类分类概念、方法概念、方法工具工具1.1 通信仿真的概念通信仿真的概念v在对原有的通信系统做出改进或建立一个新系统之前,通常需要对这个系统进行建模和仿真,通过仿真结果衡量方案的可行性,从中选择最合理的系统配置和参数设置,然后再应用于实际系统中。这个过程就是通信仿真。 1.1 通信仿真的概念通信仿真的概念v随着数字通信技术的发展,特别是与计算机技术的相互融合,通信系统和信号处理技术变得越来越复杂。 v强大的计算机辅助分析与设计工具和系统仿真方法作为将新的技术理论成果转换为实际产品的高效而低成本途径越来越受到业界的青睐。
4、1.1 通信仿真的概念通信仿真的概念建模和仿真的作用和意义:建模和仿真的作用和意义: v 利用系统建模和软件仿真技术,我们几乎可以对所有的设计细节进行分层次的建模和评估。 v 通过仿真技术和方法,我们可以有效地将数学分析模型和经验模型结合起来。 v 利用系统仿真方法,可以迅速构建一个通信系统模型,提供一个便捷,高效和精确的评估平台。1.1 通信仿真的概念通信仿真的概念系统仿真的数学基础系统仿真的数学基础v 定义:定义:仿真也称为模拟,在本质上,系统的计算机仿真就是根据物理系统的运行原理建立相应的数学描述并进行计算机数值求解的过程。 v 建模和仿真过程建模和仿真过程 建立系统数学模型或仿真模型
5、编写系统的计算机仿真模型 求解 分析v 关键问题关键问题 求解算法 算法的改进 简化系统模型 1.1 通信仿真的概念通信仿真的概念计算机仿真的一般过程计算机仿真的一般过程v建立计算机程序(层次化的)v执行仿真v对仿真模型和仿真结果的检验v仿真验证包含以下方面内容: 对仿真数学模型有效性的验证。 对计算机仿真模型(程序)的验证。 对仿真算法的验证。 仿真结果置信度分析。1.2 通信仿真的基本方法通信仿真的基本方法将给定问题映射为仿真模型。把整个问题分解为一组子问题。选择合适的建模、仿真和估计方法,并将其用于解决这些子问题。综合各子问题的解决结果以提供对整个问题的解决方案。1.3 通信系统模型的分
6、类通信系统模型的分类v按照系统层次分类v按照信号类型分类v按照系统特征分类1.3 通信系统模型的分类通信系统模型的分类按照系统层次分类按照系统层次分类 通信系统的最高层次描述是通信网络层次 在网络层次之下,是对通信节点和链路以及传输信号的具体化,称为链路层次模型。 电路实现层次的模型。 1.3 通信系统模型的分类通信系统模型的分类按照信号类型分类按照信号类型分类 根据函数类型的不同可以将信号划分为模拟信号,数字信号,时间连续信号,时间离散信号等。 按照链路层通信系统仿真模型中流通的信号类型不同,可以将其划分为连续时间系统,离散时间系统,模拟系统,数字系统以及混合系统等。 1.3 通信系统模型的
7、分类通信系统模型的分类按照系统特征分类按照系统特征分类 恒参系统 变参系统或时变系统 确定系统 随机系统 无记忆系统 有记忆系统或(系统的当前输出与输入信号的历史值有关)1.4 通信系统仿真的优点和局限性通信系统仿真的优点和局限性优点:优点: v 难以使用解析法求解的情况下系统仿真手段就成为了一个极为有效的工具。 v 利用仿真技术往往可以绕过艰深的甚至是不可能的数学解析求解,而较为轻易地获得问题的数值结果。 v 在对现代通信系统新协议、新算法和新的体系结构的设计和性能评估中,只能通过仿真来检验所考察的对象,以验证有关的假设,评价算法的性能。 v 仿真技术也是理解原理,验证理论,进行探索和发现的
8、有效途径。 1.4 通信系统仿真的优点和局限性通信系统仿真的优点和局限性缺点缺点v模型的建立、验证和确认比较困难。 v对实际系统的建模的原理和方法不当使得与实际系统的差别较大。 v建模过程中忽略了部分次要因素,使得模型仿真结果偏离实际系统。 v仿真试验时间太短,给结果分析带来较大误差。 v随机变量的概率分布类型或参数选取不当。 v仿真输出结果的统计误差。 v计算机字长、编码和应用算法也会影响仿真结果。 1.5 系统建模仿真方法与仿真工具系统建模仿真方法与仿真工具系统建模仿真方法与仿真工具的关系系统建模仿真方法与仿真工具的关系v 仿真工具是实现建模和数值求解过程的软件和硬件平台。我们所希望的现代
9、仿真平台和编程语言环境具有如下基本特征: 简便高效的仿真描述语言。 层次化和模块化建模的能力。 可视化的建模方式。 软件硬件协同仿真的能力。 交互性和图形环境。 跨平台和可移植性。 1.5 系统建模仿真方法与仿真工具系统建模仿真方法与仿真工具仿真环境的构成和要求仿真环境的构成和要求v 模块库。 v 模块编辑和配置器。 v 仿真管理器。 v 后处理部分。 v 文件和数据库管理。 v 帮助文档。 1.5 系统建模仿真方法与仿真工具系统建模仿真方法与仿真工具常用仿真工具的选择常用仿真工具的选择v 网络层次的建模:OPNET, NSv 链路层次的仿真:Matlab/Simulink,Systemvie
10、w,Scilab以及C, C+ v 电路实现层次的仿真:Spice,VHDLv 本课程以Matlab/Simulink作为建模和仿真平台作业作业v安装MATLAB系统内容内容Matlab 简介简介2Matlab窗口环境窗口环境Matlab是什么?是什么?2.1 Matlab是什么?是什么?一、概述 MATLAB的名称源自Matrix Laboratory,它的首创者是在数值线性代数领域颇有影响的Cleve Moler博士,他也是生产经营MATLAB产品的美国Mathworks公司的创始人之一。 MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和可视化集成
11、在一起,并提供了大量的内置函数,从而使其被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作中。MATLAB产品族可以用来进行如下工作:v数值分析;v数值和符号计算;v工程与科学绘图;v控制系统的设计与仿真;v数字图像处理;v数字信号处理;v通讯系统设计与仿真;v财务与金融工程等。 2.1 MATLAB简介简介二、 MATLAB仿真的意义 当在实际电子通信系统中进行试验研究比较困难或者根本无法实现时,仿真技术就成为必然的选择。 2.1 MATLAB简介简介 MATLAB与其它计算机高级语言如C,C+等相比,MATLAB语言编程要简洁得多,编程语句更加接近数学描述,可读性好,其
12、强大的图形功能和可视化数据处理能力也是其它高级语言望尘莫及的。对于具有任何一门高级语言基础的学生来说,学习MATLAB十分容易。 2.1 MATLAB简介简介 MATLAB使得人们摆脱了常规计算机编程的繁琐,让人们能够将大部分精力投入到研究问题的数学建模上。可以说,应用MATLAB这一数学计算和系统仿真的强大工具,可以使科学研究的效率得以成百倍的提高。 2.1 MATLAB简介简介二、MATLAB特点v跨平台的数学语言v超高级语言v语法简单,编程风格接近数学风格v强大的绘图功能v计算精度很高v拥有学科众多,领域广泛的工具箱v可移植 2.2 MATLAB特点特点三、MATLAB入门操作v 命令窗
13、口 Command Windowv 历史命令窗口 Command Historyv 当前目录窗口 Current Directoryv 工作空间窗口 Workspace 2.3 MATLAB界面界面1. Command Window 可显示除图像以外的所有结果v最简单的计算器使用法v准备阶段 2.3 MATLAB界面界面vMATLAB语句形式 变量表达式; 通过等号将表达式的值赋予变量。 当键入回车键时,该语句被执行。 语句执行之后,窗口自动显示出语句执行的结果。 如果不希望结果回显,只需在语句后加分号即可。 2.3 MATLAB界面界面v命令行编辑器 方向键和控制键可以编辑修改已输入的命令
14、:回调上一行命令 :回调下一行命令 多行命令() : 如果命令语句超过一行或者太长希望分行输入,可以使用多行命令继续输入 2.3 MATLAB界面界面例如:例如:S=1-12+13+4+ 9-4-18;v复数和复数矩阵 MATLAB把复数作为一个整体处理。虚数单位用预定义变量i或j表示; 复数z=a+bi= 直角坐标是和极坐标系之间转换的MATLAB指令: real(z) imag(z) abs(z) angle(z)MATLAB的矩阵元素允许是复数、复变量和由它们组成的表达式ire 2.3 MATLAB界面界面v指令窗的常用控制指令 clc 清除指令窗中显示内容 clear 清除工作空间中保
15、存的变量 exit 关闭/退出MATLAB quit 关闭/退出MATLAB 2.3 MATLAB界面界面2. Command History Window 记录着用户在指令窗中所输入过的所有指令行。 2.3 MATLAB界面界面3. Current Directory Window 组织、管理和使用所有matlab文件和非matlab文件。 2.3 MATLAB界面界面4. Workspace Window 内存变量的查阅、保存和编辑。(who,whos) 2.3 MATLAB界面界面内容内容Matlab 语言基础语言基础3基本运算符基本运算符变量变量绘图绘图常用函数常用函数 基本语句基本语
16、句3.1 Matlab语言基础语言基础: 变量变量v变量的命名 变量无需定义即可使用 变量的名字必须以字母开头,之后可以是任意字母、数字或下划线(不能超过31个字符) 变量名称区分字母的大小写 不能包含空格、标点v变量操作 在命令窗口中,同时存储着输入的命令和创建的所有变量值,它们可以在任何需要的时候被调用 采用clear将清除内存内的所有变量 采用“clear 变量名”清除指定变量3.1.1 矩矩 阵阵v矩阵的赋值要求 整个矩阵的值必须放在方括号中; 同一行中各元素之间以逗号“,”或者空格分开; 不同行的元素以分号“;”隔开。3.1.1 矩矩 阵阵v操作结果? a=1,2,3,4,5,6 b
17、=1,2,3; 4,5,6 c=1,2,3;4,5,6; 1,2,3;4,5,63.1.2变量元素的标注变量元素的标注v变量的元素用圆括号“()”中的数字来注明 a=1,2,3;4,5,6;7,8,9; a(2,2) a(4,4)=5.6 size(a)3.1.3 赋值技巧赋值技巧v在MATLAB中,为变量的赋值提供一些简便快捷的方法 冒号:产生递进向量 t=i:j:k (t=1:2:10 t=1:10) 利用冒号给全行赋值 a(5,:)=5,4,3,2 利用行,列标注构成新的矩阵 b=a(2,4,1,3) a(2,4,5,:)=3.1.4特殊的矩阵和数组特殊的矩阵和数组v除了采用直接输入方法
18、对变量赋值外,也可利用MATLAB的内部函数来对变量赋值,利用这些函数来创建和生成特殊矩阵或数组。 在MATLAB中提供了许多生成矩阵的函数命令,这些函数命令存放在“matlab/elmat”目录下。3.1.4特殊矩阵和数组特殊矩阵和数组1v单位矩阵函数 产生在对角线元素为1,其他元素为0 的单位矩阵。 a=eye(n) a=eye(m,n) a=eye(size(b)3.1.4特殊矩阵和数组特殊矩阵和数组2vzero函数 a= zero(n) a= zero(m,n) a= zero(size(b)vones函数 a= ones(n) a= ones(m,n) a= ones(size(b)
19、3.1.4特殊矩阵和数组特殊矩阵和数组3vrand及randn函数 X=rand(m,n) 产生在(0,1)之间均匀分布的随机一维数组或行矢量 X=randn(m,n)产生均值为0,方差为1的正态分布的随机一维数组或行矢量 3.1.5内部特殊变量和常数内部特殊变量和常数 ans:临时变量 realmax:最大正浮点数,任何大于该值的运算都会溢出。 realmin:最小正浮点数,任何小于该值的运算都会溢出。 pi:常数,表示圆周率。 Inf:常数 ,表示正无穷大。 i/j:虚数单位,表示复数虚部单位。 NaN:表示非数值,如Inf-Inf, 0/0 3.1.6复数的赋值方法复数的赋值方法可将矩阵
20、元逐个赋予复数 z= 1+2i,3+4i,5+6i,7+8i将矩阵的实部和虚部分别赋值 z= 1,3,5,7+ 2,4,6,8*iv常用的数学运算符运算式中,通常不需要考虑空格多条命令可以放在一行中同行中各条命令可用分号隔开,表示禁止结果显示同行中各条命令也可用逗号隔开,表示需要显示结果 - 加 - 减 * - 乘 / - 左除 - 右除 - 幂3.2 Matlab语言基础语言基础: 基本运算符基本运算符v常用的关系运算符 - 大于 = - 大于等于 - 小于 = - 小于等于 = - 等于 = - 不等于运算法则 若关系式成立,结果为1 若关系式不成立,结果为03.2 Matlab语言基础语
21、言基础: 基本运算符基本运算符计算计算na=1,2,3;4,5,6 b=2,1;3,4;5,6 a*bna=1,2,3;4,5,6 b=1+1i,2+2i,3+3i;4+4i,5+5i,6+6i a.*bv常用的逻辑运算符 & - 与 | - 或 ! - 非运算法则 若逻辑真,结果为1 若逻辑假,结果为03.2 Matlab语言基础语言基础: 基本运算符基本运算符v其他常见符号3.2 Matlab语言基础语言基础: 基本运算符基本运算符 = - 变量赋值 % - 注释符 - 共轭转置符 . - 转置符 : - 冒号运算符举例: n:s:m 产生nm、步长为s的序列v循环语句 for-end循环
22、 :循环次数事先确定时使用 while-end 循环:循环次数不能事先确定时使用3.3 Matlab语言基础语言基础: 基本语句基本语句for i=n:s:m 语句体end s 为步长可以为正数,负数或小数while 表达式 语句体end表达式为真,执行语句体表达式为假,终止该循环v分支语句 if-elseif-else-end: 具有优先级 switch-case-otherwise-end:无优先级3.3 Matlab语言基础语言基础: 基本语句基本语句if 表达式1 语句体1elseif 表达式2 语句体2.else 语句体elseend switch 变量 case 变量值1 语句体1
23、 case 变量值2 语句体2 otherwise 语句体otherwiseendv常用的数学函数abs - 求绝对值sin - 正弦cos - 余弦tan - 正切asin - 反正弦acos - 反余弦atan - 反正切sqrt - 求平方根exp - eximag - 求虚部real - 求实部sign - 求符号log - 求自然对数log10 - 以10为底的对数conj - 共轭复数Matlab语言基础语言基础: 常用函数常用函数Matlab语言基础语言基础: 矩阵矩阵v矩阵的生成例如:创建一个33矩阵输入 :a=1 2 3;4 5 6;7 8 9 或者a=1 2 3 4 5 6
24、 7 8 9 屏幕输出: a = 1 2 3 4 5 6 7 8 9 矩阵的元素直接排列在方括号内 行与行之间用分号隔开每行内的元素使用空格或逗号隔开大的矩阵可以用分行输入,回车键代表分号v矩阵的生成举例:输入 a=1:2:10屏幕输出: a= 1 3 5 7 9输入 a=10:-2:1屏幕输出: a= 10 8 6 4 2用线性等间距生成向量矩阵 start : step : end start:起始值 step: 步长(默认为1,可为负值) end: 终止值Matlab语言基础语言基础: 矩阵矩阵v一些常用的特殊矩阵eye(2,3)ans= 1 0 0 0 1 0eye(2)ans= 1
25、0 0 1V=5 7 2; A=diag(V)A= 5 0 0 0 7 0 0 0 2Matlab语言基础语言基础: 矩阵矩阵单位矩阵:eye(m,n); eye(m)零矩阵: zeros(m,n); zeros(m)一矩阵: ones(m,n); ones(m)对角矩阵:对角元素向量 V=a1,a2,an A=diag(V)随机矩阵:rand(m,n)产生一个mn的均匀分布的随机矩阵zeros(2,3)ans= 0 0 0 0 0 0zeros(2)ans= 0 0 0 0ones(2,3)ans= 1 1 1 1 1 1ones(2)ans= 1 1 1 1rand(2,2)ans = 0
26、.4154 0.8744 0.0150 0.9708v矩阵元素的访问 通过确认矩阵下标,可以对矩阵的子块进行插入、提取和重排 注意:MATLAB中矩阵下标从1开始,而不是从0开始Matlab语言基础语言基础: 矩阵矩阵 A(m,n):提取第m行,第n列元素 A(:,n) :提取第n列元素 A(m,:) :提取第m行元素 A(m1:m2,n1:n2):提取m1m2行和n1 n2列的所有元素 A(:) :得到一个长列矢量,其元素按矩阵的列进行排列A= 1 2 3 4 5 6;A(2,1)ans=4A(2,:)ans= 4 5 6 A(:,2)ans= 2 5A(1:2,2:3)ans= 2 3 5
27、 6A(:)ans= 1 4 2 5 3 6v矩阵的扩展与消除 矩阵扩展:如果在原矩阵中一个不存在的地址位置上设定一个数(赋值),则该矩阵会自动扩展行列数,并在该位置上添加这个数,而且在其他没有指定的位置补零。 消除子块:如果将矩阵的子块赋值为空矩阵 ,则相当于消除了相应的矩阵子块。Matlab语言基础语言基础: 矩阵矩阵A= 1 2 3 4 5 6;A(3,2)=7A=1 2 3 4 5 6 0 7 0A(2,:)= A=1 2 3v矩阵的大小Matlab语言基础语言基础: 矩阵矩阵m,n=size(A,x):返回矩阵的行列数m与n 当x=1,则只返回行数m 当x=2,则只返回列数nleng
28、th(A)=max(size(A):返回行数或列数的最大值A= 1 2 3 4 5 6;size(A)ans= 2 3size(A,1)ans= 2 size(A,2)ans= 3v矩阵的运算举例A=1+i 2-2i; -3+3i -4-4i A= 1+ i 2-2i -3+3i -4-4iB=AB= 1- i -3-3i 2+2i -4+4iC=A.C= 1+ i -3+3i 2-2i -4-4iMatlab语言基础语言基础: 矩阵矩阵 转置:转置符号有两种形式 A - 共轭转置 A. - 普通转置 求逆 :inv(A) 求行列式:det(A)v矩阵的四则运算与幂运算 .* - 点乘 . -
29、 点右除 ./ - 点左除 . - 点幂点运算是两个维数相同矩阵对应元素间的运算Matlab语言基础语言基础: 矩阵矩阵 - 矩阵加 - 矩阵减 * - 矩阵乘 / - 矩阵左除 - 矩阵右除 - 矩阵幂内容内容Matlab绘图基础绘图基础3Matlab绘图基础绘图基础vMATLAB提供了丰富的绘图功能 help graph2d可得到所有画二维图形的命令 help graph3d可得到所有画三维图形的命令v plot(x,y,属性)或者stem():绘图v figure:选择图像 figure(1);figure(2);figure(n) 打开不同的图形窗口,以便绘制不同的图形v grid o
30、n:在所画出的图形坐标中加入栅格v grid off:除去图形坐标中的栅格v hold on: 当前图形保持不变,同时允许在这个坐标内绘制另外一个图形v hold off:使新图覆盖旧的图形Matlab绘图基础绘图基础举例: t=0:pi/20:9*pi; f=sin(t); figure(1) plot(t,f,r:*) grid onMatlab绘图基础绘图基础v设定对数坐标Matlab绘图基础绘图基础semilogx:x轴为对数坐标,y轴为线性坐标semilogy:y轴为对数坐标,x轴为线性坐标 v设定轴的范围axis(xmin xmax ymin ymax)axis(equal):将x
31、坐标轴和y坐标轴的单位刻度调整为一样v文字标示Matlab绘图基础绘图基础text(x,y,字符串) 在图形的指定坐标位置(x,y)处,标示单引号括起来的字符串gtext(字符串) 利用鼠标在图形的某一位置标示字符串title(字符串) 在所画图形的最上端显示说明该图形标题的字符串xlabel(字符串),ylabel(字符串) 设置x,y坐标轴的名称。legend(字符串1,字符串,字符串n) 在屏幕上开启一个小视窗,然后依据绘图命令的先后用对应的字符串区分图形上的线t=0:pi/20:5*pi;f=sin(t)figure(1)subplot(121)plot(t,f)grid onsubp
32、lot(122)plot(t,-f)grid onMatlab绘图基础绘图基础subplot(mnk):分割图形显示窗口 m:上下分割个数,n:左右分割个数,k:子图编号内容内容Matlab与数字通信仿真与数字通信仿真4Matlab与数字通信仿真与数字通信仿真Matlab与数字通信仿真与数字通信仿真Matlab与数字通信仿真与数字通信仿真v产生随机数vrandsrc:产生给定符号集合的随机数vrandn :产生正态分布的随机数vrandint :产生均匀分布的随机整数 举例:产生0、1分布的随机序列 randsrc(1,N,0,1;0.5,0.5) randint(1,N)Matlab与数字通
33、信仿真与数字通信仿真v产生随机数0102030405060-0.200.20.40.60.81二 进 制 随 机 数Matlab与数字通信仿真与数字通信仿真Matlab与数字通信仿真与数字通信仿真v数字调制 qammod qamdemod genqammod genqamdemod pammod, pamdemod 建议自己编写!建议自己编写! 举例:进行QPSK调制 输入2比特符号I路Q路00011011-11113-1-11021-1const=1+j,-1+j,1-j,-1-j;y=genqammod(x, const);v数字调制Matlab与数字通信仿真与数字通信仿真-2-1.5-1
34、-0.500.511.52-2-1.5-1-0.500.511.52QPSK星 座 图同 相 分 量正交分量051015202530-1-0.500.51QPSK调 制 后 的 同 相 分 量051015202530-1-0.500.51QPSK调 制 后 的 正 交 分 量Matlab与数字通信仿真与数字通信仿真Matlab与数字通信仿真与数字通信仿真v插值 upsample 建议自己编写!建议自己编写! 举例:进行8倍上采样 N=8; y=upsample(x,N); 050100150200250-1-0.500.51上 采 样 后 的 同 相 分 量050100150200250-1-
35、0.500.51上 采 样 后 的 正 交 分 量Matlab与数字通信仿真与数字通信仿真Matlab与数字通信仿真与数字通信仿真v波形成型2 22sin(/) cos(/)( )(/)(1 4/)t TRt Th tt TR tT y = rcosflt(x, Fd, Fs, type_flag, r, delay) filter=rcosine(Fd,Fs, type_flag, r, delay) y = conv(x,filter) 建议自己编写!建议自己编写!05101520253035404550-0.200.20.40.60.811.2滤 波 器 时 域 响 应Matlab与数字
36、通信仿真与数字通信仿真v波形成型050100150200250300-2-1012滤 波 后 的 同 相 分 量050100150200250300-2-1012滤 波 后 的 正 交 分 量050100150200250-1-0.500.51上 采 样 后 的 同 相 分 量050100150200250-1-0.500.51上 采 样 后 的 正 交 分 量给大家的建议给大家的建议v自己去编写课程相关的函数:v养成好的习惯: 变量、函数的命名有意义,加入注释(%),增强可读性 .m文件(主程序)开头先把环境打扫干净(clc;clear) !注意在子程序中不要用clear 尽量使用矩阵运算 程序尽量模块化,即采用主程序调用子程序 参数值最好集中放在程序的开始部分,以便维护