西工大电气系统仿真matlab的第一章课件_第1页
西工大电气系统仿真matlab的第一章课件_第2页
西工大电气系统仿真matlab的第一章课件_第3页
西工大电气系统仿真matlab的第一章课件_第4页
西工大电气系统仿真matlab的第一章课件_第5页
已阅读5页,还剩121页未读 继续免费阅读

下载本文档

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

文档简介

1、电气系统仿真2016.10仿真 仿真是通过对系统模型的实验去研究一个存在或设计中的系统。系统 A system is an object or collection of objects whose properties we want to study. _ 电气系统 _ 独立电气系统 电气系统仿真计算机软件 _MATLAB _Saber : Mast 语言 _ANSYS : Maxwell 2D/3D, Simplorer PExprt, RMxprt _Dymola: Modelica语言 课程性质:专业课 MATLAB简介1. MATLAB的发展史2. MATLAB语言的主要特点3.

2、MATLAB与仿真4.教学与参考资料1. MATLAB的发展史MATLAB名字由MATrix和 LABoratory 两词的前三个字母组合而成。那是20世纪七十年代,时任美国新墨西哥大学计算机科学系主任的Cleve Moler出于减轻学生编程负担的动机,编写了一个为线性代数的矩阵计算提供运算工具的软件,此即用FORTRAN语言编写的萌芽状态的MATLAB。1984年由Little、Moler、Steve Bangert合作成立MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。2. MATLAB语言

3、的主要特点(1)具有丰富的数学功能包括矩阵各种运算。如:正交变换、三角分解、特征值、常见的特殊矩阵等。包括各种特殊函数。如:贝塞尔函数、勒让德函数、伽码函数、贝塔函数、椭圆函数等。包括各种数学运算功能。如:数值微分、数值积分、插值、求极值、方程求根、FFT 、常微分方程的数值解等。(2)具有很好的图视系统(3)可以直接处理声音和图形文件。(4)具有若干功能强大的应用工具箱。 Mathworks公司先后开发了许多工具包,世界上很多从事自动控制的专家在自己擅长的领域里编写了具有特殊功能的工具包,诸如:控制系统工具箱(control system toolbox);信号处理工具箱(signal pr

4、ocessing toolbox);系统识别工具箱(system identification toolbox);鲁棒控制工具箱(robust control toolbox);神经网络工具箱(neural network toolbox)等等。 还在不断扩充、丰富和完善。每一个工具箱都是该领域里的最权威、最先进的计算与仿真软件程序。2. MATLAB语言的主要特点3.教学与参考资料讲课与上机试验。相关网络资源: 参考文献:MATLAB基础与应用简明教程,教材。现代控制工程(第4版),电子工业出版社,参考书。软件的随机帮助第1章 MATLAB入门 与基本运算第1章 MATLAB入门与基本运算1

5、.1 MATLAB环境默认界面命令窗口:是MATLAB的重要组成部分,MATLAB系统在计算机里的存在,主要是以命令窗口形式体现的。在MATLAB命令窗口,使用者输入命令、程序、点击菜单项或工具栏按钮,指挥MATLAB计算、仿真,其结果也都在命令窗口显示。命令窗口是使用者和MATLAB 交互的地方。当前目录窗口:显示MATLAB打开到当前目录,系统默认目录是MATLAB6p5work,即默认存储文件的地方。命令历史窗口:在命令窗口用过的命令语句都会存储在该窗口。 1.2 变量管理与工作空间1.2.1 建立数据 MATLAB里的变量无需事先定义,一个程序的变量,以其名称在语句命令中第一次合法出现

6、而定义。MATLAB变量名称的命名规则: 变量名可以由英文字母、数字和下划线组成。应以英文字母开头; 组成变量名的字符长度不大于31个,字母间不可留空格 ; MATLAB区分大小写英语字母。 1.2 变量管理与工作空间MATLAB中 设置了一些特殊的变量与常量: ans或(ANS):缺省变量名,以应答最近一次操作运算 结果; i或j:基本虚数单位 pi:圆周率 p(= 3.1415926.) eps:系统的浮点的相对误差 inf(或INF):无穷大 nan(或NaN):代表不定值,例如0/0 realmax:系统所能表示的最大正实数 realmin:系统所能表示的最小正实数 nargin: 函

