MAT软件基础及应用8_第1页
MAT软件基础及应用8_第2页
MAT软件基础及应用8_第3页
MAT软件基础及应用8_第4页
MAT软件基础及应用8_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB在电类专业课程

中的应用第一章MATLAB开发环境及编程第二章MATLAB在数学运算中的应用第三章MATLAB在电路原理中的应用第四章MATLAB在电机与拖动中的应用第五章MATLAB在电力电子技术中的应用第六章

MATLAB在自动控制原理中的应用第七章MATLAB在电力拖动自动控制系统中的应用第八章MATLAB在信号与系统中的应用第九章MATLAB在电力系统分析中的应用第一章MATLAB开发环境及编程

1.1MATLAB概述1.2MATLAB基本运算1.3MATLAB的绘图1.4MATLAB程序设计1.5MATLAB的文件1.6Simulink仿真工具1.1MATLAB概述运算功能强大MATLAB是以矩阵为基本编程元素的程序设计语言,它的数值运算要素是矩阵。

编程效率高MATLAB的语言简洁而且智能化,以解释方式工作。

强大而智能化的作图功能MATLAB可以智能化地用图形显示二维或三维数组,能够自动选择最佳坐标,自动按精度选择步长等。Simulink动态仿真功能Simulink是交互式动态系统建模、仿真和分析的图形环境,用户通过框图的绘制来模拟系统。功能丰富,可扩展性强1.1.1MATLAB集成开发环境1.1.2MATLAB的各个窗口1.命令窗口(CommandWindow)常用标点符号的功能:【例1_1】在命令窗口输入命令。>>a=[123;456;...789] %创建矩阵aa=123456789>>b='MATLAB' %创建字符串b>>c=false %c是逻辑型变量c=0>>d=a*c %a与0相乘为全零矩阵d=0000000002.历史命令窗口(CommandHistory)历史命令窗口用来记录并显示已经运行过的命令、函数和表达式,并标明每次开启MATLAB的时间,

历史命令窗口用来记录并显示已经运行过的命令、函数和表达式,并标明每次开启MATLAB的时间

3.当前目录窗口(CurrentFold)当前目录窗口用来设置当前的工作目录,并显示当前目录下的M文件、MAT文件、MDL文件等和文件夹信息。4.工作空间窗口(Workspace)工作空间用于显示内存中所有的变量名、变量内容、类型、大小和字节数,不同的变量类型使用不同的图标。5.变量编辑器窗口(VariableEditor)6.M文件编辑/调试器窗口(Editor)在M文件编辑/调试器窗口中不仅可以编辑M文件,而且可以对M文件进行交互式调试,使用菜单“Debug”实现单步运行和设断点等调试,使用菜单“Cell”可以进行单元调试。7.实时编辑器窗口(LiveEditor)

实时编辑器窗口与M文件编辑器窗口的区别是可以实时显示运行结果。在工具栏选择“NewLiveScript”可以创建.mlx文件,也可以选择.m文件在右键的菜单中选择“OpenasLiveScript”打开。

1.2MATLAB基本运算

1.2.1MATLAB的数据类型

MATLAB的数据类型,包括数值型、字符型、日期型、元胞数组、结构体型、表、时间表、时序和映射容器等。1.数值型(1)整数型(2)浮点型浮点型包括了单精度型(single)和双精度型(double)。数据类型表示范围字节数类型转换函数无符号8位整数uint80~28-11uint8()无符号16位整数uint160~216-12uint16()无符号32位整数uint320~232-14uint32()无符号64位整数uint640~264-18uint64()有符号8位整数int82-7~27-11int8()有符号16位整数int162-15~215-12int16()有符号32位整数int322-31~231-14int32()有符号64位整数int642-63~263-18int64()2.字符型(char)在MATLAB中对字符的使用包括字符数组和字符串数组。字符数组由多个字符组成是一个字符序列,使用单引号('')括起来,数据类型是char;而字符串数组是使用双引号("")括起来的,数据类型是string,是文本片段的容器。3.逻辑型(logical)逻辑型(logical)数据只有“1”和“0”,分别表示true和false两种状态

