matlab工程应用基础讲义_第1页
matlab工程应用基础讲义_第2页
matlab工程应用基础讲义_第3页
matlab工程应用基础讲义_第4页
matlab工程应用基础讲义_第5页
已阅读5页,还剩236页未读 继续免费阅读

下载本文档

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

文档简介

1、 历史命令历史命令 发射台发射台 命令命令 窗口窗口 标题栏标题栏 菜单栏菜单栏 常用工具栏常用工具栏 工作区工作区 当前路径当前路径 基本矩阵演示窗口基本矩阵演示窗口matlab 演示窗口演示窗口上课时间:周一、四(上课时间:周一、四(7、8节)节) 地点:教学主楼地点:教学主楼-c106上机时间:周二、五(上机时间:周二、五(7、8节)节) 地点:地点:计算机教学实验中心计算机教学实验中心 教教1南南3层西头(网络中心隔壁)层西头(网络中心隔壁)网上交作业时间:网上交作业时间:周五上机作业,截至当周周日晚周五上机作业,截至当周周日晚12:00周二上机作业,截至当周周四晚周二上机作业,截至当

2、周周四晚12:00 基本要求:基本要求:(1) 了解了解matlab的各种数据类型的各种数据类型;(2) 掌握掌握matlab的的运算符与操作符运算符与操作符的含义和用法的含义和用法 ;(3) 掌握掌握matlab基本表达式并了解其常用函数分类;基本表达式并了解其常用函数分类;(4) 熟练掌握熟练掌握 matlab 的的程序结构程序结构(顺序结构、循环结构和(顺序结构、循环结构和分支结构分支结构)与流程控制语句与流程控制语句 ;(5) 了解并初步掌握了解并初步掌握 matlab 的的数据文件的读写;数据文件的读写; (6) 学会学会 matlab 的的m文件的编写方法,包括命令文件和函文件的编

3、写方法,包括命令文件和函数文件。了解数文件。了解m件的调试命令和调试方法件的调试命令和调试方法。第第2章章 matlab语言程序设计语言程序设计 第第2章章 matlab语言程序设计语言程序设计 1、 matlab数据类型数据类型变量和常量变量和常量数字变量的格式数字变量的格式字符串字符串单元型变量单元型变量结构型变量结构型变量矩阵、向量矩阵、向量多项式多项式 第第2章章 matlab语言程序设计语言程序设计 a) 变量和常量变量和常量 变量变量(包括函数包括函数)的的命名规则命名规则:由英文字母、数字和下划线:由英文字母、数字和下划线混合组成,不得包含空格和标点混合组成,不得包含空格和标点

4、;第一个字符必须是英;第一个字符必须是英文字母,最多包括文字母,最多包括31个字符个字符; 对字母的大小写敏感对字母的大小写敏感。 局部变量和全局变量局部变量和全局变量 永久变量(常量)永久变量(常量)只能在某一函数体内使用,而不能从其他函数和只能在某一函数体内使用,而不能从其他函数和 matlab工作空间访问的变量,就是工作空间访问的变量,就是局部变量局部变量。在几个函数及在几个函数及m atlab函数中都能使用的变量就是函数中都能使用的变量就是全局变全局变量。量。 (全局变量名应尽可能大写,并由(全局变量名应尽可能大写,并由globe声明)声明)第第2章章 matlab语言程序设计语言程序

5、设计 matlab永久变量永久变量第第2章章 matlab语言程序设计语言程序设计 b) 数字变量数字变量 matlab内部的每一个数据元素都是用内部的每一个数据元素都是用双精度数(双精度数(double)来表示和存储的。来表示和存储的。变量输出时用户可以用变量输出时用户可以用format命令设置或改变输出格式。命令设置或改变输出格式。短格式短格式(short):1.3333 0.0000短格式短格式e方式方式(short e):1.3333e+00 1.2345e-06短格式短格式g方式方式(short g):1.3333 0.0长格式长格式(long):1.33333333333333 0

6、.00000123450000长格式长格式e方式方式(long e):1.33333333333333e+00 1.2345000000000e-06长格式长格式g方式方式(long g):1.33333333333333 0.0000012345银行格式银行格式(bank):1.33 0.00十六进制格式十六进制格式(hex):3ff555555555 3eb46231abfd71+格式格式(+):+有理数(有理数(rational):1/3 2469/2000000000第第2章章 matlab语言程序设计语言程序设计 c) 字符串字符串 所有字符串都用单引号括起来。所有字符串都用单引号括

7、起来。 s=matlab 字符中中的每个字符(包括空格)都是字符串变量字符中中的每个字符(包括空格)都是字符串变量(矩阵或向量矩阵或向量)中的一个元素。中的一个元素。字符串中的字符以字符串中的字符以 ascii 码形式储存并区分大小码形式储存并区分大小 ,用用函数函数abs可以看到字符的可以看到字符的ascii码。码。在在matlab中,中,字符串字符串和和字符矩阵字符矩阵基本上是等价的。基本上是等价的。 s=matlab 等价于等价于 s=matlab 第第2章章 matlab语言程序设计语言程序设计 字符串函数字符串函数第第2章章 matlab语言程序设计语言程序设计 字符串举例:字符串举

8、例: a= china 中国 ;输出带引号的汉字 b=我是好学生 c=i am fine. s3=char(s, y,m,b,o,l,i,c);用函数char生成字符串 double(s3) ;字符串转换为数值代码 abs(s3) cellstr(s3) ;字符矩阵转换为字符串 b=num2str(a) ;数字转换为字符串比较 b*2和str2num(b)*2 ab=a, ,b,. ab=中国;北京第第2章章 matlab语言程序设计语言程序设计 d) 单元型变量单元型变量 单元型变量是一种比较特殊的数据类型,本质上讲,单单元型变量是一种比较特殊的数据类型,本质上讲,单元型变量实际上是一种元型