7、数的实际输入参数个数 nargout:函数的实际输出参数个数 1.2 变量管理与工作空间 1.2.3 数据 类型 18integer types Array of signed and unsigned integers. Requires less storage space than single or double. All integer types except for int64 and uint64 can be used in mathematical operations.1.2 变量管理与工作空间 1.2.3 数据 类型19Creating Integer Data To

8、store data as an integer, use one of the conversion functions shown in the table right: 1.2 变量管理与工作空间 1.2.3 数据 类型20Creating Integer Data To store data as an integer, use one of the conversion functions : x = int16(32501);You can use the whos function to show the dimensions, byte count, and data type

9、 of an array represented by a variableOr you can use the class function if you want to assign the output as shown here: xType = class(x) You can use the intmax or intmin function to Return Largest or Smallest possible value of specified integer type intmax(CLASSNAME) is the largest positive value in

10、 the integer class CLASSNAME. Valid values of CLASSNAME are int8, uint8, int16, uint16, int32, uint32, int64 and uint64.1.2 变量管理与工作空间 1.2.3 数据 类型21When you convert a number to one of the integer data types, MATLAB rounds the result to the nearest integer. For example, a=2.7 b=int8(a) also b=int8(2.7

11、)1.2 变量管理与工作空间 1.2.3 数据 类型22Creating Double-Precision Data Since the default numeric type for MATLAB is double, you can create a double with a simple assignment statement. x = 25.783; Any value stored as a double requires 64 bits.You can use the double function to convert other numeric data, charact

12、ers or strings, and logical data to double-precision floating point: y = int64(-589324077574); % Create a 64-bit integer x = double(y) % Convert to double whos x y1.2 变量管理与工作空间 1.2.3 数据 类型24Creating Single-Precision Data Because MATLAB stores numeric data as a double by default, you need to use the

13、single conversion function to create a single-precision number: x = single(25.783); whos x Any value stored as a single requires 32 bits. Storing a number as type single require only half as much memory as storing it as type double. You can compare how many bytes of memory are used to store a mumber

14、 as type single versus type double using the whos command. (use format long to see the difference between single & double)1.2 变量管理与工作空间 1.2.3 数据 类型25Logical Types The logical data type represents a logical true or false state using the numbers 1 and 0, respectively. Certain MATLAB functions and oper

15、ators return logical true or false to indicate whether a certain condition was found to be true or not. 1.2 变量管理与工作空间 1.2.3 数据 类型27Characters and Strings In MATLAB, the term string refers to an array of Unicode characters. MATLAB represents each character internally as its corresponding numeric valu

16、e. Unless you want to access these values, however, you can simply work with the characters as they display on screen.1.2 变量管理与工作空间 1.2.3 数据 类型28Creating Character Arrays Specify character data by placing characters inside a pair of single quotes. For example, this line creates a 1-by-13 character a

17、rray called name: name = Thomas R. Lee; In the workspace, the output of whos shows Name Size Bytes Class name 1x13 26 char array You can see that each character uses two bytes of storage internally. The class functions show names identity as a character array: class(name)1.2 变量管理与工作空间 1.2.3 数据 类型29C

18、reating Two-Dimensional Character Arrays A simpler way to create string arrays is to use the char function. char automatically pads all strings to the length of the longest input string. name = char(Thomas R. Lee,Senior Developer) char pads the 13-character input string Thomas R. Lee with three trai

19、ling blanks so that it will be as long as the second string. 1.2 变量管理与工作空间 1.2.3 数据 类型30cell array Cell arrays is a special array, You can store arrays of different types and/or sizes within the cells of a cell array. This illustration shows a cell array that contains arrays of: unsigned integers (c

20、ell 1,1), strings (cell 1,2), complex numbers (cell 1,3), floating-point numbers (cell 2,1), signed integers (cell 2,2), and another cell array (cell 2,3). 1.2 变量管理与工作空间 1.2.3 数据 类型311.2 变量管理与工作空间 1.2.3 数据 类型32creating cell arrays Cell arrays use braces instead of parentheses () for selecting and di