4.元胞型、结构体和映射(1)元胞型(Cell)元胞型是用来存放各种不同类型不同尺寸的数据,每一个元胞可以看成是一个单元,使用花括号{}括起来表示。例如:{'cell1',[12;34];{1,’MATLAB’},0}(2)结构体型(Structure)结构体也可以存储多种类型的数据,结构体可以有多个字段,比元胞数组内容更加丰富。结构体的基本组成是结构,每一个结构都包含多个字段(Fields),结构体只有划分了字段以后才能使用。(3)映射映射是Map类的对象,包含键和值,其中键用于索引,值类似于字典或关联数组,可以使用键来检索值,使用映射可以实现快速通过键查找值。5.表格型、时间表和分类型(1)表格型(Table)表格型数组是二维表格,就像数据库的表格一样,可以理解为列是字段(Field),行是记录(Record)。(2)时间表(Timetable)时间表每一行关联一个时间,时间表可以方便的按照时间来执行运算,包括按时间排序、移动和同步,并能对缺失值进行查找、填充等操作。(3)分类型(categorical)分类型数据是指限定范围的离散分类,用来高效方便的存放非数值数据,可以用分类型数据对表格中的数据分组。1.2.2MATLAB的数据

1.空数组(emptyarray)没有元素的数组,用空的“[]”表示。

2.标量(scalar)标量也可以看成矩阵,是1×1的矩阵。3.向量(vector)向量指1×n或n×1的矩阵,即只有一行或者一列的矩阵。(1)使用“from:step:to”方式生成等差的行向量(2)使用linspace(a,b,n)和logspace(a,b,n)函数生成向量(3)字符串字符串也是行向量【例1_3】创建行向量。>>clear %清空工作空间>>a1=1:10 %步长为1,从1到10a1=12345678910>>b=2:-0.5:0.5 %步长为-0.5,从2到0.5b=2.00001.50001.00000.5000>>b=b’ %转置>>a2=linspace(1,10,10) %从1到10共分成10个元素a2=12345678910>>b2=logspace(-1,1,3) %从10-1-101分成3个元素b2=0.10001.000010.00004.矩阵(matrix)(1)创建矩阵矩阵是一个矩形的m×n数组,即二维数组。在MATLAB中矩阵的创建应遵循以下基本规则:矩阵元素应用方括号([])括住;每行内的元素间用逗号(,)或空格隔开;行与行之间用分号(;)或回车键隔开;元素可以是数值或表达式。【例1_4】创建矩阵。>>a=[123;4,5,6;789]a=123456789>>b=[0:2;linspace(5,8,3);logspace(-2,2,3)] %由行向量组成矩阵b= 01.00002.00005.00006.50008.00000.01001.0000100.0000>>c=[a,b] %由两个矩阵合并c=1.00002.00003.000001.00002.00004.00005.00006.00005.00006.50008.00007.00008.00009.00000.01001.0000100.0000>>d='MATLAB' %创建字符串数组d=MATLAB5.数组(array)三维数组m×n×k,其中m,n,k分别表示行、列和页。三维数组的创建有3种方法:直接赋值,由二维数组扩展和使用cat函数创建。【例1_5】创建三维数组。>>clear>>a(:,:,1)=[12;34]; %三维数组的第一页>>a(:,:,2)=[11;22] %三维数组的第二页>>b=[109;87];>>b(:,:,2)=[65;43] %由二维数组扩展一维产生三维数组>>c1=[44;33];>>c2=[77;88];>>c=cat(3,c1,c2) %使用cat函数将c1和c2按第三维连接6.复数复数包括实部和虚部,MATLAB用特殊变量“i”或“j”表示虚数的单位,因此在编程时要注意不要将i和j变量另外赋值。(1)直接创建复数用变量i和j来创建复数,例如:z=2+3i,z=2+3j,z=x+y*i,z=x+y*j。(2)用相角和模来创建复数复数可以根据模和相角来生成,其语法格式如下:z=r*exp(i*theta) %r为模,theta为相角,以弧度为单位根据复数z,模使用abs(z)来获得,相角使用angle(z)来获得。(3)用实部和虚部来创建复数复数也可以根据实部和虚部来生成,其语法格式为:z=complex(a,b) %a为实部,b为虚部。7.MATLAB的特殊变量特殊变量名取值特殊变量名取值ans运算结果的默认变量名i或ji=j=,

虚数单位pi圆周率πnargin函数的输入变量数目eps浮点数的相对误差nargout函数的输出变量数目inf或INF无穷大,如1/0realmin最小的可用正实数NaN或nan不定值,如0/0、∞/∞、0×∞realmax最大的可用正实数1.2.2MATLAB的数值运算