9、变量实际上是一种以任意形式的数据为元素的多维以任意形式的数据为元素的多维数组。数组。单元型变量可以存放任何类型、任何大小的数据,单元型变量可以存放任何类型、任何大小的数据, 其其大小是不定的。大小是不定的。 a=1,2;3,4a = 1 2 3 4 b=1:4, a, abcdb = 1x4 double 2x2 double abcdb为单元为单元型型变量(用花括号)变量(用花括号) cellplot(b) celldisp(b)第第2章章 matlab语言程序设计语言程序设计 d.a1=abcd; d.a2=1; d.a3=1,2,3,4; dd = a1: abcd a2: 1 a3:

10、1 2 3 4d为结构型变量为结构型变量e) 结构型变量结构型变量 结构型变量是另一种可以将不同类型数据组合在一起结构型变量是另一种可以将不同类型数据组合在一起的数据类型,与单元型变量的不同在于的数据类型,与单元型变量的不同在于结构结构型型变量是变量是以指针方式以指针方式来传递数据的。来传递数据的。 c=struct(c1,1,c2,b,c3,abcd)c = 1x3 struct array with fields: c1 c2 c3 c为结构型变量为结构型变量第第2章章 matlab语言程序设计语言程序设计 f) 矩阵、向量矩阵、向量matlab是以矩阵为基本运算单元的,是以矩阵为基本运算

11、单元的,数组作为独数组作为独立的计算单元实体是不存在的,立的计算单元实体是不存在的,它的建立、存储完它的建立、存储完全等同于矩阵,只是全等同于矩阵,只是计算时计算时在符号上做了不同的约在符号上做了不同的约定。定。向量是组成向量是组成矩阵的基本元素矩阵的基本元素之一。可以把之一。可以把行向量行向量看看成成1 1 n n 阶矩阵,阶矩阵,把把列向量列向量看成看成n n 1 1阶矩阵。阶矩阵。向量的向量的基本运算采用基本运算采用数组运算数组运算法则。法则。第第2章章 matlab语言程序设计语言程序设计 h)多项式多项式 多项式是以多项式是以向量向量的形式表达的。可以是的形式表达的。可以是列向量列向