21、splaying the contents of cells. You can build a cell array by assigning data to individual cells, one cell at a time. There are two ways to assign data to cells:Content indexingCell indexing1.2 变量管理与工作空间 1.2.3 数据 类型33creating cell arraysContent indexing Enclose the cell subscripts in parentheses usi

22、ng standard array notation. Enclose the cell contents on the right side of the assignment statement in curly braces . For example, create a 2-by-2 cell array A: A(1,1) = 1 4 3; 0 5 8; 7 2 9; A(1,2) = Anne Smith; A(2,1) = 3+7i; A(2,2) = -pi:pi/10:pi;1.2 变量管理与工作空间 1.2.3 数据 类型34creating cell arrays Cel

23、l indexingEnclose the cell subscripts in curly braces using standard array notation. Specify the cell contents on the right side of the assignment statement: A1,1 = 1 4 3; 0 5 8; 7 2 9;A1,2 = Anne Smith;A2,1 = 3+7i;A2,2 = -pi:pi/10:pi;1.2 变量管理与工作空间 1.2.3 数据 类型35using the cell functionThe cell functi

24、on allows you to reallocate empty cell arrays of the specified size.a = cell(2,2)Then you can use assignment statements to fill values in the cellsusing braces as cell constructors b=1 2, 17, 2;4; 3-4*i,Hello, eye(3)1.2 变量管理与工作空间 1.2.3 数据 类型36A structureEach individual element is given a name, known

25、 as fieldsEach field in a structure may have a different typeThe individual fields are addressed by combining the name of the structure with the name of the field, separated by a period.1.2 变量管理与工作空间 1.2.3 数据 类型37Structures can be creaed in two ways.A field at a time using assignment statements.All

26、at once using the struct function.Using assignment statements =John Doe; student.addr1=123 Main Street; student.city=Anytown; student.zip=71211;A second student can be added to the structure by adding a subscript to the structure name (before the period).student(2).name=Jane Q. Public1.2 变量管理与工作空间 1

27、.2.3 数据 类型38using the struct function struct Create or convert to structure array. S = STRUCT(field1,VALUES1,field2,VALUES2,.) creates a structure array with the specified fields and values. s = struct(strings,hello,yes,lengths,5 3)Removing fields from structuresstruct2=rmfield(struct_array,field)st

28、u2=rmfield(student,zip)1.2 变量管理与工作空间 1.2.3 数据 类型1.3 MATLAB的在线帮助 MATLAB的命令繁多,为了帮助用户找到命令,MATLAB提供了广泛的在线帮助功能。help命令 如果知道函数和命令的名称,可以利用MATLAB的help命令,它可以直接给出要查询的函数的功能和调用方法等信息。lookfor 命令 lookfor命令根据关键词提供帮助,关键词不必为函数名和命令名,其搜索范围是所有的MATLAB help 标题,以及搜索路径中m文件的第一行,返回结果是包含指定关键词的哪些项。菜单驱动的帮助 可以直接从菜单栏获得菜单驱动的帮助。MATLA

29、B的搜索路径 which命令可找出函数和文件所在的目录。1.4 MATLAB的标点百分号%之后的任何文字都被注解,注解是由%起头,注解的功能是简要的说明程序的内容,注释语句不能执行。多条语句放在同一行,以逗号, 或是分号; 分开。例如 r=2, area=pi*r2, r=2; area=pi*r2;请注意上述二式的差异,前者有计算值显示,而后者则无。如果一个指令过长可以在结尾加上.(代表此行指 令与下一行连续),例如 r=2; area = pi . *r2圆括号( )指出在算术表达式中的先后次序,方括号 用于构成向量和矩阵,大括号用于构成单元数组。1.4 MATLAB的标点冒号:在MATL

30、AB中非常重要(1)使用冒号可以输入行向量,其格式为 ,其中a是数组的第一个元素,inc是步长,步长可正可负,步长为1时可以省略。(2)使用冒号能够从向量、矩阵和数组中选出指定元素、行和列,A(:,j) 是A矩阵的第j列,A(i,:)是A矩阵的第i行,A(j:k)是 A(j), A(j+1),.,A(k),A(:,j:k)是A(:,j), (:,j+1) ,., A(:,k)。(3)冒号与方括号连用可以删除矩阵的行和列。 A(:,j) = ,可以删除A矩阵的第j列。1.5 MATLAB数据的输入与输出 MATLAB可以通过计算机文件来保存或加载工作空间数据File 菜单的save worksp

