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