12、量也也可以是可以是行向量行向量。 p=1,2,3 poly2sym(p)ans =x2+2*x+3 m=3;4;5 poly2sym(m)ans =3*x2+4*x+5,.,.)(11011110nnnnnnaaaapaxaxaxaxp第第2章章 matlab语言程序设计语言程序设计 2 2、运算符与操作符、运算符与操作符 数学运算符数学运算符操作符操作符冒号冒号“ :” 可以用来产生向量;可以用来产生向量;用作矩阵的下标,部分地选择矩阵元素;用作矩阵的下标,部分地选择矩阵元素;进行行循环操作。进行行循环操作。续号续号“ ” 表示一行未完,而在下一行继续;表示一行未完,而在下一行继续; 分号分

13、号“ ;”在方括号中,表示矩阵中行的结尾;在方括号中,表示矩阵中行的结尾;用在每行的结尾,则用在每行的结尾,则 不显示该行运算的结果。不显示该行运算的结果。第第2章章 matlab语言程序设计语言程序设计 第第2章章 matlab语言程序设计语言程序设计 关于逻辑真假的规定:关于逻辑真假的规定:在所有的关系表达式和逻辑表达式中,输入的任何在所有的关系表达式和逻辑表达式中,输入的任何非非 0 数都被看作是数都被看作是“ 逻辑真逻辑真”,而,而只有只有 0 才被认为是才被认为是“ 逻辑逻辑假假”; 所有关系表达式和逻辑表达式的所有关系表达式和逻辑表达式的计算结果计算结果是一个是一个由由 0 和和

14、1 组成的组成的“ 逻辑矩阵(逻辑矩阵( logical array)”。矩阵中的。矩阵中的 1 表示表示“ 真真”,0 表示表示“ 假假”;逻辑矩阵是一种特殊的数值矩阵。逻辑矩阵是一种特殊的数值矩阵。与与“ 数值类数值类”有关有关的操作和函数对它也适用的操作和函数对它也适用;但它又不同于普通的;但它又不同于普通的“ 数数值值”,它还表示对事物的判断结论,它还表示对事物的判断结论“ 真真”与与“ 假假” 。 第第2章章 matlab语言程序设计语言程序设计 关系操作符关系操作符逻辑操作符逻辑操作符matlab 的的关系操作符关系操作符运算法则:运算法则: 当两个变量是当两个变量是标量标量 a

15、和和 b 时时 若若 a、b 之间关系成立,则关系运算结果为之间关系成立,则关系运算结果为 1; 若若 a、b 之间关系不成立,则关系运算结果为之间关系不成立,则关系运算结果为 0; 当两个维数相同的当两个维数相同的矩阵矩阵 a 和和 b 比较时,矩阵比较时,矩阵 a、b 比比较的是较的是相同位置的元素相同位置的元素,按标量的运算规则逐个进行。,按标量的运算规则逐个进行。关系运算的结果关系运算的结果是一个和是一个和 a维数相同的矩阵,它的元维数相同的矩阵,它的元素由素由 0 和和 1 组成。组成。 当一个当一个矩阵矩阵a 和一个标量和一个标量 b 比较时,把标量比较时,把标量 b 和矩阵和矩阵

16、a 的的每一个元素每一个元素按标量关系运算规则逐个比较。关系按标量关系运算规则逐个比较。关系运算的结果运算的结果是一个和数组是一个和数组 a维数相同的矩阵,它是由维数相同的矩阵,它是由 0 和和 1 组成。组成。 优先级优先级 由高到低为由高到低为算术运算算术运算、关系运算关系运算和和逻辑运算。逻辑运算。第第2章章 matlab语言程序设计语言程序设计 第第2章章 matlab语言程序设计语言程序设计 a=3,4,8;9,0,2;5,3,7a = 3 4 8 9 0 2 5 3 7 b=4,4,1;7,8,4;5,1,7b = 4 4 1 7 8 4 5 1 7 e=(ab)e = 0 0 1

17、 1 0 0 0 1 0 ne=(a=b)ne = 1 0 1 1 1 1 0 1 0 a0=(a5)a0 = 0 0 1 1 0 0 0 0 1 b0=(b a=3,4,8;9,0,2;5,3,7a = 3 4 8 9 0 2 5 3 7 b=4,4,1;7,8,4;5,1,7b = 4 4 1 7 8 4 5 1 7 ab=a&bab = 1 1 1 1 0 1 1 1 1 a_b=a|ba_b = 1 1 1 1 1 1 1 1 1 c=ac = 0 0 0 0 1 0 0 0 0 cc=(a3)&(b t=6t = 6 sin(5*t+6)ans = -0.9918 y

18、=sin(5*t+6)y = -0.9918表达式由表达式由变量名、运算符、数字和函数名变量名、运算符、数字和函数名组成。组成。表达式将按常规的优先纽表达式将按常规的优先纽从左至右从左至右执行运算;执行运算;优先级的规定是优先级的规定是指数运算级别最高指数运算级别最高,乘除运算次之乘除运算次之;括号可以改变运算顺序;括号可以改变运算顺序;书写表达式时,书写表达式时,赋值符赋值符“”和运算符两侧允许有和运算符两侧允许有空格空格,以增加可读性。但在,以增加可读性。但在复数或符号表达式中要复数或符号表达式中要尽量避免空格尽量避免空格,以防出错;,以防出错;表达式的末尾加表达式的末尾加 “;” 时,时

19、,matlab系统只把数值赋系统只把数值赋给变量,给变量, 不显示计算结果不显示计算结果;不加;不加“;”时,时, matlab 系统将会在该条语句的下面直接显示运算结果。系统将会在该条语句的下面直接显示运算结果。第第2章章 matlab语言程序设计语言程序设计 第第2章章 matlab语言程序设计语言程序设计 matlab 有十分丰富的函数资源,总共分为有十分丰富的函数资源,总共分为24类。类。常用有一下几类:常用有一下几类:一般函数命令一般函数命令(general);操作符与操作操作符与操作(operator);数据类型和结构数据类型和结构(datetype);基本矩阵和矩阵操作(基本矩阵

20、和矩阵操作(elmat);基本数学函数(基本数学函数(elfun);二维图二维图(plotxy);图形句柄图形句柄(gengraph);三维图三维图(3dgraph);语言和程序设计语言和程序设计(language);文件输入输出函数文件输入输出函数(iofun);符号工具箱符号工具箱(synbolic)。( 1)创建一个表达式)创建一个表达式 ,并求当,并求当 x=1, y=2 时的时的z 值。值。 ( 2)计算)计算 的值,其中的值,其中 。( 3)创建一个包含)创建一个包含“ 她是我们班最好的学生她是我们班最好的学生”字符串。字符串。 ( 4)输入如下两个矩阵)输入如下两个矩阵 a 和和

21、 b,对矩阵,对矩阵 a 和和 b 作关系运算,标识作关系运算,标识出两矩阵中元素相等的位置,元素值不等的位置,并标识出矩阵出两矩阵中元素相等的位置,元素值不等的位置,并标识出矩阵 a 中所有小于中所有小于 0 的元素。的元素。 , ( 5)对()对( 4)中的矩阵)中的矩阵 a 和和 b 作逻辑作逻辑“ 或或”、“ 与与”运算,并标运算,并标识出矩阵识出矩阵 b 中所有大于中所有大于 2 并小于并小于 5 的元素位置。的元素位置。 上机练习(上机练习(2)13sin25457. 0145 . 175. 375. 0222yexzxyxixy108451x123312321a325823341

22、b第第2章章 matlab语言程序设计语言程序设计 4、程序结构与流程控制语句、程序结构与流程控制语句 a) 顺序结构顺序结构b) 条件结构条件结构if- else- end 语句语句第第2章章 matlab语言程序设计语言程序设计 或或折扣问题折扣问题 book=20; number=40; sums=0.0; if number=30sums=book*number*0.7; end sums sums = 560绘出函数绘出函数 的图像。的图像。 x=-3:0.1:3; if x=1 y=2*x.2+1; plot(x,y) elseif -1x no=input(please inpu

23、t your choice! );please input your choice! 1 switch nocase 0disp(return to main menu);case 1disp(she is a girl);case 2disp(he is a boy);otherwisedisp(i cant determine) endshe is a girlc) 循环结构循环结构while 语句语句:for语句语句:for 变量=初值:增量:结束值 程序模块;end第第2章章 matlab语言程序设计语言程序设计 sum=0; i=0; while(i sumsum = 1419677

24、4举例举例:第第2章章 matlab语言程序设计语言程序设计 for i=1:10 a(i)=1/(i+1) ; end aa = columns 1 through 7 0.5000 0.3333 0.2500 0.2000 0.1667 0.1429 0.1250 columns 8 through 10 0.1111 0.1000 0.0909break语句语句循环结构循环结构continue 语句语句循环结构循环结构第第2章章 matlab语言程序设计语言程序设计 d) 其它与流程控制有关的语句其它与流程控制有关的语句ififpause 指令指令使程序运行停止,等待用户按任意键继续;使