1.算术运算(1)加、减运算A+B和A-B(2)乘法运算矩阵运算是A*B,矩阵A的列数必须等于矩阵B的行数,除非其中有一个是标量。数组运算是A.*B,数组A和数组B对应元素相乘,A和B的尺寸应该相同(3)除法运算MATLAB的除法分为左除和右除。矩阵除法左除A\B ,右除A/B。X=A\B是方程A*X=B的解,A\B=A-1*B。数组除法左除A./B,数组A除以数组B的对应元素;右除A.\B,数组B除以数组A的对应元素。【例1_9】用矩阵除法求方程组的解。因为矩阵的左除X=A\B是方程A*X=B的解,因此计算X=A\B。>>A=[121;3-27;4-3-7];>>B=[65;17;5];>>X=A\B %左除计算解方程X=19.257622.56060.6212(4)乘方运算矩阵的乘方运算A^B数组的乘方运算A.^B,数组A和数组B对应元素的乘方。(5)转置运算矩阵转置A',矩阵A的转置,如果矩阵A为复数矩阵,则转置是指共轭转置。数组转置A.’,数组A的元素转置。2.逻辑运算MATLAB的逻辑运算有三种类型:元素的逻辑运算、位逻辑运算和先决逻辑运算。(1)元素的逻辑运算元素的逻辑运算是将数组中的元素一一进行逻辑运算,常用的逻辑运算符:&(与)、|(或)、~(非)和xor(异或)。(2)先决逻辑运算先决逻辑运算只能用于标量的运算。先决逻辑运算符有:&&(先决与)和||(先决或)。(3)位逻辑运算位逻辑运算就是对非负整数按二进制形式进行逐位逻辑运算,然后将逐位逻辑运算后的二进制数转换为十进制数输出。位逻辑运算函数有:bitand(位与)、bitor(位或)、bitcmp(位非)和bitxor(位异或)。1.2.3符号运算1.创建符号对象在进行符号运算时,首先必须定义符号对象(SymbolicObject)S=sym(s,参数) %由数值创建符号对象symss1s2s3…参数 %创建多个符号变量 symsf(x1,x2,x3) %创建符号变量和符号函数【例1_12】创建符号常量、表达式和矩阵。>>a1=sin(1);>>sa1=sym(a1,'d') %创建符号变量按十进制格式sa1=0.84147098480789650487565722869476>>symsabcx>>sy1=a*x^2+b*x+c %创建符号表达式sy1= a*x^2+b*x+c>>sy2=('y^2+2*y+1') %创建符号方程sy2=y^2+2*y+1>>symsdefg>>A=[d,e;f,g] %创建符号矩阵A=[d,e][f,g]>>symsB[2,2] %创建2*2符号矩阵>>BB=[B1_1,B1_2][B2_1,B2_2]2.符号运算(1)算术运算“+”,“-”,“*”,“\”,“/”,“^”运算符分别实现符号矩阵的加、减、乘、左除、右除和求幂运算。“.*”,“./”,“.\”,“.^”运算符分别实现符号数组的乘、除、求幂,即数组间元素与元素的运算。“′”,“.′”运算符分别实现符号矩阵的共轭转置和非共轭转置。(2)关系运算在符号对象的比较中,只有运算符“==”、“~=”分别对符号对象进行“相等”、“不等”的比较,比较结果用1表示true,用0表示false。(3)符号对象和数值对象的互换符号对象是使用sym或syms创建,如果要把符号对象转换为数组对象则使用double函数,也可以使用vpa函数进行任意精度的转换。(4)符号对象与其他软件的转换符号表达式还可以使用matlabFunction、ccode、fortran、latex函数,分别转换为隐函数、C语言程序、fortran程序和LaTeX格式字符串。1.3MATLAB的绘图

1.3.1二维绘图

1.plot函数plot函数可以方便地对纵横坐标向量和矩阵进行绘图。其语法格式为:plot(y) %绘制以y为纵坐标的二维曲线plot(x,y) %绘制以x为横坐标y为纵坐标的二维曲线plot(x1,y1,x2,y2…) %在同一窗口绘制多条二维曲线其中:x和y可以是实数向量或矩阵,也可以是复数向量或矩阵。【例1_13】在一个窗口上绘制两个子图,并分别绘制曲线。>>subplot(1,2,1) %产生一行两列的左边子图>>y1=magic(3) %生成魔方阵y1=816357492>>plot(y1)>>subplot(1,2,2)>>x2=0:0.1:2*pi;>>y21=sin(x2);>>plot(x2,y21)>>holdon %保持原曲线>>y22=2*sin(x2+pi/3);