31、ace as菜单命令打开一个标准的文件对话框来保存所有当前工作空间数据,保存为扩展名为.mat的文件。保存变量并不会将其从工作空间中删除。利用Import data可将保存的数据重新加载至工作空间。save命令可将当前工作空间数据以matlab.mat为文件名存于当前目录下,利用load 命令可将以matlab.mat为文件名保存的数据重新加载至工作空间。save data命令可将当前工作空间数据以data.mat为文件名存于当前目录下,利用load data可将所保存的数据重新加载至工作空间。save data x y z命令将当前工作空间变量x y z存入data.mat文件中,利用loa

32、d data可将其重新加载至工作空间。可用delete data.mat命令将data文件从当前目录下删除。1.6 MATLAB的数值运算基础1.6.1 MATLAB算术运算符及常用的数学函数MATLAB提供基本的算术运算有: 加 (+)、减 (-)、乘 (*)、除 (/)、幂次方 (),范例为:5+3, 5-3, 5*3, 5/3, 53常用的数学函数abs(x) 求x的绝对值或者复数的幅值 angle(x) 四象限内取复数的相角sqrt(x) 求x值的平方根 real(x) 复数实部imag(x) 复数虚部sign(x) 如果x 0传回值为 1 rem(x,y) 传回x/y的余数,例如re

33、m(25,4)的值为1 exp(x) 指数函数 e的x次方log(x) 以2.718282为底的对数函数,即自然对数 log10(x) 以10为底的对数函数1.6.1 MATLAB算术运算符及常用的数学函数要计算一角度的sine值,过程如下: angle1=pi/2; b=sin(angle1); %注意angle1为弧度,sin函数计算值需以弧度表示 angle2=90; %注意angle2为角度 b=sin(angle2*pi/180); %也可在函数内作角度与弧度转换 要计算一数值的asin值,并将弧度转换为角度,过程如下: x=sqrt(2)/2; y=asin(x); y_deg=y