25、程序运行停止,等待用户按任意键继续;input 指令指令提示用户从键盘输入数值、字符串或表达提示用户从键盘输入数值、字符串或表达式,并接受输入;式,并接受输入;disp指令指令在屏幕上显示字符串在屏幕上显示字符串;echo on指令指令显示其后所有执行文件的指令;显示其后所有执行文件的指令; echo off指令指令关闭其后所有执行文件的指令显示。关闭其后所有执行文件的指令显示。第第2章章 matlab语言程序设计语言程序设计 5、数据、数据文件的操作文件的操作第第2章章 matlab语言程序设计语言程序设计 数据文件一般存放在磁盘介质上,用文件名标识,数据文件一般存放在磁盘介质上,用文件名标

26、识,matlab 系统对文件名没有特殊要求。数据文件的格式有两种形式:系统对文件名没有特殊要求。数据文件的格式有两种形式:一是二进制格式文件,二是一是二进制格式文件,二是ascii文本文件。文本文件。a) 数据文件的打开和关闭数据文件的打开和关闭用用fopen函数打开数据文件:函数打开数据文件: fidfopen(filename,permission);fid为文件句柄,为文件句柄,filename 为文件名。为文件名。permission 为文件打为文件打开格式,可以是:开格式,可以是:r, w, a, r+, w+, a+。用用fclose函数关闭数据文件:函数关闭数据文件: sta=f

27、close(fid);b) 数据文件的读写数据文件的读写用用fread读二进制数据文件:读二进制数据文件:a, count=fread(fid, size, precision)其中:其中:a为数据矩阵,用于存放读取的数据;为数据矩阵,用于存放读取的数据;count返所读取的数据元素个数返所读取的数据元素个数, fid 为文件句柄,为文件句柄,size为读为读取范围,是可选项,若不选用则读取整个文件内容,取范围,是可选项,若不选用则读取整个文件内容,precision用于控制所读数据的精度格式。用于控制所读数据的精度格式。例:例:fid=fopen(std.dat,r); a=fread(fi

28、d,100,long); fclose(fid);第第2章章 matlab语言程序设计语言程序设计 第第2章章 matlab语言程序设计语言程序设计 用用fwrite写二进制文件:写二进制文件:count=fwrite(fid, a, precision)例:例: fid=fopen(test.dat, w); cnt=fwrite(fid, a, float) fclose(fid); 用用fscanf读取读取ascii数据文件:数据文件:a, count=fscanf(fid, format, size)format用以控制读取的数据格式,由加上格式符组成,用以控制读取的数据格式,由加上格

29、式符组成,常见的格式符有:常见的格式符有:d, i, o,u, x, e, f, s, c。例:例:fscanf(fid, %s); fscant(fid, %6.2f); fscanf(fid, “%5d); 用用fprint写写ascii文本数据到文件或屏幕上:文本数据到文件或屏幕上:count=fprintf(fid, format, a, )例:例: x=0:0.1:1; y=exp(x) fid=fopen(exp.txt, w) fprintf(fid, %6.2f, %12.8fn,x,y) fclose(fid);第第2章章 matlab语言程序设计语言程序设计 c) 从磁盘中

