资源描述
MATLAB 语言及其应用,授课教师:李欣 单位:清华大学,2,课程的作用 课程的目的 课程的特点 课程安排,3,课程的作用,在欧美各高等学校,Matlab成为线性代数、自动控制理论、数字信号处理、时间序列分析、动态系统仿真、图像处理等诸多课程的基本教学工具,成为本科生、硕士生和博士生的必须掌握的基本技能。 在设计研究单位和工业部门,Matlab已被广泛地用于研究和解决各种具体的工程问题。 可以预见,Matlab将在我国科学研究和工程应用中发挥越来越大的作用。,4,讲授MATLAB语言基础入门知识,介绍MATLAB产品的体系、MATLAB桌面工具的使用方法,重点介绍MATLAB的数据可视化、数值计算的基本步骤以及如何使用MATLAB语言编写整洁、高效、规范的程序。并涉及到一些具体的专业应用工具箱(如:信号处理工具箱、图像处理工具箱等)。 通过本课程的学习,了解、熟悉、掌握 MATLAB的基本编程方法,并具有初步的利用计算机处理、解决实际问题的能力,为进一步学习后续的专业课程做好准备。,本课程的目的( Objectives of This Course ),本课程的特点( Features of This Course ) 交叉性课程,是计算机技术、数学理论知识以及诸多工程理论知识的综合。 实践性课程。 内容多,课时少,要求同学上课认真听讲,要充分利用上机实践消化、理解、 掌握课上讲解内容。,5,课程安排,课堂教学:共24学时;(1-12周) 上机试验:共24学时。 (2-13周,周二7-8节,九实401、402、403) 学习成绩: 1)上机实验成绩占30%; 2)考勤 10% ; 3) 考试60% (随堂考试)。 主要参考书 精通MATLAB 6.5张志涌 等编著,北航出版,2003年 高等应用数学问题的Matlab求解 薛定宇等著,清华大学出版社,2004年 Matlab程序设计与应用 刘卫国主编,高等教育出版社,6,授课宗旨,讲授MATLAB的通用功能。 寓教于例,由浅入深。 关于科学计算,着重强调理论概念、算法和实际计算三者之间的关系。,7,第一讲 Matlab概述,前言 Matlab软件概述 Matlab的桌面环境及入门知识,8,1 Matlab概述,内容 Matlab发展历史 Matlab产品家族(Matlab family of products)体系 Matlab 语言的特点。 目的 全面了解 Matlab软件包 激发对Matlab软件的学习兴趣。,9,1.1 MATLAB的历史及影响,70年代中期,Cleve Moler博土及其同事在美国国家基金会的帮助下,开发了LINPACK和EISPACK的FORTRAN语言子程序库,这两个程序库代表了当时矩阵运算的最高水平。 到了70年代后期,身为美国新墨西哥州大学计算机系系主任的CIeve Moler,在给学生上线性代数课时,为了让学生能使用这两个子程序库,同时又不用在编程上花费过多的时间,开始着手用FORTRAN语言为学生编写使用LINPACK和EISPACK的接口程序,他将这个程序取名为MATLAB,其名称是由MATrix和 LABoratory(矩阵实验室)两个单词的前三个字母所合成。 在1978年,Malab就面世了。这个程序获得了很大的成功,受到了学生的广泛欢迎。在以后的几年里,Matlab在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传。,Cleve Moler,10,将MATLAB商品化的不是Cleve Moler,而是一个名叫Jack Little的人。当免费的MATLAB软件到Stanford大学,Jack Little正在该校主修控制,便接触到了当时MATLAB,直觉告诉他,这是一个具有巨大发展潜力的软件。因此他在毕业沒多久,就开始用C语言重新编写了MATLAB的核心。在Moler的协助下,于1984年成立MathWorks公司,首次推出MATLAB商用版。在其商用版推出的初期,MATLAB就以其优秀的品质(高效的数据计算能力和开放的体系结构)占据了大部分数学计算软件的市场,原来应用于控制领域里的一些封闭式数学计算软件包(如英国的UMIST、瑞典的LUND和SIMNON、德国的KEDDC)就纷纷被淘汰或在MATLAB上重建。,Jack Little,11,Cleve Moler至今仍是该公司的首席科学家,他以60多岁的高龄,还常常亲自进行撰写程序的工作,非常令人佩服。如果你有数值运算方面的高水平问题,寄到 MathWorks 后,大部份还是会由 Cleve Moler亲自回答。在1994年,Pentium芯片曾发生Fdiv的bug, 当时Cleve Moler是第一个以软件方式解决此 bug的人,曾一时脍炙人口。,在公司初创的五年,Jack Little非常辛苦,常常身兼数职(董事长、总经理、推销、程序开发等),但公司一直稳定发展,从当初的一人公司,到1993年的200人,到2000年的 500余人,到2005年公司员工达到了1300人,不但打败其他竞争软件,而且前景一片欣欣向荣。根据Jack Little个人说法,MATLAB早期成功的两大因素是:选用了C语言及选定PC为主要平台,这似乎和微软的成功有相互呼应之妙。,MathWorks公司,目前仍然是私人企业,并未上市,这和Jack Little个人理念有关,他认为MATLAB的设计方向应该一直是以顾客的需求与软件的完整性为首要目标,而不是以盈利为主要目的,因此MATLAB一直是在稳定中求进步,而不会因为上市而遭受股东左右其发展方向。这也是为什么MATLAB新版本总是姗姗来迟的原因,因为他们不会因为市场的需求而推出不成熟的产品。此外,由于Jack Little保守的个性,也使得MathWorks不曾跨足MATLAB/Simulink以外的行业,当前商场上纷纷扰扰的并购或分家,MathWorks完全是绝缘体。,12,1992年,支持Windows 3.x的MATLAB 4.0版本推出,增加了Simulink,Control,Neural Network,Signal Processing等专用工具箱。,1993年11月,MathWorks公司推出了Matlab 4.1,其中主要增加了符号运算功能。当升级至Matlab 4.2c,这一功能在用户中得到广泛应用。,1997年,Matlab 5.0版本问世了,实现了真正的32位运算,加快数值计算,图形表现有效。,2001年初,MathWorks公司推出了Matlab 6.0(R12)。,2002年7月,推出了Matlab 6.5(R13),在这一版本中Simulink升级到了5.0,性能有了很大提高,另一大特点是推出了JIT程序加速器,Matlab的计算速度有了明显的提高。,2005年9月,推出了MAILAB 7.1(Release14 SP3),在这一版本中Simulink升级到了6.3,软件性能有了新的提高,用户界面更加友好。值得说明的是,Matlab V7.1版采用了更先进的数学程序库,即“LAPACK”和“BLAS”。 目前,Matlab软件支持多种系统平台,如常见的WindowsNT/XP、UNIX、Linux等。,Matlab版本的发展,13,MATLAB就是这样经过了近30年的专门打造、20多年的千锤百炼,它以高性能的数组运算(包括矩阵运算)为基础,不仅实现了大多数数学算法的高效运行函数和数据可视化,而且提供了非常高效的计算机高级编程语言,在用户可参与的情况下,各种专业领域的工具箱不断开发和完善,MATLAB取得了巨大的成功,已广泛应用于科学研究、工程应用,用于数值计算分析、系统建模与仿真。 早在20世纪90年代初,欧美等发达国家的大学就将MATLAB列为一种必须掌握的编程语言。近几年来,国内的很多大学也将MATLAB列为了本科生必修课程。 与Maple、Mathematica数学计算软件相比,MATLAB以数值计算见长,而Maple等以符号运算见长,能给出解析解和任意精度解,而处理大量数据的能力远不如MATLAB。 MATLAB软件功能之强大、应用之广泛,已成为为21世纪最为重要的科学计算语言。可见学习掌握这一工具的重要性。,14,MATLAB产品由若干模块组成,不同的模块完成不同的功能,其中有:,实际上MATLAB本身就是一个极其丰富的资源库,那么应该从哪一部分开始着手、学习使用MATLAB呢?这就有必要了解这一软件产品的体系结构 。,MATLAB Compiler这种编译器可以将MATLAB程序文件编译生成标准的C/C+语言文件,而生成的标准的C/C+文件可以被任何一种C/C+编译器编译生成函数库或可执行文件,以提高程序的运行效率。,1.2 MATLAB产品的体系结构,MATLAB,MATLAB Toolboxes,MATLAB Compiler,Simulink,Simulink Blocksets,Real-Time Workshop (RTW),Stateflow,Stateflow Coder,由这些模块产品之间的关系可以图1.1表示。,图1.1 MATLAB产品体系结构,围绕着MATLAB这个计算核心,形成了诸多针对不同应用领域的算法程序包,被称为专用工具箱(Toolbox),这些工具箱的列表以及每个工具箱的使用详见MATLAB在线帮助文档。MATLAB本身所提供的工具箱大概有40多个,另外还有其他公司或研究单位开发提供的工具箱,这些工具箱的总数已有100多个,而且新的工具箱还在不断增加。如果你有特别的应用领域,可以首先到网上查找是否已有相关的工具箱,很可能已有人将你要做的应用程序作成工具箱了。,Simulink是窗口图形方式的、专门用于连续时间或离散时间的动态系统建模、分析和仿真的核心。,Real-Time Workshop是一种实时代码生成工具,它能够根据Simulink模型生成程序源代码,并打包、编译所生成的源代码生成实时应用程序。,从现有的Simulink 和Stateflow自动生成C语言程序代码的功能、定点运算模块集(Fixed-point Blockset)与C语言程序代码到VHDL(Very High Speed Integrated Circuit Hardware Description Language,一种标准的硬件电路设计语言 )的自动转换功能,可以看出,高级的系統仿真或低级的芯片算法设计,都可用MATLAB、Simulink、Stateflow及相关的工具箱来完成。,Stateflow是基于有限状态机理论针对复杂的事件驱动系统进行建模、仿真的工具。,Stateflow Coder是基于Stateflow状态图生成高效、优化的程序代码。,围绕着Simulink仿真核心所开发的应用程序包,称为模块集(Blocksets),MATLAB产品提供许多专用模块集,如Communication Blockset、DSP Blockset、SimPowerSystem Blockset、Signal Processing Blockset等,详见MATLAB在线帮助文档。,MATLAB是MATLAB产品家族的计算核心与基础,是集高性能数值计算与数据可视化于一体的高效编程语言。,15,1.3 MATLAB编程语言的特点,语法规则简单。尤其内定的编程规则,与其他编程语言(如C、Fortran等)相比更接近于常规数学表示。对于数组变量的使用,不需类型声明,无需事先申请内存空间。,MATLAB语言主要有以下几个特点:,MATLAB基本的语言环境提供了数以千计的计算函数,极大的提高了用户的编程效率。如,一个fft函数即可完成对指定数据的快速傅里叶变换,这一任务如果用C语言来编程实现的话,至少要用几十条C语言才能完成。,因此,MATLAB是一个简单易用、功能强大的高效编程语言。,平台无关性(可移植性)。MATLAB软件可以运行在很多不同的计算机系统平台上,如Windows Me/NT/2000/XP、很多不同版本的UNIX以及Linux。无论你在哪一个平台上编写的程序都可以运行在其它平台上,对于MATLAB数据文件也一样,是平台无关的。极大保护了用户的劳动、方便了用户。其绘图功能也是平台无关的。无论任何系统平台,只要MATLAB能够运行,其图形功能命令就能正常运行。,MATLAB是一种脚本式(scripted)的解释型语言,无论是命令、函数或变量,只要在命令窗口的提示符下键入,并“回车(Enter)”,MATLAB都予以解释执行。,16,功能强大 数值运算优势 符号运算优势(Maple) 强大的2D、3D数据可视化功能 许多具有算法自适应能力的功能函数,17,语言简单、内涵丰富 语言及其书写形式非常接近于常规数学书写形式; 其操作和功能函数指令就是常用的计算机和数学书上的一些简单英文单词表达的,如:help、clear等; 完备的帮助系统,易学易用。 扩充能力、可开发能力较强 MATLAB完全成了一个开放的系统 用户可以开发自己的工具箱 可以方便地与Fortran、C等语言接口 编程易、效率高 Matlab以数组为基本计算单元 具有大量的算法优化的功能函数,18,2 MATLAB的桌面环境及入门知识,启动与退出MATLAB 命令窗口及使用 数值表示、变量、表达式 命令历史窗口 工作空间 获取在线帮助,19,2.1 启动与退出MATLAB,启动MATLAB 直接用鼠标双击桌面上MATLAB7.1图标 或Windows桌面的“开始”“所有程序”“MATLAB7.1” “MATLAB7.1”。 退出MATLAB 关闭MATLAB桌面 在命令窗口执行quit或exit命令 MATLAB缺省桌面(见下页),20,菜单栏,工具栏,文件编辑窗口,工作空间,历史命令 窗口,Start 菜单,命令窗口,命令提示符,2.1 启动与退出MATLAB (续),21,2.2 命令窗口的使用,激活命令窗口。 “” 与闪烁的光标一起表明系统就绪,等待输入。 命令窗口脱离MATLAB桌面。 简单计算 【例2.2-1】计算 (1)在MATLAB命令窗口输入 以下内容: (12+2*(7-4)/32 (2)按【Enter】键,指令执行。 (3)返回的计算结果: ans= 2,22,2.2 命令窗口 (续),说明 在命令窗口【* 次数:1357533 已用完,请联系开发者*
展开阅读全文