>>plot(x2,y22)

2.修饰曲线plot(x,y,s)【例1_14】绘制曲线并添加图形修饰,绘制的图形如图1_12所示。>>x2=0:0.1:2*pi;>>y21=sin(x2);>>plot(x2,y21,'r*-.')>>holdon>>y22=2*sin(x2+pi/3);>>plot(x2,y22,'b+:')>>title('TwoSineLines') %添加标题>>xlabel('x') %添加横坐标标注>>ylabel('y') %添加纵坐标标注>>legend('sin(x)','2sin(x+\pi/3)',0)

%在右下角添加图例1.3.2特殊绘图

MATLAB的Workspace窗口中,如果选择了Workspace窗口中的变量x,单击工具栏中的绘制列数据曲线按钮(Plot)旁的下来箭头,出现下拉的菜单如图所示各种不同的特殊图形。2.向量图向量图可以用来表示复数。(1)compass函数compass函数绘制的图中每个数据点都是以原点为起点的带箭头线段,称为罗盘图。compass(u,v,'线型') %绘制横坐标为u纵坐标为v的罗盘图(2)feather函数feather函数是在直角坐标系中绘图,起点为X轴上间隔单位长度的刻度点,称为羽毛图。feather(u,v,'线型') %绘制横坐标为u纵坐标为v的羽毛图3.特殊坐标轴图特殊坐标轴是指坐标并不是均匀刻度的坐标,常用的有极坐标图和对数坐标图。(1)极坐标图在MATLAB中绘制极坐标图使用polar命令,其语法格式为:polar(theta,rho,参数) %绘制极坐标(2)对数坐标图对数坐标图是指坐标轴的刻度不是线性刻度而是对数刻度,semilogx和

semilogy函数分别绘制对X轴和Y轴的半对数坐标图,loglog是双对数坐标图。其语法格式如下:semilogx(x1,y1,'线型') %绘制x为对数的多条曲线semilogy(x1,y1,'线型') %绘制y为对数的多条曲线loglog(x1,y1,'线型') %绘制x、y都为对数的多条曲线

1.3.3三维绘图1.三维曲线图三维曲线图是指根据(x,y,z)坐标变化绘制的曲线。plot3(x,y,z,'线型') %绘制三维曲线2.三维曲面图(1)产生矩形网格MATLAB的meshgrid函数就是用来在(x,y)平面上产生矩形网格,其语法格式如下:[X,Y]=meshgrid(x,y) %产生XY矩形网格(2)绘制三维网线图三维网线图就是将平面上的网格点(X,Y)对应z值的顶点画出mesh(X,Y,Z,C) %绘制网格点数据对应的三维网线(3)三维表面图三维表面图用颜色来填充整个表面surf(X,Y,Z,C) %绘制网格点数据对应的三维表面图3.三维立体图绘制的三维立体图形的函数还有cylinder圆柱体、sphere球体和ellipsoid椭圆体。

【例1_17】绘制高斯分布的三维网格线图和曲面图,绘制的图形如图所示。>>x=1:49;>>[X,Y]=meshgrid(x); %产生网格线>>Z=peaks; %产生高斯分布矩阵>>subplot(1,2,1)>>mesh(X,Y,Z) %绘制三维网格线图>>subplot(1,2,2)>>surf(X,Y,Z) %绘制三维曲面图1.3.4符号函数绘图

函数名功能fplot(f)绘制符号函数曲线图,默认范围是[-5,5]fimplicit(f)绘制符号隐式方程或函数,默认x和y的范围是[-5,5]ezpolar(f)绘制极坐标图,默认角度范围是0

<

θ

<

2πfcontour(f)绘制f(x,y)的等高线图,默认x和y的范围是[-5,5]另外,还有fmesh、fplot3、fsurf和flimplicit3分别绘制三维的符号图形,与mesh、plot3、surf和flimplicit功能相似。1.4MATLAB程序设计

1.4.1流程控制语句

1.return命令return命令用于提前结束程序的执行,并立即返回到上一级调用函数或等待键盘输入命令。

2.pause命令pause命令用来使程序暂停运行。

3.keyboard命令keyboard命令用来使程序暂停运行,等待键盘命令,命令窗口出现“K>>”提示符。