30、直接读写内存变量从磁盘中直接读写内存变量 load将数据文件中的数据直接为将数据文件中的数据直接为workspace中变量中变量 load filename ascii load filename save将将workspace中变量直接写到数据文件中中变量直接写到数据文件中 save filename a, -ascii save filename a, 第第2章章 matlab语言程序设计语言程序设计 第第2章章 matlab语言程序设计语言程序设计 6)m文件编程文件编程a) 命令式文件命令式文件 如果要输入较多的命令,而且要经常对这些命令重复输如果要输入较多的命令,而且要经常对这些命令

31、重复输入,利用命令文件将显得比较简单方便。入,利用命令文件将显得比较简单方便。建立命令文件的方法根简单,就是将要输入的所有指令建立命令文件的方法根简单,就是将要输入的所有指令按顺序放到一个扩展名为按顺序放到一个扩展名为“.m”的文本文件中,每次运的文本文件中,每次运行时只要输入行时只要输入m文件的文件名即可。文件的文件名即可。在命令文件运行过程中产生的所有变量均是全局变量在命令文件运行过程中产生的所有变量均是全局变量。第第2章章 matlab语言程序设计语言程序设计 例:编一个画宝石项链例:编一个画宝石项链的程序的程序echo ont=(0:0.02:2)*pi;x=sin(t);y=cos(

32、t);z=cos(2*t);plot3(x,y,z,b-,x,y,z,bd)view(-80,60)box onlegend(链子链子,宝石宝石);存入文件存入文件necklace.mb) 函数式文件函数式文件函数文件和命令文件的区别在于:命令文件的变量在文函数文件和命令文件的区别在于:命令文件的变量在文件执行完程序后仍然保留在内存中,而函数文件内定件执行完程序后仍然保留在内存中,而函数文件内定义的变量为义的变量为内部变量内部变量,仅在函数文件内部起作用。,仅在函数文件内部起作用。函数函数m文件通常由以下五部分组成:文件通常由以下五部分组成:函数定义行函数定义行;函数帮助行;函数帮助行;在线函

33、数帮助文件在线函数帮助文件;注释注释;函数体函数体。第第2章章 matlab语言程序设计语言程序设计 第第2章章 matlab语言程序设计语言程序设计 例:计算第例:计算第n个个fibonnaci斐波纳契数斐波纳契数 (一种整数数列一种整数数列, 其中每数等于前面两数之和其中每数等于前面两数之和)function f=fibfun(n) 函数定义行函数定义行 n函数输入;函数输入;f函数输出;函数输出;fibfun函数名。函数名。% fibfun for calculating fibonacci numbers. 函数帮助行函数帮助行% incidengtally, the name fib

34、onacci comes from% filius bonassi, or “son of bonassus” 在线函数帮助文件在线函数帮助文件 % fibfun.mif n2 f=fibfun(n-1)+fibfun(n-2); 函数体函数体 else f=1; end注意注意:文件名必须与函数名相同:文件名必须与函数名相同执行:执行:fibfun(17), help fibfun, lookfor fibfun第第2章章 matlab语言程序设计语言程序设计 7、m文件调试文件调试 语法错误语法错误和和运行错误运行错误对于对于语法错误语法错误,matlab通常能在编译和运行时立即发现,通常

35、能在编译和运行时立即发现,给出相应的错误原因以及所在的行号,并终止其运行。给出相应的错误原因以及所在的行号,并终止其运行。对于对于运行错误运行错误,matlab提供了提供了m文件的调试文件的调试(debug)工具。工具。对于对于命令文件命令文件,可以直接在文件编辑器中设置断点,用调,可以直接在文件编辑器中设置断点,用调试工具(菜单或工具栏)分步执行,并在工作空间中检查每试工具(菜单或工具栏)分步执行,并在工作空间中检查每个变量的值。(以个变量的值。(以necklace.m为例)为例)对于对于函数文件函数文件,可以先在文件编辑器中设置断点,再到命,可以先在文件编辑器中设置断点,再到命令行状态执行

36、函数,然后再回到文件编辑器中进行观察和调令行状态执行函数,然后再回到文件编辑器中进行观察和调试。(以试。(以fibfun.m为例)为例)( 1)利用)利用 for 循环求循环求 1!+2!+3!+20!的值。的值。 ( 2)用)用 while 循环求循环求 1200 之间的整数之和。之间的整数之和。 ( 3)编写一个)编写一个 m 文件,画出下列分段函数所表示的曲面。文件,画出下列分段函数所表示的曲面。( 4)编写一个求圆的面积的函数文件。)编写一个求圆的面积的函数文件。 ( 5)编写一个求圆的面积的命令文件)编写一个求圆的面积的命令文件 上机练习(上机练习(3)15457. 0117575.

37、 0154. 0),(5 . 175. 375. 065 . 175. 375. 0222222yxeyxeyxeyxpyyxyxyyx 第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算一、矩阵和数组运算一、矩阵和数组运算 要求内容:要求内容:( 1)熟练掌握)熟练掌握矩阵的创建矩阵的创建。 ( 2)掌握)掌握矩阵运算矩阵运算和和数组运算数组运算。 ( 3)学会如何使用)学会如何使用矩阵运算函数矩阵运算函数和和数组运算函数数组运算函数。 ( 4)注意区分矩阵和数组的差别,特别是运算符的差别。)注意区分矩阵和数组的差别,特别是运算符的差别。 ( 6)了解)了解多项式多项式的创建方法和基本运算