34、*180/pi 使用函数须注意几点。首先函数一定出现在计算等式的右边,等式左边是代表这个函数的计算值。此外,一 个函数可以被当做另一个函数的引数(argument)。例如:log_x=log(abs(x)其中abs和log皆为内建函数,其意思是 先计算abs(x),所得值再代入log函数。1.6.2 MATLAB的复数表示例1 复数表达,及计算。(1)经典教科书的直角坐标表示法 z1= 3 + 4i (2)采用运算符构成的直角坐标表示法和极坐标表示法 z2 = 1 + 2 * i z3=2*exp(i*pi/6) z=z1*z2/z3 例2 复数矩阵的生成及运算 A=1,3;2,4-5,8;6

35、,9*i B=1+5i,2+6i;3+8*i,4+9*i C=A*B例3 求上例复数矩阵C的实部、虚部、模和相角。 C_real=real(C) C_imag=imag(C) C_magnitude=abs(C) C_phase=angle(C)*180/pi 1.6.3 矩阵、数组及其算术运算1、数组或矩阵元素的标识一维数组元素 的标识、访问与赋值 一维数组是使用方括号以及在括号内列出以空格或逗号分割其元素的表。一维数组的元素是以数组名后圆括号内元素在数组中位置的序号来标识的。数组元素的访问与赋值就是根据数组元素的标识进行。例1 在命令窗口输入 x=1 2 3 4 5 6 7 回车x = 1

36、 2 3 4 5 6 7查询x数组的第3个元素可输入 x(3) 回车ans = 3查询x数组的第4到最后一个元素可输入 x(4:end) 回车ans = 4 5 6 71.6.3 矩阵、数组及其算术运算查询x数组中小于5的元素可输入 x(find(x a=1 2;3 4;a1=a*2;a2=a+10;a3=a1+10; A=a a1;a2 a3 回车可得 A = 1 2 2 4 3 4 6 8 11 12 12 14 13 14 16 181.6.3 矩阵、数组及其算术运算3、矩阵的操作和运算(1) 矩阵的操作flipud命令可以将矩阵a作上下翻转,将a的行按照n1的顺序重新排列,a的列保持不

37、变。例如在窗口键入a=1 2 3;4 5 6,可得 a = 1 2 3 4 5 6 键入 b=flipud(a) 可得 b = 4 5 6 1 2 31.6.3 矩阵、数组及其算术运算fliplr命令可以将m列矩阵a作左右翻转,将a的列按照m1的顺序重新排列,a的行保持不变。在窗口键入c=fliplr(a) 可得 c = 3 2 1 6 5 4rot90命令将矩阵逆时针转90。在窗口键入rot90(a) 可得 ans = 3 6 2 5 1 4相关矩阵操作的函数还有 diag(a) 提取矩阵a的对角元素,返回列向量; diag(v) 以列向量v作对角元素创建对角矩阵; tril(a) 提取a的

38、下三角矩阵; triu(a) 提取a的上三角矩阵。1.6.3 矩阵、数组及其算术运算(2)矩阵的运算矩阵的加减运算 矩阵的加减运算的条件是两个矩阵的行数和列数分别相同,运算的规则是矩阵相应元素的加减运算。 在MATLAB里,维数为1*1的数组叫做标量。标量与数组间加减运算的规则是标量与数组每一个元素进行加减操作。 在窗口键入s=5;a=1 2 3; 4 5 6;7 8 9;s+a 回车 可得 ans = 6 7 8 9 10 11 12 13 141.6.3 矩阵、数组及其算术运算矩阵的乘法运算标量与矩阵的乘法运算 标量与矩阵之间的乘法运算是指该矩阵的每个元素与这个标量分别进行乘法运算。在窗口

39、键入s=5; a=1 2 3;4 5 6;7 8 9; s.*a回车可得 ans = 5 10 15 20 25 30 35 40 45 s.*a、a.*s、与a*s、s*a的运算结果都一样。b) 数组乘法运算 数组乘法运算必须在具有相同维数的数组间进行,其结果是数组的对应元素间相乘的结果组成的新数组。在窗口键入a=1 2 3;4 5 6;7 8 9; b=2 2 2;2 2 2;2 2 2;a.*b 回车,可得ans = 2 4 6 8 10 12 14 16 18 a.*b和b.*a两指令运算结果一样。1.6.3 矩阵、数组及其算术运算c) 矩阵的乘法运算 两矩阵相乘的条件是左矩阵的列数必

40、须等于右矩阵的行数,矩阵乘法不满足交换率。在窗口键入a=1 2 3;4 5 6;7 8 9; b=2 2 2;2 2 2;2 2 2; a*b 回车可得 ans = 12 12 12 30 30 30 48 48 48 键入 b*a 回车可得 ans = 24 30 36 24 30 36 24 30 36 MATLAB可以进行叉乘运算,指令形式为c=kron(a,b),运算规则是a矩阵的每个元素依次与b矩阵的所有元素相乘,组成矩阵子块,各个矩阵子块共同组成新的矩阵c。在窗口键入a=1 2 3;4 5 6; b= 7 8 9; c=kron(a,b) 回车可得c = 7 8 9 14 16 1

41、8 21 24 27 28 32 36 35 40 45 42 48 541.6.3 矩阵、数组及其算术运算矩阵的除法运算a)矩阵与标量间的除法运算 矩阵与标量间除法的运算规则是标量与数组每一个元素进行除法运算。在窗口键入s=5; a=1 2 3; 4 5 6;7 8 9; s./a 回车可得ans = 5.0000 2.5000 1.6667 1.2500 1.0000 0.8333 0.7143 0.6250 0.5556键入 a.s,回车可得 ans = 5.0000 2.5000 1.6667 1.2500 1.0000 0.8333 0.7143 0.6250 0.5556键入 a.

42、/s,回车可得 ans = 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000 1.8000 符号./和.的运算结果是一致的,不过要注意被除数与除数在两种除法运算符中的左右位置是不同的。1.6.3 矩阵、数组及其算术运算b)数组的除法运算 数组除法的运算规则是两数组维数必须相等,对应的元素之间相除。数组的除法没有左除和右除,符号./和.的运算结果是一致的,不过要注意被除数与除数在两种除法运算符中的左右位置是不同的。在窗口键入a=1 2 3;4 5 6;7 8 9; b=2 2 2;2 2 2;2 2 2; a./b 回车可得ans =