4.input命令input命令用于在程序运行过程中接收用户的输入:r=input('str','s') %从键盘中输入数据保存到变量r5.disp命令disp命令是较常用的显示命令,常用来显示字符串型的信息提示。disp(x) %显示x数组1.4.2分支结构if结构if条件1

语句段1 elseif条件2

语句段2 ...... else

语句段n

end【例1_18】从键盘输入数字或者字符串,判断其数据类型。>>s=input('Pleaseinput:') %从键盘输入Pleaseinput:67s=67>>ifisnumeric(s) %判断是否是数值型disp([num2str(s),'isanumber.']) %显示信息N=1elsedisp([s,'isastring.'])N=0end2.switch结构switch表达式 case值1

语句段1

case值2

语句段2 ... otherwise

语句段n

end【例1_19】从键盘输入月份数字,判断季节。>>n=input('Pleaseinputmonth:');Pleaseinputmonth:4>>ifn<=12&&n>=1 %if结构switchn %switch结构case{12,1,2}disp('It''sspring.')case{3,4,5}disp('It''ssummer.')case{6,7,8}disp('It''sautumn.')otherwisedisp('It''swinter.')endend1.4.3循环结构1.for循环for循环常用于预先知道循环次数的情况,for循环结构的格式如下: for循环变量=array

循环体 end说明:array可以是向量也可以是矩阵,循环执行的次数就是array的列数,每次循环中循环变量依次取array的各列数据,直到array所有列取完。for循环的循环次数比较特殊,是由array的列数决定的,下面几个for循环表达式:forn=1:10 %循环10次a=eye(2,3);forn=a %循环3次,每次循环n为a的某一列2.while循环while循环常用于预先知道循环条件或循环结束条件的情况,while循环结构的格式如下: while条件表达式

循环体 end说明:当条件表达式为True,就执行循环体;如果为False,就结束循环;条件表达式可以是向量也可以是矩阵,如果表达式为矩阵则所有的元素都为True才执行循环体,否则不执行,如果条件表达式为NAN,也不执行循环体。3.break和continue语句在循环结构中break和continue语句可以用来终止循环,一般与if语句结合使用。(1)break语句break语句强制终止包含break的最内层for或while循环,并立即跳出该循环,执行end后面的命令。(2)continue语句continue语句与break不同的是continue只结束本次for或while循环,而继续进行下次循环。1.4.4错误结构

错误控制结构的格式如下: try

语句段1 catch

ME

语句段2 end说明:先试探地执行语句段1,如果出现错误则将错误信息赋给保留的lasterr变量,并放弃语句段1转而执行语句段2中的语句;如果语句段2正确则结束;如果语句段1正确则不执行语句段2就结束;当语句段1和语句段2都错误,则程序出错。ME变量是一个

MException

对象。出现异常时,MATLAB创建

MException

对象,并在处理该错误的

catch

语句中返回该对象,如果不需要也可以仅使用catch语句。1.5MATLAB的文件

1.5.1MATLAB的文件类型

1.程序文件程序文件即M文件(M-File)。2.实时编辑程序文件实时编辑程序文件是.mlx文件。3.图形文件图形文件(Figure)的扩展名为.fig,由MATLAB的绘图命令生成的都是.fig文件,在上图中选择“Figure”就是创建图形文件。4.模型文件模型文件(Model)扩展名为.mdl,可以在Simulink环境中建模生成的。5.数据文件数据文件即MAT文件,其文件的扩展名为.mat,用来保存工作空间的数据变量。1.5.2M脚本文件(Script)M脚本文件的说明如下:(1)MATLAB在运行脚本文件时,只是简单地按顺序从文件中读取一条条命令,送到MATLAB命令窗口中去执行;(2)M脚本文件运行产生的变量都驻留在MATLAB的工作空间中,可以很方便地查看变量,在命令窗口中运行的命令都可以使用这些变量;(3)M脚本文件的命令可以访问工作空间的所有数据,因此要注意避免工作空间和脚本文件中的同名变量相互覆盖,一般在M脚本文件的开头使用“clear”命令清除工作空间的变量。1.5.3M函数文件M函数文件的说明如下:(1)每个函数以函数声明行开头,M函数文件中的函数声明行是必不可少的,函数声明行的格式如下:function[输出参数列表]=函数名(输入参数列表)

(2)在函数声明行后面跟H1行,为文件的帮助信息,H1行不是必须的,用“%”开头表示注释,不是需要执行的命令;在MATLAB的“CurrentFolder”窗口的文件栏下面,就显示了每个M文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论