38、。的创建方法和基本运算。matlab 以以矩阵矩阵为基本的运算单元,为基本的运算单元,向量和标量向量和标量作为作为特殊的矩阵处理:特殊的矩阵处理:向量向量看作只有一行或一列的矩阵;看作只有一行或一列的矩阵;标量标量看作只有一个元素的矩阵。看作只有一个元素的矩阵。1、 矩阵的构造矩阵的构造a.直接输入直接输入b.利用利用内部函数内部函数产生矩阵产生矩阵c.利用利用m文件文件产生矩阵产生矩阵d.从从外部数据文件外部数据文件调入矩阵调入矩阵第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算a. 直接输入直接输入直接输入需遵循以下直接输入需遵循以下

39、基本规则基本规则:整个矩阵应以整个矩阵应以“ ”为首尾,即整个输入矩阵必须包含在为首尾,即整个输入矩阵必须包含在方括号中;方括号中; 矩阵中,行与行之间必须用分号矩阵中,行与行之间必须用分号“ ;”或或 enter 键(键( 按按 enter 键)符分隔;键)符分隔; 每行中的元素用逗号每行中的元素用逗号“ ,”或或空格空格分隔;分隔; 矩阵中的元素可以是矩阵中的元素可以是数字或表达式数字或表达式,但表达式中不可包,但表达式中不可包含未知的变量,含未知的变量,matlab用表达式的值为该位置的矩阵用表达式的值为该位置的矩阵元素赋值。当矩阵中没有任何元素时,该矩阵被称作元素赋值。当矩阵中没有任何

40、元素时,该矩阵被称作“ 空阵空阵”( empty matrix)。)。 a=1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16 a = 1 2 3 4 5 6 7 8 9 10 11 1213 14 15 16利用表达式输入利用表达式输入 b=1,sqrt(25),9,132,6,10,7*23+sin(pi),7,11,154,abs(-8),12,16b = 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算由向量构成矩阵由向量构成矩阵

41、向量是组成向量是组成矩阵的基本元素矩阵的基本元素之一。向量元素需要用方括号之一。向量元素需要用方括号括起来。元素之间用括起来。元素之间用空格空格和和逗号逗号分隔生成分隔生成行向量行向量,用,用分号分号隔开生成隔开生成列向量列向量。可以把。可以把行向量行向量看成看成1 n 阶矩阵,阶矩阵,把把列向列向量量看成看成n 1 阶矩阵。阶矩阵。向量的构造方法:向量的构造方法: 直接输入向量直接输入向量 利用冒号生成向量利用冒号生成向量 利用利用 linspace/logspace 生成向量生成向量 a=1,2,3,4; x=0:0.5:2;% x=logspace(a,b,n) 生成有生成有 n 个元素

42、的行向量个元素的行向量 x,其元素起点,其元素起点 x(1)=10a,终点终点 x(n)=10b。 b=logspace(0,2,4)b = 1.0000 4.6416 21.5443 100.0000 x x = 0 0.5000 1.0000 1.5000 2.0000% x=linspace(a,b,n) 生成有生成有 n 个元素的行向量个元素的行向量 x,其元素值在,其元素值在 a、b 之间线性分布。之间线性分布。 y=linspace(0,2,7) y = 0 0.3333 0.6667 1.0000 1.3333 1.6667 2.0000 z=-1 x 3z = -1.0000

43、0 0.5000 1.0000 1.5000 2.0000 3.0000 u=y;zu = 0 0.3333 0.6667 1.0000 1.3333 1.6667 2.0000 -1.0000 0 0.5000 1.0000 1.5000 2.0000 3.0000第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算b.利用内部函数产生矩阵利用内部函数产生矩阵%compan生成生成x向量的伴随矩阵向量的伴随矩阵 x=2,4,6,8,10 x = 2 4 6 8 10 compan(x)ans = -2 -3 -4 -5 -6 1 0 0 0

44、 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0% eye 生成单位阵生成单位阵 s=eye(6) s = 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1% ones 生成全部元素为生成全部元素为 1 的矩阵的矩阵 ones(3,4) ans = 1 1 1 1 1 1 1 1 1 1 1 1 f=5*ones(3)f = 5 5 5 5 5 5 5 5 5% zeros 生成全部元素为生成全部元素为0的矩阵的矩阵 z=zeros(2,4)z = 0 0 0 0 0 0 0 0% r