43、 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000键入 b.a,回车可得ans = 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000可见指令a./b 和b.a运行结果一致。1.6.3 矩阵、数组及其算术运算c)矩阵的除法 矩阵的除法运算包括左除和右除两种运算,其中左除:AB=A-1B,A为方阵;右除:A/B=AB-1,B为方阵。在窗口键入a=1 2;3 4; b=1 3 5; 2 4 6 ; c=ab回车可得c = 0 -2.0000 -4.0

44、000 0.5000 2.5000 4.5000键入 inv(a)*b,回车可得ans = 0 -2.0000 -4.0000 0.5000 2.5000 4.5000矩阵的除法运算实际是AX=B的求解过程。1.6.3 矩阵、数组及其算术运算乘方运算a)矩阵与标量的乘方运算 以数组为底以标量为指数的乘方运算。运算规则是以数组中的每个元素为底,分别与作为指数的标量进行乘方运算得到的一个新数组。在窗口键入a=1 2 3;4 5 6; a.4 回车可得ans = 1 16 81 256 625 1296以标量为底以数组为指数的乘方运算。运算规则是以该标量为底,用数组中的每个元素分别作为指数与该标量进

45、行乘方运算得到的一个新数组。在窗口键入a=1 2 3;4 5 6; 4.a 回车可得 ans = 4 16 64 256 1024 40961.6.3 矩阵、数组及其算术运算乘方运算b)数组的乘方运算 数组间的乘方运算只在维数相同的数组间进行。运算规则是以前一个数组为底,后一个数组为指数,其对应的元素分别进行指数运算得到结果。在窗口键入a=2 3; 5 6; b=1 2;2 3; a.b 回车可得 ans = 2 9 25 216c)矩阵的乘方运算 矩阵与标量乘方的运算规则a为方阵,c为标量,矩阵的乘方ac 是矩阵a的c次方。若c=2,则ac =a*a。 在窗口键入a=1 2;3 4; a2

46、回车可得ans = 7 10 15 22键入 a0.5 回车可得 ans = 0.5537 + 0.4644i 0.8070 - 0.2124i 1.2104 - 0.3186i 1.7641 + 0.1458i1.6.3 矩阵、数组及其算术运算乘方运算c)矩阵的乘方运算 说明:矩阵的乘方运算可以表示成Ax,其前提条件要求A矩阵为方阵。如果X为正整数,则乘方的结果可以将A矩阵自乘x次得出。如果x为负整数,则可以将A矩阵自乘x次,然后对结果进行求逆运算就可以得出该乘方结果。如果x是一个分数,例如x=n/m,其中n和m均为整数,则首先应该将A矩阵自乘n次,然后对结果再开m次方。矩阵的开方运算相当困

47、难,但有了数字计算机,这种运算就不再显得那么麻烦了,用户可以利用计算机方便求出一个矩阵的方根。1.6.3 矩阵、数组及其算术运算转置运算 对于复数元素,数组的转置运算是非共轭的转置,矩阵的转置运算规则是共轭的转置。在窗口键入e1 = 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i; 4.0000 + 4.0000i 5.0000 + 5.0000i 6.0000 + 6.0000i键入 e2=e1 回车 e2 = 1.0000 - 1.0000i 4.0000 - 4.0000i 2.0000 - 2.0000i 5.0000 - 5.00

48、00i 3.0000 - 3.0000i 6.0000 - 6.0000i键入 e3=e1. 回车 e3 = 1.0000 + 1.0000i 4.0000 + 4.0000i 2.0000 + 2.0000i 5.0000 + 5.0000i 3.0000 + 3.0000i 6.0000 + 6.0000i1.6.4 关系和逻辑运算关系运算1包括 小于、大于、=大于等于、= =等于、 =不等于。 关系运算规则(1)关系运算的优先级低于算术运算,高于逻辑运算; (2)运算符 、=只比较二标量的实部,而运算符= =、 =则同时比 较二标量的实部与虚部。 (3)若二标量比较,其关系成立者,运算结

