1、1日日行,不怕千万里;时时学,不怕千万卷。第一讲 Matlab 概述1.1Matlab 的历程和影响Matlab 一词是 Matrix Laboratory(矩阵实验室)的缩写。20 世纪 70 年代后期,时任美国新墨西哥大学计算机科学系主任的 Cleve Moler 教授为减轻学生编程负担,为学生设计了一组调用 LINPACK 和 EISPACK 库程序的“通俗易用”的接口,此即用 Fortran 编写的萌芽状态的 Matlab。经过几年的校际流传,在 Little 的推动下,Little 、Steve、Bangert 合作,于1984 年成立了 Math Works 公司,并把 Matla
2、b 正式推向市场。这时的 Matlab 内核已采用 C 语言编写,而除了原有的数值计算功能外,还新增加了数据视图功能。自从 Matlab 以商品形式出现后,仅短短几年,就以其良好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包纷纷淘汰,而改以 Matlab 为平台加以重建。在进入 20 世纪 90 年代的时候,已经成为国际公认的标准计算软件。在欧美大学里,诸如数理统计、自动控制、数字信号处理、模拟与数字通讯、时间序列分析、动态系统仿真等课程的教科书把 Matlab 作为一项重要的学习内容。这几乎成了 20 世纪 90 年代教科书与旧版书籍的区别性标志。Matlab是本科、硕士、博士生必须
3、掌握的基本工具。在国际学术界,Matlab 已经被确认为准确、可靠的科学计算标准软件。在许多国际一流刊物上,尤其是信息科学刊物,都可以看到 Matlab 的应用。Matlab 将数值分析、矩阵运算、信号处理、图形功能和系统仿真融为一体,使用户在易学易用的环境中求解问题,如同书写数学公式一样,避免了传统复杂的专业编程。Math Works 公司对 Matlab 的优点描述是“计算、可视化及编程2一体化” 。在设计研究单位和工业部门,被认为是进行高效研究、开发的首选工具。1.2 Matlab 的特点Matlab 有不同于其它高级语言的特点,它被称为第四代计算机语言。(1)编程效率高Matlab 基
4、本数据单元是矩阵,所有的变量都可以用矩阵来表示,如标量视为一行一列的矩阵。在编程时不需要象其它语言一样为矩阵定义维数和大小。具有简洁的表达,数学表达几乎和数学解析的表现形式完全相同。被称为“演算纸”式的科学算法语言,编程效率高,易学易懂。(2)用户使用方便Matlab 语言是一种解释执行的语言,它灵活、方便,其调试程序手段丰富,调用速度快,需要学习时间少。把编辑、编译、连接和执行融为一体。它能在同一画面上进行灵活操作,快速排除程序中的错误、语法错误,甚至语义错误,从而加快了用户编写、修改和调试程序的速度。(3)扩充能力强、交互性好Matlab 语言有丰富的库函数,在进行复杂的数学运算时可以直接
5、调用。库函数的形式和用户文件在形式上一样,所以用户可以作为库函数来调用。因此用户可以很方便地扩充新的库函数。此外,Matlab 具有强大的接口功能,能方便地和其他编程软件进行交互。(4)移植性和开放性好Matlab 是用 C 语言编写的,而 C 语言的移植性很好,于是 Matlab 也可以很方便地移植到能运行 C 语言的操作平台上。如 Windows 系列、UNIX、Linux、VMS6.1、PowerMac 。除了内部函数外,所有的核心文件和工具箱文件都是公开的,都是可以读写的源文件,用户可以通过对源文件的修改和自己编程构成新的工具。(5)语句简单、内涵丰富Mablab 中最基本的成分是函数
6、,一个函数有函数名、输入变量和输出变量组成。同一函数名,不同数目的输入变量(包括无输入变量)及不同数目的输出变量,代表着不同的含义。着不仅使 Matlab 的库函数功能更丰富,而且大大减少了需要的磁盘空间,使 Matlab 编写的 M-文件简单、短小而高效。(6)高效方便的矩阵和数组Matlab 也规定了矩阵的算术运算符、关系运算符、逻辑运算符、条件运算符及赋值运算符,而且这些运算符大部分可以照搬到数组间的运算,不需要定义数组间的维数,并给出了矩阵函数、特殊矩阵专门的库函数,使之在求解信号处理、建模、系统识别、控制、优化等领域的问题时,显得大为简洁、高效,方便,这是其它高级语言无法比拟的。(7
7、)方便的绘图功能Matlab 的绘图十分方便,有一系列的绘图函数,例如线性坐标、对数坐标,半对数坐标、极坐标,均只需调用不同的绘图函数,在图上标出图题、XY 轴标注,格(栅)绘制也只需调用相应的命令。经过 20 多年的实践,人们已经意识到:Matlab 作为计算工具和科技资源,可以扩大科学研究的范围、提高工程生产的效率、缩短开发周期、加快探索步3伐、激发创造活力。1.3Matlab 的功能Matlab 产品族可以用于以下方面: 数值分析 数值和符号计算 工程与科学绘图 控制系统设计 数字信号处理 财务工程 建模、仿真、原型开发 应用开发 图形用户界面设计主要功能(1) MATLABMatlab
8、 是 Math Works 公司所有产品的数值分析和图形基础环境,它将二维和三维图形、Matlab 语言能力集成到一个单一的、易学易用的环境之中。(2) MATLAB Toolbox工具箱是一系列专用的函数库,以解决特定领域的问题,它是开放的、可扩展的用户可以查看其中的算法,或开发自己的算法。(3) MATLAB Compiler编译器可以将 Matlab 语言编写的 M-文件目录自动转换成 C 或 C+文件,支持用户进行独立应用开发。结合 Math Works 公司提供的 C/C+数学库和图形库,用户可以利用 Matlab 快速地开发功能强大的独立应用程序。(4) SimulinkSimul
9、ink 是结合了框图界面和交互仿真能力的非线性系统仿真工具,它以Matlab 的核心数学、图形和语言为基础。(5) StateflowStateflow 与 Simulink 框图模型相结合,描述复杂事件驱动系统的逻辑行为,驱动系统在不同的模式之间进行切换。(6) Real-Time Workshop直接从 Simulink 框图生成 C 代码,用于快速原型和硬件在回路仿真,整个代码的生成可以根据需要进行定制。(7) Simulink Blockset专门为特定领域设计的 Simulink 功能模块的集合,用户也可以利用自己的块或自动编写的 C 和 Matlab 程序建立自己的块。1.4 Ma
10、tlab 的基础准备及入门【例 1】 的算术运算结果。33(75)84在命令窗输入 (13-(17-5)*8)+434【例 2】矩阵 A= 的输入步骤。4592317在命令窗输入 A=4 5 9;23 5 17;11 23 1【例 3】矩阵 A 的分行输入在命令窗输入A=4,5,923 5 1711,23,1【例 4】命令的续行输入(续行符“空格” ) S=1-1/2+1/3-1/4+1/5-1/6 .+1/7-1/8+1/9-1/10【例 5】复数表示。复数 , , ,计算 。154zi237zi253ize123z在命令窗输入 z1=5+14i;z2=3+7i;z3=2*exp(i*2*p
11、i/5); z=z1*z2/z3【例 6】复数矩阵的生成及运算。 A=3 4;5 2-1 2;8 9*i; B=2+8i,3+2i;4+i,3+6i; C=A*B; A,B,C【例 7】 求上例复数矩阵 C 的实部、虚部、模和相角。 real(C),imag(C),abs(C),angle(C)*180/pi【例 8】画出震荡曲线 和它的包络线 , 。3sintye30tye0,4 t=0:pi/50:4*pi;y0=exp(-t/3);y=exp(-t/3).*sin(3*t);plot(t,y,-r,t,y0,:b,t,-y0,:b,linewidth,2)【例 9】采用模型 画一组椭圆。
12、2215xyath=0:pi/50:2*pi; a=0.5:0.5:4.5; X=cos(th)*a; Y=sin(th)*sqrt(25-a.2); plot(X,Y,linewidth,2),axis(equal),xlabel(x),ylabel(y),title(A set of Ellipses)51.5 Matlab 的常量与运算符Matlab 经常使用的常量值pi为圆周率 ;eps机器浮点运算误差限;ans(答案)临时变量名,输出定义、运算结果时,用它代表未定义名称的变量;INF 或 inf正无穷大;i 或 j虚数单位 ;1NaN不定值( not a number) ,如 0,关系运算符表操作符 定义 操作符 定义= 等于 = 大于等于= 不等于 大于 mkdir(d:,my_dir); cd d:my_dir; save fs X Y A t清空内存,从 fs 向内存装载变量 clear load fs X Y who【例 16】假设准确知道所要求的主题词或命令名称,那么使用 help 是获得6在线帮助的最简单有效的途径。