45、and 生成均匀分布的随机矩阵生成均匀分布的随机矩阵 r=rand(4) r = 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185 0.7919 0.4057%生成空阵生成空阵 k= k = 第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算c.利用利用m文件产生矩阵文件产生矩阵a=1,2,3,4,5 6,7,8,9,10 11,12,13,14,15 16,17,18,19,2021,22,23,24,25第第3章章 矩阵、数组和符号运算矩阵、数

46、组和符号运算d.从外部数据文件调入矩阵 用load命令输入 用import 菜单输入第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算2、矩阵元素的修改、矩阵元素的修改 a=1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16 a = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 a(1,1)ans = 1 a(2,3)ans = 7 a(1,1)=0;a(2,2)=a(1,2)+a(2,1);a(4,4)=cos(0); aa = 0 2 3 4 5 7 7 8 9 10 11 12 13 14 15 1第第3章章 矩阵、数组和符号运

47、算矩阵、数组和符号运算3、矩阵的运算、矩阵的运算矩阵运算按照矩阵运算按照线性代数中基本的运算法则线性代数中基本的运算法则进行;进行;加减运算必须在具有相同行列的矩阵之间进行;加减运算必须在具有相同行列的矩阵之间进行;只有当只有当矩阵矩阵 a 的列数和矩阵的列数和矩阵 b 的行数相同时的行数相同时,才可,才可进行矩阵进行矩阵 a 和和 b 的的乘法运算乘法运算;乘方运算乘方运算只有在矩阵为只有在矩阵为方阵方阵时才有意义;时才有意义;当一个当一个矩阵矩阵和一个和一个标量标量( 11 的矩阵)进行运算时,的矩阵)进行运算时,其结果将是此其结果将是此标量和矩阵中的每一个元素标量和矩阵中的每一个元素“

48、相加相加”、“ 相减相减”、“ 相乘相乘”、“ 相除相除”;在在 matlab 中,矩阵左除和右除的含义不同。矩阵中,矩阵左除和右除的含义不同。矩阵右除定义为:右除定义为:ba=(a/b)。第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算a. 矩阵的加减运算矩阵的加减运算 a=1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16 b=1,sqrt(25),9,132,6,10 7*23+sin(pi),7,11,154,abs(-8),12,16 c=a+b c = 2 7 12 17 7 12 17 22 12 17 22 27 17 22 27 32 d=a-b

49、d = 0 -3 -6 -9 3 0 -3 -6 6 3 0 -3 9 6 3 0 e=a+3 e = 4 5 6 7 8 9 10 11 12 13 14 1516 17 18 19第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算b. 矩阵乘法矩阵乘法 c=a*bc = 30 70 110 150 70 174 278 382 110 278 446 614 150 382 614 846 d=a*3d = 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48c. 矩阵除法矩阵除法左除左除 ab=inv(a)*b a=8,1,6;3,5,7;4,9,2

50、a = 8 1 6 3 5 7 4 9 2 b=1,1,1;1,2,3;1,3,6 b = 1 1 1 1 2 3 1 3 6 abans = 0.0667 0.0500 0.0972 0.0667 0.3000 0.6389 0.0667 0.0500 -0.0694 c=inv(a)c = 0.1472 -0.1444 0.0639 -0.0611 0.0222 0.1056 -0.0194 0.1889 -0.1028 c*b ans = 0.0667 0.0500 0.0972 0.0667 0.3000 0.6389 0.0667 0.0500 -0.0694右除右除 a/b =a*

51、inv(b) a/bans = 27 -31 12 1 2 0 -13 29 -12 d=inv(b) d = 3 -3 1 -3 5 -2 1 -2 1 a*dans = 27 -31 12 1 2 0 -13 29 -12第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算当对矩阵作当对矩阵作除法运算除法运算时,有可能因为误差设置的差别导致不精确的结时,有可能因为误差设置的差别导致不精确的结果,此时,果,此时,matlab 会自动给出警告信息会自动给出警告信息:matlab 采用采用 ieee( 国际认可的)算法,即使国际认可的)算法,即使 a 为奇异阵为奇异阵( 即即 a 的行列式值是的

52、行列式值是0),运算也照样进行,但是此时),运算也照样进行,但是此时 matlab 将给出警告将给出警告信息:信息:“ warning: matrix is singular to working precision.”,求出的矩,求出的矩阵所有元素为无穷大(阵所有元素为无穷大( inf);); 当矩阵当矩阵 a 为为病态阵病态阵( badly scaled)时,)时,matlab 使用的算法产生的使用的算法产生的误差可能很大,误差可能很大,matlab 系统也将给出警告信息:系统也将给出警告信息:“ warning: matrix is badly scaled to working pre

53、cision. results may be inaccurate.”。 e=1,2,3;4,5,6;7,8,9e = 1 2 3 4 5 6 7 8 9 f=1,4,7;2,5,8;3,6,9f = 1 4 7 2 5 8 3 6 9 efwarning: matrix is close to singular or badly scaled. results may be inaccurate. rcond = 1.541976e-018.ans = -0.3333 -7.3333 -14.3333 0.6667 11.6667 22.6667 0 -4.0000 -8.0000 第第3章