49、果为逻辑真(1);否则为逻辑假(0)。 (4)若一标量与一数组比较,则将数组与标量的每一个元素逐个比较,其运算结果为一个与数组大小(行列数)相同的数组,其元素由“0”与“1”组成。 (5)若二数组比较,数组维数相同,将二数组的每一个元素逐个比较,其运算 结果为一个与比较数组大小(行列数)相同的数组,其元素由“0”与“1”组成。 在窗口键入 a=1 2 3 4 5; t1=(a3)或者 t1=a3 回车可得 t1 = 0 0 0 1 1 在窗口键入 e=1 4;8 3; f=2 6;5 7; ef 回车可得 ans = 0 0 1 01.6.4 关系和逻辑运算逻辑运算 逻辑操作符:& 与 | 或

50、 非 运算规则:(1)逻辑运算规定:非0元素代表逻辑真“1”;0元素代表逻辑假“0”;(2)逻辑运算中,not的优先级最高,and与or有相同的优先级,可用括号改变优先权;(3)若一标量与一数组比较,将数组与标量的每一个元素逐个比较,其运算结果为一个与数组大小(行列数)相同的数组,其元素由“0”与“1”组成。在窗口键入 c=6; d=4 0 6; 0 8 0; d|c 回车可得ans = 1 1 1 1 1 1(4)若二数组比较,数组维数相同,将二数组对应的每一个元素逐个比较,其运算结果为一个与比较数组大小(行列数)相同的数组,其元素由“0”与“1”组成。 在 窗口键入e=1 0;8 3; f

51、=2 0;5 7; e&f 回车可得ans = 1 0 1 11.6.5 矩阵函数MATLAB定义了一些关于矩阵的函数(1)zeros(n,m)函数能够生成元素全为0的矩阵;(2)ones(n,m)函数能够生成元素全为1的矩阵;(3)rand(n,m)函数能够生成均匀分布随机矩阵,其元素数值范围为(0.0,1.0);(4)randn(n,m)函数能够生成元素服从零均值单位方差正态分布随机矩阵;(5)magic(n)叫做魔方阵,能够自动生成一种特别的n阶方阵,该阵每一行、每一列或对角线上的元素之和都相等;(6)diag()可以生成对角矩阵,在窗口键入y=magic(3);diag(y)回车可得a

52、ns = 8 5 2(7)triu()函数可以生成上三角矩阵,tril()函数可以生成下三角矩阵;(8)size()函数用来返回指定矩阵的行数和列数,eye()函数可以生成指定行数和列数的单位矩阵。 eye()函数和size()函数常常一起使用,生成与指定矩阵同维的单位矩阵在窗口键入a=1 2 3;4 5 6;7 8 9; b=size(a); eye(b)回车可得ans = 1 0 0 0 1 0 0 0 11.6.6 多项式运算 求一个多项式的根(求多项式的零点)在自动控制领域里是经常遇到的事。MATLAB提供了多条命令,进行多项式运算。多项式用一个行向量表示,多项式系数降幂排列。多项式求

53、根:求多项式P(x)x42x33x24x5的根。 在窗口键入p=1 2 3 4 5; roots(p)回车可得ans = 0.2878 + 1.4161i 0.2878 - 1.4161i -1.2878 + 0.8579i -1.2878 - 0.8579i由根求多项式:已知多项式的根分别为1、5、8,求此根对应的多项式 在窗口键入p1=poly(1,5,8) 回车可得p1 = 1 -14 53 -40,即所求多项式为: P(x)x3-14x253x-40。注意poly()函数的调用格式。所求多项式是否正确,可以用roots()函数来验证。在窗口键入p=1 -14 53 -40; roots

54、(p),回车可得ans = 8.0000 5.0000 1.0000 可见,多项式的poly()与roots()函数互为逆运算。 注意也可以用poly ()函数求矩阵的特征多项式。在窗口键入a=3 -1;-1 3; b=poly(a),回车可得 b = 1 -6 8,即矩阵a的特征多项式为x26x8, 利用roots(b)可得矩阵a的特征值ans = 4 2, 与eig(a)结果相同。1.6.6 多项式运算求多项式在指定点处的值 在窗口键入p=1 2 3 4 5;polyval(p,3) 回车可得 ans =179。也可以给出自变量的取值范围例如键入x=1:0.1:2;polyval(p,x)