54、章 矩阵、数组和符号运算矩阵、数组和符号运算4、矩阵的函数矩阵的函数a.a.矩阵的基本变换函数矩阵的基本变换函数 a=3,3,5;2,4,6;7,8,9 %创建方阵 a a = 3 3 5 2 4 6 7 8 9 inv(a) %矩阵的逆(a必须为非奇异方阵) ans = 0.5000 -0.5417 0.0833 -1.0000 0.3333 0.3333 0.5000 0.1250 -0.2500 a %矩阵的转置 ans = 3 2 7 3 4 8 5 6 9b.b.常用的矩阵运算函数常用的矩阵运算函数 只有方阵才可计算行只有方阵才可计算行列式值,即列式值,即 det(a)的的计算只有在

55、计算只有在 a 为方阵为方阵时才有意义。时才有意义。logm(a)和和 sqrtm(a)计算矩阵的对数计算矩阵的对数/平方平方根是指对根是指对整个矩阵整个矩阵 a 求对数求对数/平方根平方根。 第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算 det(a) %求方阵 a 的行列式值ans = -24 eig(a) %求特征值ans = 16.7503 0.8793 -1.6295 logm(a) %求矩阵 a 的对数ans = 0.5432 + 0.8066i 0.7475 + 0.5526i 0.6902 - 0.6914i 0.858

56、4 + 1.4131i 0.7845 + 0.9681i 0.6967 - 1.2112i 0.7502 - 1.5947i 1.1089 - 1.0926i 1.8504 + 1.3668i sqrtm(a) %求矩阵 a 的平方根ans = 1.2466 + 0.3278i 0.5192 + 0.2246i 1.0906 - 0.2809i 0.2001 + 0.5742i 1.4228 + 0.3934i 1.3620 - 0.4921i 1.6144 - 0.6480i 1.7430 - 0.4439i 2.3610 + 0.5554i c.c.矩阵的分解函数矩阵的分解函数 第第3章章

57、 矩阵、数组和符号运算矩阵、数组和符号运算第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算 x=3,-1,2;1,2,-1;-2,1,4 %输入矩阵 x x = 3 -1 2 1 2 -1-2 1 4 l,u=lu(x) %对矩阵 x 进行 lu 分解 l = 1.0000 0 0 0.3333 1.0000 0 -0.6667 0.1429 1.0000u = 3.0000 -1.0000 2.0000 0 2.3333 -1.6667 0 0 5.5714 q,r=qr(x) %对矩阵 x 进行 qr 分解 q = -0.8018 0.1543 0.5774 -0.2673 -0.95

58、67 -0.1155 0.5345 -0.2469 0.8083 r = -3.7417 0.8018 0.8018 0 -2.3146 0.2777 0 0 4.5033第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算5、数组运算、数组运算 matlab是以矩阵为基本运算单元的,是以矩阵为基本运算单元的,数组作为独立的计数组作为独立的计算单元实体是不存在的。数组运算算单元实体是不存在的。数组运算是是matlab的一种运算形的一种运算形式,式,它它从矩阵的单个元素出发,针对每个元素进行的运算。从矩阵的单个元素出发,针对每个元素进行的运算。 matlab对对数组运算数组运算在符号上做了不同的

59、约定,在符号上做了不同的约定,矩阵运算和数组运算矩阵运算和数组运算有着显著的不同。属于两种不同的有着显著的不同。属于两种不同的运算:运算:矩阵运算矩阵运算是从矩阵的整体出发,按照线性代数的运是从矩阵的整体出发,按照线性代数的运算规则进行算规则进行,有着明确而严格的数学规则;,有着明确而严格的数学规则;而数组运算而数组运算是是从矩阵的单个元素出发,针对每个元素进行的运算从矩阵的单个元素出发,针对每个元素进行的运算。对于加法和减法而言,矩阵运算和数组运算相同对于加法和减法而言,矩阵运算和数组运算相同;对于;对于乘法和除法而言,矩阵和数组的运算有着显著的不同。乘法和除法而言,矩阵和数组的运算有着显著

60、的不同。 第第3章章 矩阵、数组和符号运算矩阵、数组和符号运算 a. 矩阵的矩阵的数组乘数组乘/除及乘方除及乘方数组除数组除的运算规则:的运算规则: 当参与除运算的两个矩阵同维时,当参与除运算的两个矩阵同维时,运算为运算为矩阵矩阵的相应元素相除的相应元素相除,计算结果是与参与,计算结果是与参与运算的矩阵同维的矩阵;运算的矩阵同维的矩阵; 当参与运算的矩阵有一个是当参与运算的矩阵有一个是标量标量时,运算时,运算是标量和矩阵的每一个元素相除,计算结是标量和矩阵的每一个元素相除,计算结果是与参与运算的矩阵同维的矩阵;果是与参与运算的矩阵同维的矩阵; 右除与左除的关系为右除与左除的关系为 a./b=b.a,其中,其中

温馨提示

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

评论

0/150

提交评论