55、回车可得对应于x的多项式p的值。 Columns 1 through 7 15.0000 17.1561 19.6496 22.5201 25.8096 29.5625 33.8256 Columns 8 through 11 38.6481 44.0816 50.1801 57.0000多项式的加减法:规则为多项式对应元素的加、减运算。两个多项式的阶数可以不同,但在多项式定义时应当补充0元素使其行向量元素数目相等。多项式的乘除法:例如要求x1=3x2+x+1与x2=x+1之乘积,可以在窗口键入 x1=3 1 1;x2=1 1;c=conv(x1,x2)回车可得c = 3 4 2 1 运算结果

56、可以用deconv()函数来验证。在窗口键入s=deconv(c,x1),回车可得 s = 1 1。 可见,多项式的conv()和deconv()函数互为逆运算。1.6.6 多项式运算多项式部分分式展开 自动控制的时域分析中,常常要求像函数F(s)的反变换。这可以用分解F(s)成部分分式的方法,只需求出部分分式的待定系数就可以了。 例如已知一传递函数 ,将其分解为部分分式,可在窗口键入a=1 2;b=1 4 3;z,p,k=residue(a,b),回车可得z =0.5000 p = -3 k = 0.5000 -1即得传递函数分解的部分分式: 。 如果在窗口键入z,p,k=residue(b

57、,a)回车可得z = -1 p = -2 k = 1 2,即分解的部分分式为 。根据给出的z、p、k的值,可以用同一个命令求出传递函数的有理多项式形式。在窗口键入num,den=residue(z,p,k),回车可得num = 1 4 3 den = 1 2多项式求导数 求多项式P(x)=x4+2x3+3x2+4x+5的导数,在窗口键入a=1 2 3 4 5; a1=polyder(a) 回车可得 a1 = 4 6 6 4。1.6.7 字符运算 在MATLAB中,字符串作为字符数组用单引号引用到程序中。键入 c=ok MATLAB 回车可得c = ok MATLAB。键入whos c可得变量c

58、实际上是一个1*9字符数组,在字符数组中空格也算一个字符。 在MATLAB中,字符是以ASCII数值的格式储存的。用户可以使用如下命令查看变量c在MATLAB 内部的存储格式: 键入 x=double(c) 回车可得x = 111 107 32 77 65 84 76 65 66 . 变量c中的每一个元素被转化成ASCII码的相应数值。还可以用char()将ASCII码的相应数值转化还原成数值。在窗口键入char(x)回车可得ans =ok MATLAB。1.7 M文件与M函数 M文件是使用MATLAB语言编写的程序代码文件。之所以称为M文件,是因为这种文件都以“.m”作为文件的扩展名。用户可

59、以通过任何文本编辑器来生成或编辑M文件。M文件可以分为两种类型,一种是脚本文件,另一种是函数文件。1.7.1 脚本(script)文件 在MATLAB中,实现某项功能的一串MATLAB命令与函数组合的M文件叫脚本文件。脚本文件既不带输入参量也不带输出参量,能在MATLAB环境下直接执行,对工作空间的数据进行操作,并将建立的变量及其执行后的结果保存在MATLAB的工作空间里。脚本文件执行后的结果既可以显示输出,也可以使用绘图函数来产生图形输出结果。1.7 M文件与M函数1.7.2 M函数文件 函数文件是MATLAB语言最重要的组成部分,MATLAB提供的各种各样的工具箱差不多都是以函数形式给出的

60、。MATLAB 的工具箱是内容极为丰富的函数库,可以实现各种各样的功能。函数能够接受输入参数并返回输出参数。在MATLAB中,函数名和M文件名必须相同。 函数文件的结构 看一个MATLAB函数文件的例子。在窗口键入type angle.m 回车可得function p = angle(h) 函数定义行 %ANGLE Phase angle. H1行 % ANGLE(H) returns the phase angles, in radians, 函数帮助文本 % of a matrix with complex elements. % See also ABS, UNWRAP.% Copyri

温馨提示

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

评论

0/150

提交评论