matlab基础知识教程ppt(全).ppt

上传人:公**** 文档编号:569873603 上传时间:2024-07-31 格式:PPT 页数:197 大小:3.17MB
返回 下载 相关 举报
matlab基础知识教程ppt(全).ppt_第1页
第1页 / 共197页
matlab基础知识教程ppt(全).ppt_第2页
第2页 / 共197页
matlab基础知识教程ppt(全).ppt_第3页
第3页 / 共197页
matlab基础知识教程ppt(全).ppt_第4页
第4页 / 共197页
matlab基础知识教程ppt(全).ppt_第5页
第5页 / 共197页
点击查看更多>>
资源描述

《matlab基础知识教程ppt(全).ppt》由会员分享,可在线阅读,更多相关《matlab基础知识教程ppt(全).ppt(197页珍藏版)》请在金锄头文库上搜索。

1、MATLAB 语言及其应用 Application of Matlab Language 2024/7/31Application of Matlab Language2 第一讲第一讲 Matlab概述n前言前言nMatlabMatlab软件概述软件概述nMatlabMatlab的桌面环境及入门知识的桌面环境及入门知识 2024/7/31Application of Matlab Language3 n功能强大功能强大n数值运算优势数值运算优势n符号运算优势符号运算优势(Maple)(Maple)n强大的强大的2D2D、3D3D数据可视化功能数据可视化功能n许多具有算法自适应能力的功能函数许多

2、具有算法自适应能力的功能函数 2024/7/31Application of Matlab Language4 n语言简单、内涵丰富语言简单、内涵丰富n语言及其书写形式非常接近于常规数学书写形式;语言及其书写形式非常接近于常规数学书写形式;n其操作和功能函数指令就是常用的计算机和数学书上的一些简单其操作和功能函数指令就是常用的计算机和数学书上的一些简单英文单词表达的,如:英文单词表达的,如:helphelp、clearclear等;等;n完备的帮助系统,易学易用。完备的帮助系统,易学易用。n扩充能力、可开发能力较强扩充能力、可开发能力较强nMATLABMATLAB完全成了一个开放的系统完全成了

3、一个开放的系统n用户可以开发自己的工具箱用户可以开发自己的工具箱n可以方便地与可以方便地与FortranFortran、C C等语言接口等语言接口 n编程易、效率高编程易、效率高 nMatlabMatlab以数组为基本计算单元以数组为基本计算单元n具有大量的算法优化的功能函数具有大量的算法优化的功能函数 2024/7/31Application of Matlab Language5 2 MATLAB2 MATLAB的桌面环境及入门知识的桌面环境及入门知识n启动与退出启动与退出MATLAB MATLAB n命令窗口及使用命令窗口及使用n数值表示、变量、表达式数值表示、变量、表达式n命令历史窗口

4、命令历史窗口n工作空间工作空间n获取在线帮助获取在线帮助 2024/7/31Application of Matlab Language6 2.2 2.2 命令窗口的使用命令窗口的使用激活命令窗口。激活命令窗口。“” 与闪烁的光标一起表明系统就绪,等待输入。与闪烁的光标一起表明系统就绪,等待输入。命令窗口脱离命令窗口脱离MATLABMATLAB桌面。桌面。 n简单计算简单计算【例例2.2-12.2-1】计算计算(1 1)在)在MATLABMATLAB命令窗口输入命令窗口输入 以下内容:以下内容:(12+2*(7-4)/32(12+2*(7-4)/32(2 2)按)按【EnterEnter】键,

5、指令执行。键,指令执行。(3 3)返回的计算结果:)返回的计算结果:ans= 2 2024/7/31Application of Matlab Language7 2.2 2.2 命令窗口命令窗口 (续)(续)说明说明l在命令窗口在命令窗口【EnterEnter】键提交命令执行。键提交命令执行。lMatlabMatlab所用运算符(如所用运算符(如+ +、- -、 等)是各种计算程序中等)是各种计算程序中常见的。常见的。l计算结果中的计算结果中的“ansans”是英文是英文“answeranswer”的一种缩写,的一种缩写,其含义就是其含义就是“运算答案运算答案”。ansans是是Matlab

6、Matlab的一个预定义的一个预定义变量。变量。 2024/7/31Application of Matlab Language8 2.2 2.2 命令窗口命令窗口 (续)(续)n简单计算(续)【例例2.2-22.2-2】计算计算sin(4sin(4 ) )sin(45*pi/180)sin(45*pi/180)lMatalb中正弦函数中正弦函数sin就是常见的正弦函数。就是常见的正弦函数。l它的参数值是以它的参数值是以“弧度弧度”为单位的。为单位的。lpi也是也是Matalb的预定义变量。的预定义变量。lpi=3.14159lMatlab对字母大小写是敏感的。对字母大小写是敏感的。【例例2.

7、2-32.2-3】计算计算 的值,其中的值,其中x=4.92x=4.92。 sqrt(2*exp(4.92+0.5)+1)sqrt(2*exp(4.92+0.5)+1)lMatalb中开平方中开平方sqrt(x),是英文,是英文square root的缩的缩写写 。lMatalb中指数函数中指数函数exp(x),常,常见的表达方式见的表达方式。ans= 0.7071ans= 21.2781 2024/7/31Application of Matlab Language9 2.2 2.2 命令窗口命令窗口 (续)(续)7“clcclc”清除窗口显示内容的命令清除窗口显示内容的命令。【例例2.2-

8、42.2-4】计算计算 的值。的值。 y=2*sin(0.3*pi)/(1+sqrt(5)y=2*sin(0.3*pi)/(1+sqrt(5)y= 0.5000【例例2.2-52.2-5】计算计算 的值。的值。 y=2*cos(0.3*pi)/(1+sqrt(5)y= 0.3633%命令行编辑l “”键调回已输入过命令。l修改。 2024/7/31Application of Matlab Language10 2.2 2.2 命令窗口命令窗口 (续)(续)【例例2.2-52.2-5】计算半径为计算半径为5.2m5.2m的圆的周长和面积。的圆的周长和面积。radius=5.2; %radius

9、=5.2; %圆的半径圆的半径area=pi*5.22,area=pi*5.22, circle_len=2*pi*5.2circle_len=2*pi*5.2area = 84.9487circle_len = 32.6726l以上两例,命令行中用到了等号以上两例,命令行中用到了等号“=”。l计算结果不再赋给计算结果不再赋给“ans”,而是赋给,而是赋给用户指定的变量用户指定的变量y、area、circle_len。l无论是预定义变量还是用户自定义变量无论是预定义变量还是用户自定义变量都被存储在系统的工作空间内,即系统都被存储在系统的工作空间内,即系统定义的一个存储窗口变量的内存空间。定义的

10、一个存储窗口变量的内存空间。lWho、whos命令用来显示工作空间的命令用来显示工作空间的变量变量lclear命令用来清除工作空间的变量。命令用来清除工作空间的变量。 2024/7/31Application of Matlab Language11 2.2 2.2 命令窗口命令窗口 (续)(续)n数值显示格式设置数值显示格式设置n缺省显示格式:简洁的短(缺省显示格式:简洁的短(short gshort g)格式)格式n窗口命令及语法格式:窗口命令及语法格式:format format 显示格式关键字显示格式关键字 如:如:format long %15format long %15位数字显示

11、位数字显示n常见通用命令常见通用命令命令命令含义含义clcclc清除命令窗口的显示内容清除命令窗口的显示内容clearclear 清除清除MatlabMatlab工作空间中保工作空间中保存的变量存的变量whowho或或whoswhos显示显示MatlabMatlab工作空间中的变量信息工作空间中的变量信息dirdir显示当前工作目录的文件和子目录清单显示当前工作目录的文件和子目录清单cdcd显示或设置当前工作目录显示或设置当前工作目录typetype显示指定显示指定m m文件的内容文件的内容helphelp或或docdoc获取在线帮助获取在线帮助quitquit或或exitexit关闭关闭/

12、/推出推出MATALBMATALB 2024/7/31Application of Matlab Language12 2.3 2.3 工作空间工作空间n查看工作空间内存变量,可以由查看工作空间内存变量,可以由whowho、whos whos 。n命名新变量。命名新变量。n修改变量名修改变量名n删除变量删除变量n绘图绘图n保存变量数据保存变量数据n装入数据装入数据 2024/7/31Application of Matlab Language13 2.4 2.4 历史窗口历史窗口n历史窗口:历史窗口:n首先首先记录每次启动时间记录每次启动时间n并并记录在命令窗口输入命令记录在命令窗口输入命令,

13、此次运行期间,此次运行期间,输入的所有命令被记录为一组,并以此次启动时输入的所有命令被记录为一组,并以此次启动时间为标志。间为标志。n使用历史窗口:使用历史窗口:n可以查看命令窗口输入过的命令或语句可以查看命令窗口输入过的命令或语句n可以选择一条或多条命令执行拷贝、执行、创可以选择一条或多条命令执行拷贝、执行、创建建M M文件等。文件等。 要清除历史记录,可以选择要清除历史记录,可以选择Edit菜单中的菜单中的ClearCommandHistory命令命令 2024/7/31Application of Matlab Language14 2.5 2.5 当前目录窗口和搜索路径当前目录窗口和搜

14、索路径当前目录窗口:当前目录窗口:指指Matlab运行时的工作目录。运行时的工作目录。l只有在当前目录和搜索路径下的文件、函数才可以被只有在当前目录和搜索路径下的文件、函数才可以被运行和调用。运行和调用。l如果没有特殊指明,数据文件也将存放在当前目录下;如果没有特殊指明,数据文件也将存放在当前目录下;l用户可以将自己的工作目录设置成当前目录,从而使用户可以将自己的工作目录设置成当前目录,从而使得所有操作都在当前目录中进行。得所有操作都在当前目录中进行。 2024/7/31Application of Matlab Language15 【功能演示功能演示-1-1】求方程求方程的全部根。的全部根

15、。p=2,0,-3,71,-9,13;建立多项式系数向量建立多项式系数向量x=roots(p);求根求根x=-3.49141.6863+2.6947i1.6863-2.6947i0.0594+0.4251i0.0594-0.4251i 2024/7/31Application of Matlab Language16 【功能演示功能演示-2-2】求解线性方程组求解线性方程组a=2,3,-1;8,2,3;45,3,9;建立系数矩阵建立系数矩阵ab=2;4;23;建立列向量建立列向量bx=inv(a)*bx=0.55310.2051-0.2784 2024/7/31Application of M

16、atlab Language17 符号计算符号计算symsxyz 建立符号变量建立符号变量x,y,z=solve(2*x+3*y-z-2,8*x+2*y+3*z-4,45*x+3*y+9*z-23)x = 151/273 y = 8/39 z = -76/273 2024/7/31Application of Matlab Language18 【功能演示功能演示-3-3】求解定积分求解定积分 求解求解 I=quad(x.*log(1+x),0,1)ans=0.250或或symsxnt(x*log(1+x),0,1)ans=1/4 2024/7/31Application of Matlab

17、Language19 【功能演示功能演示-4-4】多项式曲线拟合多项式曲线拟合考虑如下考虑如下 x-y x-y 一组实验数据:一组实验数据:x=1,2,3,4,5,6,7,8,9,10y=1.2,3,4,4,5,4.7,5,5.2,6,7.2注:注:n一次多项式拟合:一次多项式拟合:p1=polyfit(x,y,1)n三次多项式拟合:三次多项式拟合:p3=polyfit(x,y,3)nplot plot 原始数据、一次拟合曲线和三次拟合曲线原始数据、一次拟合曲线和三次拟合曲线x2=1:0.1:10;y1=polyval(p1,x2)y3=polyval(p3,x2)plot(x,y,*,x2,

18、y1,:,x2,y3) 2024/7/31Application of Matlab Language20 拟合曲线图拟合曲线图由图可见,三次拟合结果较好。由图可见,三次拟合结果较好。 2024/7/31Application of Matlab Language21 2.3 数值表示、变量及表达式n数值的记述数值的记述 MatlabMatlab的数只采用习惯的十进制表示,可以带小的数只采用习惯的十进制表示,可以带小数点和负号数点和负号; ;其缺省的数据类型为双精度浮点型其缺省的数据类型为双精度浮点型(doubledouble)。)。 例如:例如:3 -10 0.001 1.3e10 1.25

19、6e-63 -10 0.001 1.3e10 1.256e-6n变量命令规则变量命令规则l变量名、函数名对字母的大小写是敏感的。如变量名、函数名对字母的大小写是敏感的。如myVarmyVar与与myvarmyvar表示两个不同的变量。表示两个不同的变量。l变量名第一个字母必须是英文字母。变量名第一个字母必须是英文字母。l变量名可以包含英文字母、下划线和数字。变量名可以包含英文字母、下划线和数字。l变量名不能包含空格、标点。变量名不能包含空格、标点。l变量名最多可包含变量名最多可包含6363个字符(个字符(6.56.5及以后的版本)。及以后的版本)。 2024/7/31Application o

20、f Matlab Language22 2.3 2.3 数值表示、变量及表达式数值表示、变量及表达式 (续)(续)nMatlabMatlab预定义的变量预定义的变量变量名量名意意义ans最近的计算结果的变量名最近的计算结果的变量名epsMATLAB定义的正的极小值定义的正的极小值=2.2204e-16pi圆周率圆周率inf值,无限大值,无限大i或或j虚数单元,虚数单元,sqrt(-1)NaN非数,非数,0/0、/说明说明l每当每当MATLABMATLAB启动完成,这些变量就被产生。启动完成,这些变量就被产生。lMATLABMATLAB中,被中,被0 0除不会引起程序中断,给出报警的同时用除不会

21、引起程序中断,给出报警的同时用infinf或或NaNNaN给出结果。给出结果。l用户只能临时覆盖这些预定义变量的值,用户只能临时覆盖这些预定义变量的值,ClearClear或重启或重启MATLABMATLAB可恢复其值。可恢复其值。 2024/7/31Application of Matlab Language23 2.3 2.3 数值表示、变量及表达式数值表示、变量及表达式 (续)(续)n运算符和表达式运算符和表达式运算运算数学表达式数学表达式MATLAB运算符运算符MATLAB表达式表达式加加a+b+a+b减减a-b-a-b乘乘axb*a*b除除a/b或或ab/或或a/b或或ab幂幂ab说

22、明说明lMatlabMatlab用用“ ”和和”/ /”分别表示分别表示“左除左除”和和“右除右除”。对标量而言,两者。对标量而言,两者没有区别。对矩阵产生不同影响。没有区别。对矩阵产生不同影响。lMATLABMATLAB表达式的书写规则与表达式的书写规则与“手写方式手写方式”几乎完全相同。几乎完全相同。l表达式按与常规相同的优先级自左至右执行运算。表达式按与常规相同的优先级自左至右执行运算。l优先级:指数运算级别最高,乘除次之,加减最低。优先级:指数运算级别最高,乘除次之,加减最低。l括号改变运算的次序。括号改变运算的次序。 2024/7/31Application of Matlab La

23、nguage24 课堂总结n对对MATALBMATALB整个软件产品进行了概述整个软件产品进行了概述n历史发展历史发展n软件产品家族体系构成软件产品家族体系构成nM M语言的特点语言的特点nMATLABMATLAB的入门知识的入门知识nMATLABMATLAB桌面桌面nMATLABMATLAB数值的记述和数据显示格式数值的记述和数据显示格式n变量及其命名规则变量及其命名规则n运算符及表达式运算符及表达式n常用的常用的MATLABMATLAB命令命令n在线帮助的使用在线帮助的使用第第2章章Matlab数据及其数据及其运算运算MatlabMatlab数据类型非常丰富,除数据类型非常丰富,除数值型数

24、值型、字符型字符型等基本数等基本数据类型外,还有据类型外,还有结构体结构体、单元单元等更为复杂的数据类型。等更为复杂的数据类型。各种数据类型都以矩阵形式存在,各种数据类型都以矩阵形式存在,矩阵矩阵是是MatlabMatlab最基本的最基本的数据对象,并且矩阵的运算是定义在数据对象,并且矩阵的运算是定义在复数域复数域上的。上的。 2024/7/31Application of Matlab Language26 2.1 2.1 数值表示、变量及表达式数值表示、变量及表达式n数值的记述数值的记述 MatlabMatlab的数只采用习惯的十进制表示,的数只采用习惯的十进制表示,可以带小数点和负号可以

25、带小数点和负号; ;其缺省的数据类型为其缺省的数据类型为双双精度浮点型精度浮点型(doubledouble)。)。 例如:例如:3 -10 0.001 1.3e10 3 -10 0.001 1.3e10 1.256e-61.256e-6n变量命令规则变量命令规则l变量名、函数名对字母的大小写是敏感的。变量名、函数名对字母的大小写是敏感的。如如myVarmyVar与与myvarmyvar表示两个不同的变量。表示两个不同的变量。l变量名变量名第一个字母必须是第一个字母必须是英文字母英文字母。l变量名可以包含变量名可以包含英文字母、下划线和数字英文字母、下划线和数字。l变量名变量名不能包含空格、标点

26、不能包含空格、标点。l变量名最多可包含变量名最多可包含6363个个字符(字符(6.56.5及以后的及以后的版本)。版本)。 2024/7/31Application of Matlab Language27 2.1 2.1 数值表示、变量及表达式数值表示、变量及表达式 (续)(续)nMatlabMatlab预定义的变量预定义的变量变量名量名意意义ans最近的计算结果的变量名最近的计算结果的变量名epsMATLAB定义的正的极小值定义的正的极小值=2.2204e-16pi圆周率圆周率inf值,无限大值,无限大i或或j虚数单元,虚数单元,sqrt(-1)NaN非数,非数,0/0、/说明说明l每当每

27、当MATLABMATLAB启动完成,这些变量就被产生。启动完成,这些变量就被产生。lMATLABMATLAB中,被中,被0 0除不会引起程序中断,给出报警的同时用除不会引起程序中断,给出报警的同时用infinf或或NaNNaN给出结果。给出结果。l用户只能临时覆盖这些预定义变量的值,用户只能临时覆盖这些预定义变量的值,ClearClear或重启或重启MATLABMATLAB可恢可恢复其值。复其值。 2024/7/31Application of Matlab Language28 2.12.1数值表示、变量及表达式数值表示、变量及表达式 (续)(续)n运算符和表达式运算符和表达式运算运算数学表

28、达式数学表达式MATLAB运算符运算符MATLAB表达式表达式加加a+b+a+b减减a-b-a-b乘乘axb*a*b除除a/b或或ab/或或a/b或或ab幂幂ab说明说明lMatlabMatlab用用“ ”和和”/ /”分别表示分别表示“左除左除”和和“右除右除”。对标量而言,。对标量而言,两者没有区别。对矩阵产生不同影响。两者没有区别。对矩阵产生不同影响。lMATLABMATLAB表达式的书写规则与表达式的书写规则与“手写方式手写方式”几乎完全相同。几乎完全相同。l表达式按与常规相同的优先级自左至右执行运算。表达式按与常规相同的优先级自左至右执行运算。l优先级:指数运算级别最高,乘除次之,加

29、减最低。优先级:指数运算级别最高,乘除次之,加减最低。l括号改变运算的次序。括号改变运算的次序。 2024/7/31Application of Matlab Language29 2.2Matlab矩阵矩阵(数组数组)的表示的表示n数组的概念数组的概念n一维数组变量的创建一维数组变量的创建n二维数组变量的创建二维数组变量的创建n数组元素的标识与寻访数组元素的标识与寻访n数组运算数组运算n多维数组多维数组 2024/7/31Application of Matlab Language30 2.2.1.数组数组(array)的概念的概念n数组定义:数组定义:按按行行(row)和和列列(colum

30、n)顺序排列的实数或顺序排列的实数或复数的有序集,被称为复数的有序集,被称为数组数组。数组中的任何一个数都被称为这个数组的数组中的任何一个数都被称为这个数组的元素元素,由其所在的行和列标识,这个标识,由其所在的行和列标识,这个标识也称为数组元素的也称为数组元素的下标或索引下标或索引。Matlab将将标量标量视为视为11的数组。的数组。对对m行、行、n列的列的2维数组维数组a:计为计为mn的数组的数组a;*行标识、列标识均从行标识、列标识均从1开始;开始;行标识从上到下递增;行标识从上到下递增;列标识从左到右递增。列标识从左到右递增。1234522223242533233343544243444

31、5a(3, 4)=34 row is firsta= 2024/7/31Application of Matlab Language31 n数组的分类数组的分类n一维数组一维数组,也称为向量,也称为向量(vector)。行向量行向量(rowvector)、列向量、列向量(columnvector)。n二维数组二维数组(矩阵矩阵matrix)。n多维数组多维数组。有效矩阵有效矩阵:每行元素的个数必须相同,每:每行元素的个数必须相同,每列元素的个数也必须相同。列元素的个数也必须相同。2.2.1.数组数组(array)的概念的概念 2024/7/31Application of Matlab Lan

32、guage32 2.2.1、数组、数组(array)的概念的概念(续)(续)行向量行向量列向量列向量a(2,1)=3a(1,2)=2b(3)=3c(2)=2 2024/7/31Application of Matlab Language33 2.2.2、创建一维数组变量、创建一维数组变量n第一种方法:使用方括号第一种方法:使用方括号“”操作符操作符【例例2-1】创建数组创建数组(行向量行向量)a=13pi3+5ia=13pi3+5*i%ora=1,3,pi,3+5*ia=1.00003.00003.14163.0000+5.0000i所有的向量元素必须在操作符所有的向量元素必须在操作符“”之内

33、;之内;向量元素间用向量元素间用空格空格或英文的或英文的逗点逗点“,”分开。分开。n第二种方法:使用冒号第二种方法:使用冒号“:”操作符操作符【例例2-2】创建以创建以110顺序排列整数为元素的顺序排列整数为元素的行向量行向量b。b=1:10b=12345678910 2024/7/31Application of Matlab Language34 2.2.2、创建一维数组变量、创建一维数组变量(续)(续)【例例2-3】键入并执行键入并执行c=1:2:10和和d=1:2:9c=1:2:10c=13579d=1:2:9d=13579利用冒号利用冒号“:”操作符创建行向量的基本语法操作符创建行向

34、量的基本语法格式:格式:x=Start:Increment:EndnStart表示新向量表示新向量x的第一个元素;的第一个元素;n新向量新向量x的最后一个元素不能大于的最后一个元素不能大于End;nIncrement可正可负,若负,则必须可正可负,若负,则必须StartEnd;若正,则必须若正,则必须Starta=123;b=234;c=a;b;c1=ab;n第二种方法:函数方法第二种方法:函数方法函数函数ones(生成全生成全1矩阵矩阵)、zeros(生成全生成全0矩阵矩阵)、reshapeF“helpelmat”获得基本的矩阵生成和操作函数列表获得基本的矩阵生成和操作函数列表【例例3-4】

35、创建全创建全1的的3x3数组。数组。ones(3)【例例3-5】创建全创建全1的的3x4数组。数组。ones(3,4) 2024/7/31Application of Matlab Language40 2.2.3、创建二维数组变量、创建二维数组变量(续)(续)【例例3-5】reshape的使用演示的使用演示a=-4:4a=-4-3-2-101234b=reshape(a,3,3)b=-4-12-303-214F数组元素的排列顺序,数组元素的排列顺序,从上到下按列排列从上到下按列排列,先排第一列,然后第二列,先排第一列,然后第二列,F要求数组的要求数组的元素总数不变元素总数不变。 2024/7

36、/31Application of Matlab Language41 4 4、数组元素的标识与寻访、数组元素的标识与寻访n数组元素的标识数组元素的标识n“全下标(全下标(index)”标识标识经典数学教科书采用经典数学教科书采用“全下标全下标”标识法:标识法:每一维每一维对应一个下标。对应一个下标。如对于二维数组,用如对于二维数组,用“行下标和列下标行下标和列下标”标识数组标识数组的元素,的元素,a(2,3)就表示二维数组就表示二维数组a的的“第第2行第行第3列列”的的元素。元素。对于一维数组,用一个下标即可,对于一维数组,用一个下标即可,b(2)表示一维数组表示一维数组b的第的第2个元素,

37、无论个元素,无论b是行向量还是列向量。是行向量还是列向量。n“单下标单下标”(linearindex)标识)标识所谓所谓“单下标单下标”标识就是用一个下标来表明元素标识就是用一个下标来表明元素在数组的位置。在数组的位置。对于二维数组,对于二维数组,“单下标单下标”编号:设想把二维数组编号:设想把二维数组的所有的所有列列,按先后顺序首尾相接排成,按先后顺序首尾相接排成“一维长列一维长列”,然后自上往下对元素位置执行编号。,然后自上往下对元素位置执行编号。n两种两种“下标下标”标识的变换标识的变换:sub2ind、ind2sub 2024/7/31Application of Matlab Lan

38、guage42 4、数组元素的标识与寻访、数组元素的标识与寻访(续)(续)【例例4-1】单下标的使用单下标的使用a=zeros(2,5);a(:)=-4:5a=-4-2024-3-1135%注意数组的排列顺序。注意数组的排列顺序。 2024/7/31Application of Matlab Language43 4 4、数组元素的标识与寻访、数组元素的标识与寻访 (续)(续)n元素与子数组的寻访与赋值元素与子数组的寻访与赋值【例例4-3】一维数组元素与子数组的寻访与赋一维数组元素与子数组的寻访与赋值值a=linspace(1,10,5)a=1.00003.25005.50007.750010

39、.0000a(3)%寻访寻访a的第的第3个元素个元素ans=5.5000a(125)%寻访寻访a的第的第1、2、5个元素组成的子个元素组成的子数组数组ans=1.00003.250010.0000 2024/7/31Application of Matlab Language44 4 4、数组元素的标识与寻访、数组元素的标识与寻访 (续)(续)a(3)=0%修改数组修改数组a的第的第3元素值为元素值为0a=1.00003.250007.750010.0000a(25)=11a=1.00001.000007.75001.0000可以修改指定数组元素的值可以修改指定数组元素的值一次可以修改多个数组

40、元素的值一次可以修改多个数组元素的值要修改的数组元素的个数应与送入数组的元要修改的数组元素的个数应与送入数组的元素个数相同素个数相同 2024/7/31Application of Matlab Language45 4、数组元素的标识与寻访、数组元素的标识与寻访(续)(续)【例例4-3】二维数组元素与子数组的寻访与赋二维数组元素与子数组的寻访与赋值值a_2=zeros(2,4)%创建创建2x4的全的全0数组数组a_2=00000000a_2(:)=1:8a_2=13572468a_2(258)%单下标方式寻访多个元素单下标方式寻访多个元素ans=258%注意元素的排列顺序注意元素的排列顺序

41、2024/7/31Application of Matlab Language46 4、数组元素的标识与寻访、数组元素的标识与寻访(续)(续)a_2(258)=102030a_2=13207104630a_2(:,23)=ones(2)%双下标方式寻访并修改双下标方式寻访并修改a_2=1117101130%二维数组可以二维数组可以“单下标单下标”方式或方式或“全下标全下标”方式方式访问、赋值;访问、赋值;%“单下标单下标”方式赋值时,方式赋值时,等号两边涉及的元素个等号两边涉及的元素个数必须相等;数必须相等;%“全下标全下标”方式赋值时,方式赋值时,等号右边数组的大小必等号右边数组的大小必须等

42、于原数组中涉及元素构成的子数组的大小。须等于原数组中涉及元素构成的子数组的大小。 2024/7/31Application of Matlab Language47 4、数组元素的标识与寻访、数组元素的标识与寻访(续)(续)a_2(:,end)ans=730a_2(:,end-1)ans=11a_2(:,end:-1:3)ans=71301a_2(end,:)ans=101130a_2(end,2:4)ans=1130a_2(46)=6:7a_2=1117106730a_2(end,2:end-1)Whatistheresult? 2024/7/31Application of Matlab

43、Language48 4、数组元素的标识与寻访、数组元素的标识与寻访(续)(续)【例例4-4】size、length函数函数a=ones(4,6)*6m=size(a)len=length(a)b=1:5;length(b)c=blength(c) size函数返回变量的大小,即函数返回变量的大小,即变量数组的行列数变量数组的行列数length函数返回变量数组的最函数返回变量数组的最大维数大维数Matlab语言及其应用语言及其应用第第3讲讲 2024/7/31Application of Matlab Language50 5、多多维数组维数组n多维数组的定义多维数组的定义在在MATLAB的的

44、数据类型数据类型中,向量中,向量可视为一维可视为一维数组,数组,矩阵可视为矩阵可视为二二维数组维数组,对于维数对于维数(Dimensions)超过超过2的的数组均可视为数组均可视为多维数组多维数组(MultidimesionalArrays,简称简称N-DArrays)。 2024/7/31Application of Matlab Language51 5、多多维数组维数组(续)(续)n三维数组三维数组,可,可对应对应至一至一个个X-Y-Z三三维立体坐标维立体坐标,如下,如下图所示图所示:Z(页页)Y(列列)X(行行) 2024/7/31Application of Matlab Langu

45、age52 5 5、多多维数组维数组 (续)(续)n三维数组元素的寻址:三维数组元素的寻址:可以可以(行、列、页行、列、页)来确来确定定。n以以维数为维数为342的的三维数组为例三维数组为例,其,其寻址寻址方方式如下式如下图所示图所示:n数组数组A是是三维数组三维数组,其中,其中A(:,:,1)代表第一代表第一页页的的二维数组二维数组,A(:,:,2)代表第代表第二页二页的的二维二维数组数组。 2024/7/31Application of Matlab Language53 6、数组的算术运算、数组的算术运算nMATLAB数组支持线性代数中所有的矩阵数组支持线性代数中所有的矩阵运算。运算。n

46、建立特有的数组运算符,如:建立特有的数组运算符,如:“.*”、“./”等。等。 MATLAB数组运算符列表数组运算符列表运算运算运算符运算符含义说含义说明明加加+相应元素相加相应元素相加减减-相应元素相减相应元素相减乘乘*矩阵乘法矩阵乘法点乘点乘.*相应元素相乘相应元素相乘幂幂 矩阵幂运算矩阵幂运算点幂点幂.相应元素进行相应元素进行幂运算幂运算左除或右除左除或右除或或/矩阵左除或右矩阵左除或右除除左点除或右点除左点除或右点除.或或./A的元素被的元素被B的的对应元素除对应元素除 2024/7/31Application of Matlab Language54 6、算术运算、算术运算(续)(续

47、) 【例例5-1】数组加减法数组加减法a=zeros(2,3);a(:)=1:6;b=a+2.5b=3.50005.50007.50004.50006.50008.5000c=b-ac=2.50002.50002.50002.50002.50002.5000 2024/7/31Application of Matlab Language55 6、算术运算、算术运算(续)(续)【例例5-2】点幂点幂“.”举例举例a=1:6a=123456b=reshape(a,2,3)b=135246a=a.2a=149162536b=b.2b=192541636 2024/7/31Application of

48、 Matlab Language56 7、关系运算、关系运算 Matlab提供了提供了6种关系运算符:种关系运算符:、=、=、=(不等于)(不等于)关系运算符的运算法则:关系运算符的运算法则:1、当两个标量进行比较时,直接比较两数大小。若关系成立,、当两个标量进行比较时,直接比较两数大小。若关系成立,结果为结果为1,否则为,否则为0。2、当两个维数相等的矩阵进行比较时,其相应位置的元素按、当两个维数相等的矩阵进行比较时,其相应位置的元素按标量关系进行比较,并给出结果,形成一个维数与原来相同标量关系进行比较,并给出结果,形成一个维数与原来相同的的0、1矩阵。矩阵。3、当一个标量与一个矩阵比较时,

49、该标量与矩阵的各元素进行、当一个标量与一个矩阵比较时,该标量与矩阵的各元素进行比较,结果形成一个与矩阵维数相等的比较,结果形成一个与矩阵维数相等的0、1矩阵。矩阵。 2024/7/31Application of Matlab Language57 7、关系运算、关系运算(续)(续)【例例】建立建立5阶方阵阶方阵A,判断其元素能否被,判断其元素能否被3整除。整除。A=24,35,13,22,63;23,39,47,80,80;.90,41,80,29,10;45,57,85,62,21;37,19,31,88,76A=24351322632339478080904180291045578562

50、213719318876P=rem(A,3)=0%被被3除,求余除,求余P=1000101000100001100100000 2024/7/31Application of Matlab Language58 8、逻辑运算、逻辑运算 Matlab提供了提供了3种逻辑运算符:种逻辑运算符:&(与)、(与)、|(或)、(或)、(非)(非)逻辑运算符的运算法则:逻辑运算符的运算法则:1、在逻辑运算中,确认非零元素为真(、在逻辑运算中,确认非零元素为真(1),零元素为假(),零元素为假(0)。)。2、当两个维数相等的矩阵进行比较时,其相应位置的元素按、当两个维数相等的矩阵进行比较时,其相应位置的元素

51、按标量关系进行比较,并给出结果,形成一个维数与原来相同标量关系进行比较,并给出结果,形成一个维数与原来相同的的0、1矩阵;矩阵;3、当一个标量与一个矩阵比较时,该标量与矩阵的各元素进行、当一个标量与一个矩阵比较时,该标量与矩阵的各元素进行比较,结果形成一个与矩阵维数相等的比较,结果形成一个与矩阵维数相等的0、1矩阵;矩阵;4、算术运算优先级最高,逻辑运算优先级最低。、算术运算优先级最高,逻辑运算优先级最低。 2024/7/31Application of Matlab Language59 【例例】在在0,3区间,求区间,求的值。要求的值。要求消去负半波,即消去负半波,即(,2)区间内的函数值

52、置零。区间内的函数值置零。x=0:pi/100:3*pi;y=sin(x);y1=(y=0).*y;%消去负半波消去负半波 2024/7/31Application of Matlab Language60 【例例】建立矩阵建立矩阵A,找出在,找出在10,20区间的元素的位置。区间的元素的位置。A=4,15,-45,10,6;56,0,17,-45,0;find(A=10&Ax=-43,72,9,16,23,47;y=max(x)%求向量求向量x中的最大值中的最大值y=72y,l=max(x)%求向量求向量x中的最大值及其该元素的位置中的最大值及其该元素的位置y=72l=2 2024/7/31

53、Application of Matlab Language63 9.数据分析与统计数据分析与统计2.求矩阵的最大值和最小值求矩阵的最大值和最小值求矩阵求矩阵A的最大值的函数有的最大值的函数有3种调用格式,分别是:种调用格式,分别是:(1)max(A):返回一个行向量,向量的第返回一个行向量,向量的第i个元素个元素是矩阵是矩阵A的第的第i列上的最大值;列上的最大值;(2)Y,U=max(A):返回行向量返回行向量Y和和U,Y向量记向量记录录A的每列的最大值,的每列的最大值,U向量记录每列最大值向量记录每列最大值的行号;的行号;(3)max(A,dim):dim取取1或或2。dim取取1时,该函

54、时,该函数和数和max(A)完全相同;完全相同;dim取取2时,该函数返时,该函数返回一个列向量,其第回一个列向量,其第i个元素是个元素是A矩阵的第矩阵的第i行行上的最大值。上的最大值。求最小值的函数是求最小值的函数是min,其用法和,其用法和max完全相同。完全相同。 2024/7/31Application of Matlab Language64 【例例7-2】求矩阵的最大值求矩阵的最大值x=-43,72,9;16,23,47;y=max(x)%求矩阵求矩阵x中每列的最大值中每列的最大值y=167247y,l=max(x)%求矩阵求矩阵x中每列的最大值及其该元素的位置中每列的最大值及其该

55、元素的位置y=167247l=212max(x,1),max(x,2)%求矩阵中每行的最大值求矩阵中每行的最大值 2024/7/31Application of Matlab Language65 9.数据分析与统计数据分析与统计n求和与求积求和与求积sum(X):返回向量返回向量X各元素的和。各元素的和。prod(X):返回向量返回向量X各元素的乘积。各元素的乘积。sum(A):返回一个行向量,其第返回一个行向量,其第i个元素是个元素是A的第的第i列的元列的元素和。素和。prod(A):返回一个行向量,其第返回一个行向量,其第i个元素是个元素是A的第的第i列的元列的元素乘积。素乘积。sum(

56、A,dim):当当dim为为1时,该函数等同于时,该函数等同于sum(A);当;当dim为为2时,返回一个列向量,其第时,返回一个列向量,其第i个元素是个元素是A的第的第i行的各元素之和。行的各元素之和。prod(A,dim):当当dim为为1时,该函数等同于时,该函数等同于prod(A);当;当dim为为2时,返回一个列向量,其第时,返回一个列向量,其第i个元素是个元素是A的第的第i行的各元素乘积。行的各元素乘积。 2024/7/31Application of Matlab Language66 9.数据分析与统计数据分析与统计n平均值与中值平均值与中值求数据序列平均值的函数是求数据序列平

57、均值的函数是mean,求数据序列中值的函数是,求数据序列中值的函数是median。两个函数的调用格式为:。两个函数的调用格式为:mean(X):返回向量:返回向量X的算术平均值。的算术平均值。median(X):返回向量:返回向量X的中值。的中值。mean(A):返回一个行向量,其第:返回一个行向量,其第i个元素是个元素是A的第的第i列的列的算术平均值。算术平均值。median(A):返回一个行向量,其第:返回一个行向量,其第i个元素是个元素是A的第的第i列的列的中值。中值。mean(A,dim):当:当dim为为1时,该函数等同于时,该函数等同于mean(A);当;当dim为为2时,返回一个

58、列向量,其第时,返回一个列向量,其第i个元素是个元素是A的第的第i行的算术平均值。行的算术平均值。median(A,dim):当:当dim为为1时,该函数等同于时,该函数等同于median(A);当;当dim为为2时,返回一个列向量,其第时,返回一个列向量,其第i个元素是个元素是A的第的第i行的中值。行的中值。Matlab语言及其应用语言及其应用第第4讲讲 2024/7/31Application of Matlab Language68 4、数组元素的标识与寻访、数组元素的标识与寻访(续)(续)【例例4-4】size、length函数函数a=ones(4,6)*6m=size(a)len=l

59、ength(a)b=1:5;length(b)c=blength(c) size函数返回变量的大小,即函数返回变量的大小,即变量数组的行列数变量数组的行列数length函数返回变量数组的最函数返回变量数组的最大维数大维数 2024/7/31Application of Matlab Language69 5、多多维数组维数组(续)(续)n三维数组三维数组,可,可对应对应至一至一个个X-Y-Z三三维立体坐标维立体坐标,如下,如下图所示图所示:Z(页页)Y(列列)X(行行) 2024/7/31Application of Matlab Language70 5 5、多多维数组维数组 (续)(续)n

60、三维数组元素的寻址:三维数组元素的寻址:可以可以(行、列、页行、列、页)来确来确定定。n以以维数为维数为342的的三维数组为例三维数组为例,其,其寻址寻址方方式如下式如下图所示图所示:n数组数组A是是三维数组三维数组,其中,其中A(:,:,1)代表第一代表第一页页的的二维数组二维数组,A(:,:,2)代表第代表第二页二页的的二维二维数组数组。 2024/7/31Application of Matlab Language71 6、数组的算术运算、数组的算术运算nMATLAB数组支持线性代数中所有的矩阵数组支持线性代数中所有的矩阵运算。运算。n建立特有的数组运算符,如:建立特有的数组运算符,如:

61、“.*”、“./”等。等。 MATLAB数组运算符列表数组运算符列表运算运算运算符运算符含义说含义说明明加加+相应元素相加相应元素相加减减-相应元素相减相应元素相减乘乘*矩阵乘法矩阵乘法点乘点乘.*相应元素相乘相应元素相乘幂幂 矩阵幂运算矩阵幂运算点幂点幂.相应元素进行相应元素进行幂运算幂运算左除或右除左除或右除或或/矩阵左除或右矩阵左除或右除除左点除或右点除左点除或右点除.或或./A的元素被的元素被B的的对应元素除对应元素除 2024/7/31Application of Matlab Language72 6、算术运算、算术运算(续)(续) 【例例5-1】数组加减法数组加减法a=zeros

62、(2,3);a(:)=1:6;b=a+2.5b=3.50005.50007.50004.50006.50008.5000c=b-ac=2.50002.50002.50002.50002.50002.5000 2024/7/31Application of Matlab Language73 6、算术运算、算术运算(续)(续)【例例5-2】点幂点幂“.”举例举例a=1:6a=123456b=reshape(a,2,3)b=135246a=a.2a=149162536b=b.2b=192541636 2024/7/31Application of Matlab Language74 7、关系运算、

63、关系运算 Matlab提供了提供了6种关系运算符:种关系运算符:、=、=、=(不等于)(不等于)关系运算符的运算法则:关系运算符的运算法则:1、当两个标量进行比较时,直接比较两数大小。若关系成立,、当两个标量进行比较时,直接比较两数大小。若关系成立,结果为结果为1,否则为,否则为0。2、当两个维数相等的矩阵进行比较时,其相应位置的元素按、当两个维数相等的矩阵进行比较时,其相应位置的元素按标量关系进行比较,并给出结果,形成一个维数与原来相同标量关系进行比较,并给出结果,形成一个维数与原来相同的的0、1矩阵。矩阵。3、当一个标量与一个矩阵比较时,该标量与矩阵的各元素进行、当一个标量与一个矩阵比较时

64、,该标量与矩阵的各元素进行比较,结果形成一个与矩阵维数相等的比较,结果形成一个与矩阵维数相等的0、1矩阵。矩阵。 2024/7/31Application of Matlab Language75 7、关系运算、关系运算(续)(续)【例例】建立建立5阶方阵阶方阵A,判断其元素能否被,判断其元素能否被3整除。整除。A=24,35,13,22,63;23,39,47,80,80;.90,41,80,29,10;45,57,85,62,21;37,19,31,88,76A=24351322632339478080904180291045578562213719318876P=rem(A,3)=0%被

65、被3除,求余除,求余P=1000101000100001100100000 2024/7/31Application of Matlab Language76 8、逻辑运算、逻辑运算 Matlab提供了提供了3种逻辑运算符:种逻辑运算符:&(与)、(与)、|(或)、(或)、(非)(非)逻辑运算符的运算法则:逻辑运算符的运算法则:1、在逻辑运算中,确认非零元素为真(、在逻辑运算中,确认非零元素为真(1),零元素为假(),零元素为假(0)。)。2、当两个维数相等的矩阵进行比较时,其相应位置的元素按、当两个维数相等的矩阵进行比较时,其相应位置的元素按标量关系进行比较,并给出结果,形成一个维数与原来相

66、同标量关系进行比较,并给出结果,形成一个维数与原来相同的的0、1矩阵;矩阵;3、当一个标量与一个矩阵比较时,该标量与矩阵的各元素进行、当一个标量与一个矩阵比较时,该标量与矩阵的各元素进行比较,结果形成一个与矩阵维数相等的比较,结果形成一个与矩阵维数相等的0、1矩阵;矩阵;4、算术运算优先级最高,逻辑运算优先级最低。、算术运算优先级最高,逻辑运算优先级最低。 2024/7/31Application of Matlab Language77 【例例】在在0,3区间,求区间,求的值。要求的值。要求消去负半波,即消去负半波,即(,2)区间内的函数值置零。区间内的函数值置零。x=0:pi/100:3*

67、pi;y=sin(x);y1=(y=0).*y;%消去负半波消去负半波 2024/7/31Application of Matlab Language78 【例例】建立矩阵建立矩阵A,找出在,找出在10,20区间的元素的位置。区间的元素的位置。A=4,15,-45,10,6;56,0,17,-45,0;find(A=10&Ax=-43,72,9,16,23,47;y=max(x)%求向量求向量x中的最大值中的最大值y=72y,l=max(x)%求向量求向量x中的最大值及其该元素的位置中的最大值及其该元素的位置y=72l=2 2024/7/31Application of Matlab Lang

68、uage81 9.数据分析与统计数据分析与统计2.求矩阵的最大值和最小值求矩阵的最大值和最小值求矩阵求矩阵A的最大值的函数有的最大值的函数有3种调用格式,分别是:种调用格式,分别是:(1)max(A):返回一个行向量,向量的第返回一个行向量,向量的第i个元素个元素是矩阵是矩阵A的第的第i列上的最大值;列上的最大值;(2)Y,U=max(A):返回行向量返回行向量Y和和U,Y向量记向量记录录A的每列的最大值,的每列的最大值,U向量记录每列最大值向量记录每列最大值的行号;的行号;(3)max(A,dim):dim取取1或或2。dim取取1时,该函时,该函数和数和max(A)完全相同;完全相同;di

69、m取取2时,该函数返时,该函数返回一个列向量,其第回一个列向量,其第i个元素是个元素是A矩阵的第矩阵的第i行行上的最大值。上的最大值。求最小值的函数是求最小值的函数是min,其用法和,其用法和max完全相同。完全相同。 2024/7/31Application of Matlab Language82 【例例7-2】求矩阵的最大值求矩阵的最大值x=-43,72,9;16,23,47;y=max(x)%求矩阵求矩阵x中每列的最大值中每列的最大值y=167247y,l=max(x)%求矩阵求矩阵x中每列的最大值及其该元素的位置中每列的最大值及其该元素的位置y=167247l=212max(x,1)

70、,max(x,2)%求矩阵中每行的最大值求矩阵中每行的最大值 2024/7/31Application of Matlab Language83 9.数据分析与统计数据分析与统计n求和与求积求和与求积sum(X):返回向量返回向量X各元素的和。各元素的和。prod(X):返回向量返回向量X各元素的乘积。各元素的乘积。sum(A):返回一个行向量,其第返回一个行向量,其第i个元素是个元素是A的第的第i列的元列的元素和。素和。prod(A):返回一个行向量,其第返回一个行向量,其第i个元素是个元素是A的第的第i列的元列的元素乘积。素乘积。sum(A,dim):当当dim为为1时,该函数等同于时,该

71、函数等同于sum(A);当;当dim为为2时,返回一个列向量,其第时,返回一个列向量,其第i个元素是个元素是A的第的第i行的各元素之和。行的各元素之和。prod(A,dim):当当dim为为1时,该函数等同于时,该函数等同于prod(A);当;当dim为为2时,返回一个列向量,其第时,返回一个列向量,其第i个元素是个元素是A的第的第i行的各元素乘积。行的各元素乘积。 2024/7/31Application of Matlab Language84 9.数据分析与统计数据分析与统计n平均值与中值平均值与中值求数据序列平均值的函数是求数据序列平均值的函数是mean,求数据序列中值的函数是,求数据

72、序列中值的函数是median。两个函数的调用格式为:。两个函数的调用格式为:mean(X):返回向量:返回向量X的算术平均值。的算术平均值。median(X):返回向量:返回向量X的中值。的中值。mean(A):返回一个行向量,其第:返回一个行向量,其第i个元素是个元素是A的第的第i列的列的算术平均值。算术平均值。median(A):返回一个行向量,其第:返回一个行向量,其第i个元素是个元素是A的第的第i列的列的中值。中值。mean(A,dim):当:当dim为为1时,该函数等同于时,该函数等同于mean(A);当;当dim为为2时,返回一个列向量,其第时,返回一个列向量,其第i个元素是个元素

73、是A的第的第i行的算术平均值。行的算术平均值。median(A,dim):当:当dim为为1时,该函数等同于时,该函数等同于median(A);当;当dim为为2时,返回一个列向量,其第时,返回一个列向量,其第i个元素是个元素是A的第的第i行的中值。行的中值。数据和函数的可视化数据和函数的可视化第第6讲讲 2024/7/31Application of Matlab Language86 3.1二维曲线绘图的基本操作二维曲线绘图的基本操作nplot指令的基本调用格式指令的基本调用格式(1)plot(x)nx为向量时,以该元素的下标为横坐标、元素值为纵坐标绘出曲线为向量时,以该元素的下标为横坐标

74、、元素值为纵坐标绘出曲线nx为实数二维数组时,则按列绘制每列元素值相对其下标的曲线,曲线为实数二维数组时,则按列绘制每列元素值相对其下标的曲线,曲线数等于数等于x数组的列数。数组的列数。nx为复数二维数组时,则按列分别以数组的实部和虚部为横、纵坐标绘为复数二维数组时,则按列分别以数组的实部和虚部为横、纵坐标绘制多条曲线制多条曲线(2)plot(x,y)nx、y为同维数组时,绘制以为同维数组时,绘制以x、y元素为横纵坐标的曲线元素为横纵坐标的曲线nx为向量,为向量,y为二维数组、且其列数或行数等于为二维数组、且其列数或行数等于x的元素数时,绘制多条的元素数时,绘制多条不同颜色的曲线不同颜色的曲线

75、nx为二维数组,为二维数组,y为向量时,情况与上相同,只是为向量时,情况与上相同,只是y仍为纵坐标。仍为纵坐标。(3)plot(x1,y1,x2,y2,)n绘制以绘制以x1为横坐标、为横坐标、y1为纵坐标的曲线为纵坐标的曲线1,以,以x2为横坐标、为横坐标、y2为纵坐标为纵坐标的曲线的曲线2,等等。,等等。n其中其中x为横坐标,为横坐标,y为纵坐标,绘制为纵坐标,绘制y=f(x)函数曲线。函数曲线。 2024/7/31Application of Matlab Language87 例例3.1使用直角坐标系使用直角坐标系在在0,2区间内,绘制曲线区间内,绘制曲线x=0:pi/100:2*pi;

76、y=2*exp(-0.5*x).*sin(2*pi*x);plot(x,y) 2024/7/31Application of Matlab Language88 例例3.2使用参数方程绘制曲线使用参数方程绘制曲线绘制曲线绘制曲线t=-pi:pi/100:pi;x=t.*cos(3*t);y=t.*sin(t).2;plot(x,y) 2024/7/31Application of Matlab Language89 例例3.3 绘制复杂曲线绘制复杂曲线用图形表示连续调制波形用图形表示连续调制波形及其包络线。及其包络线。t=(0:pi/100:pi);%长度为长度为101的时间采样列向量的时间采

77、样列向量y1=sin(t)*1,-1;%包络线函数值,是(包络线函数值,是(101x2)的)的矩阵矩阵y2=sin(t).*sin(9*t);%长度为长度为101的调制波列向量的调制波列向量t3=pi*(0:9)/9;y3=sin(t3).*sin(9*t3);plot(t,y1,r:,t,y2,b,t3,y3,bo)axis(0,pi,-1,1)%控制轴的范围控制轴的范围 2024/7/31Application of Matlab Language90 多次叠绘、双纵坐标和多子图多次叠绘、双纵坐标和多子图n多次叠绘多次叠绘n多次调用多次调用plot命令命令在一幅图上在一幅图上绘制多条曲线,

78、需绘制多条曲线,需要要hold指令的配合。指令的配合。nholdon保持当前坐标轴和图形,并可以接受下保持当前坐标轴和图形,并可以接受下一次绘制。一次绘制。nholdoff取消当前坐标轴和图形保持,这种状态取消当前坐标轴和图形保持,这种状态下,调用下,调用plot绘制完全新的图形,不保留以前的绘制完全新的图形,不保留以前的坐标格式、曲线。坐标格式、曲线。 2024/7/31Application of Matlab Language91 例例3.5重绘曲线重绘曲线重绘波形重绘波形及其包络线。及其包络线。t=(0:pi/100:pi);%长度为长度为101的时间采样列向量的时间采样列向量y1=s

79、in(t)*1,-1;%包络线函数值,是(包络线函数值,是(101x2)的矩阵)的矩阵y2=sin(t).*sin(9*t);%长度为长度为101的调制波列向量的调制波列向量t3=pi*(0:9)/9;y3=sin(t3).*sin(9*t3);plot(t,y1,r:)holdonplot(t,y2,b)plot(t3,y3,bo)axis(0,pi,-1,1)%控制轴的范围控制轴的范围holdoff 2024/7/31Application of Matlab Language92 例例3.6利用利用hold绘制离散信号的波形。绘制离散信号的波形。t=2*pi*(0:20)/20;y=co

80、s(t).*exp(-0.4*t);stem(t,y,g);holdon;stairs(t,y,r);holdoff 2024/7/31Application of Matlab Language93 双纵坐标:双纵坐标:plotyy指令指令nplotyy指令调用格式:指令调用格式:plotyy(x1,y1,x2,y2)x1-y1曲线曲线y轴在左,轴在左,x2-y2曲线曲线y轴在右。轴在右。例例3.7:x=0:0.01:20;y1=200*exp(-0.05*x).*sin(x);y2=0.8*exp(-0.5*x).*sin(10*x);plotyy(x,y1,x,y2); 2024/7/3

81、1Application of Matlab Language94 多子图多子图 nMATLAB允许在同一图形窗口布置几幅独立的子图。具体允许在同一图形窗口布置几幅独立的子图。具体指令:指令:nsubplot(m,n,k)使(使(mxn)幅子图中第)幅子图中第k个子图成为当前图个子图成为当前图nsubplot(postion,left,bottom,width,height)在指定的位置上开辟子图,并成为当前图在指定的位置上开辟子图,并成为当前图说明:说明:subplot(m,n,k)的含义的含义:图形窗口包含(:图形窗口包含(mxn)个子图,)个子图,k为要指定为要指定的当前子图的编号。的当

82、前子图的编号。其编号原则:其编号原则:左上方为第左上方为第1子图,然后向右向子图,然后向右向下依次排序。该指令按缺省值分割子图区域。下依次排序。该指令按缺省值分割子图区域。subplot(postion,left,bottom,width,height)用于手工指定子图位用于手工指定子图位置置,指定位置的四元组采用归一化的标称单位,即认为整个图形窗,指定位置的四元组采用归一化的标称单位,即认为整个图形窗口绘图区域的高、宽的取值范围都是口绘图区域的高、宽的取值范围都是0,1,而左下角为(,而左下角为(0,0)坐)坐标。标。产生的子图彼此独立。所有的绘图指令均可以在子图中使用。产生的子图彼此独立。

83、所有的绘图指令均可以在子图中使用。 2024/7/31Application of Matlab Language95 例例3.8演示演示subplot指令对图形窗的分指令对图形窗的分割割t=(pi*(0:1000)/1000);y1=sin(t);y2=sin(10*t);y12=sin(t).*sin(10*t);subplot(2,2,1),plot(t,y1);axis(0,pi,-1,1)subplot(2,2,2),plot(t,y2);axis(0,pi,-1,1)subplot(position,0.2,0.05,0.6,0.45)plot(t,y12,b-,t,y1,-y1,

84、r:); 2024/7/31Application of Matlab Language96 绘制图形的辅助操作绘制图形的辅助操作 曲线线形控制符曲线线形控制符 曲线颜色控制符曲线颜色控制符 符号 - : -.-含义 实线 虚线 点划线 双划线 符号 b g rcmykw含义兰绿红青品红黄黑白 2024/7/31Application of Matlab Language97 曲线的色彩、线型和曲线的色彩、线型和 数据点形数据点形曲线的曲线的线形控制符、颜色控制符、数据点形控制符线形控制符、颜色控制符、数据点形控制符可以组可以组合使用合使用其先后次序不影响绘图结果其先后次序不影响绘图结果也可以

85、单独使用。也可以单独使用。 2024/7/31Application of Matlab Language98 例例3.9绘制图形的辅助操作绘制图形的辅助操作Specify Line propertiest=(0:15)*2*pi/15;y=sin(t);subplot(3,2,1),plot(t,y);title(Linsstyleisdefault)subplot(3,2,2),plot(t,y,o);title(Linsstyleiso)subplot(3,2,3),plot(t,y,k:);title(Linsstyleisk:)subplot(3,2,4),plot(t,y,k:*)

86、;title(Linsstyleisk:*)subplot(3,2,5),plot(t,y,m-d);title(Linsstyleism-d)subplot(3,2,6),plot(t,y,r-p);title(Linsstyleisr-p) 2024/7/31Application of Matlab Language99 2024/7/31Application of Matlab Language100 坐标、刻度和分格线控制坐标、刻度和分格线控制 2024/7/31Application of Matlab Language101 例例3.10坐标控制坐标控制绘制椭圆,长轴为绘制椭圆

87、,长轴为3.25,短轴为,短轴为1.15t=0:2*pi/99:2*pi;x=1.15*cos(t);y=3.25*sin(t);%y为长轴,为长轴,x为短轴为短轴subplot(2,2,1);plot(x,y);axisofftitle(axisoff);subplot(2,2,2);plot(x,y);axisimage;title(axisimage);subplot(2,2,3);plot(x,y);axisequal;title(axisEqual);subplot(2,2,4);plot(x,y);axissquare;title(axisSquare); 2024/7/31App

88、lication of Matlab Language102 2024/7/31Application of Matlab Language103 刻度、分格线和坐标框刻度、分格线和坐标框 n分格线与分格线与grid指令指令ngridon画出分格线画出分格线ngridoff不画分格线不画分格线nMATLAB的的缺省设置是不画分格线;缺省设置是不画分格线;分格线的疏密取决于分格线的疏密取决于坐标刻度(改变坐标刻度,可改变分格线的疏密)。坐标刻度(改变坐标刻度,可改变分格线的疏密)。n坐标框坐标框nboxon控制加边框线控制加边框线nboxoff 控制不加边框线控制不加边框线n刻度设置刻度设置n指

89、令及格式:指令及格式:set(gca,xtick,xs,ytick,ys)nxs、ys可以使任何合法的实数向量,用于分别设置可以使任何合法的实数向量,用于分别设置x、y轴的轴的刻度。刻度。 2024/7/31Application of Matlab Language104 例例3.11绘制绘制y=1-exp(-0.3*t).*cos(0.7*t) t=6*pi*(0:100)/100;y=1-exp(-0.3*t).*cos(0.7*t);tt=t(find(abs(y-1)0.05);ts=max(tt);plot(t,y,r-);gridon;axis(0,6*pi,0.6,max(y)

90、;title(y=1-exp(-alpha*t)*cos(omega*t);holdon;plot(ts,0.95,bo);holdoff;set(gca,xtick,2*pi,4*pi,6*pi,ytick,0.95,1,1.05,max(y);gridon; 2024/7/31Application of Matlab Language105 数据和函数的可视化数据和函数的可视化第第7讲讲 2024/7/31Application of Matlab Language107 图形标识图形标识 n图形标识包括:图形标识包括:n图名(图名(title)n坐标轴名(坐标轴名(xlabel、yla

91、bel)n图形文本注释(图形文本注释(text)n图例(图例(legend)n简捷使用格式简捷使用格式ntitle(s)%s为字符串变量或常量为字符串变量或常量nxlabel(s)nylabel(s)nlegend(s)ntext(x,y,s)%指定坐标(指定坐标(x,y)处加注文字)处加注文字 2024/7/31Application of Matlab Language108 图形标识图形标识(续)(续)n精细指令形式精细指令形式n字体样式设置:字体样式设置:fontnameargargfontsizeargstring其中,其中,String为要输出的字符串,其前面的均为为要输出的字符串

92、,其前面的均为属性属性控制控制,使用方法见下表。,使用方法见下表。 2024/7/31Application of Matlab Language109 图形标识图形标识(续)(续) 2024/7/31Application of Matlab Language110 例例3.12在正弦曲线上标注特殊值在正弦曲线上标注特殊值t=(0:100)/100*2*pi;y=sin(t);plot(t,y)text(3*pi/4,sin(3*pi/4),fontsize16leftarrowsin(t)=.707)text(pi,sin(pi),fontsize16leftarrowsin(t)=0)t

93、ext(5*pi/4,sin(5*pi/4),fontsize16sin(t)=-.707rightarrow,.HorizontalAlignment,right)其中,其中,HorizontalAlignment,right设置图形标设置图形标识为水平右对齐识为水平右对齐 2024/7/31Application of Matlab Language111 例例3.13t=0:900;plot(t,0.25*exp(-0.005*t)title(fontsize16itAealphat);text(300,.25*exp(-0.005*300),.fontsize14leftarrow0.

94、25ite-0.005ittatitt=300); 2024/7/31Application of Matlab Language112 2.特殊图形特殊图形n直方图直方图(柱形图柱形图)barn垂直直方图垂直直方图累计式累计式分组式分组式n水平直方图水平直方图累计式累计式分组式分组式 2024/7/31Application of Matlab Language113 例例3.15x=-2.9:0.2:2.9;bar(x,exp(-x.*x),r) 2024/7/31Application of Matlab Language114 例例3.16n北京市从业人员统计北京市从业人员统计1990

95、年年1995年年2000年年第一产业第一产业90.770.673.9(万(万人)人)第二产业第二产业281.6271214.6第三产业第三产业254.8323.7326.5执行以下语句:执行以下语句:year=199019952000;people=90.7281.6254.8;70.6271323.7;73.9214.6326.5;bar(year,people,stack);legend(fontsize6第一产业第一产业,fontsize6第二第二产业产业,fontsize6第三产业第三产业); 2024/7/31Application of Matlab Language115 累计式

96、直方图累计式直方图 2024/7/31Application of Matlab Language116 bar(year,people,group);%分组式直方图分组式直方图legend(fontsize6第一产业第一产业,fontsize6第二产业第二产业,fontsize6第三产业第三产业); 2024/7/31Application of Matlab Language117 barh(year,people,group);%分组式直方图分组式直方图legend(fontsize6first,fontsize6second,fontsize6third); 2024/7/31Appl

97、ication of Matlab Language118 barh(year,people,stack);%累积式直方图累积式直方图legend(fontsize6first,fontsize6second,fontsize6third); 2024/7/31Application of Matlab Language119 饼图指令饼图指令pie n饼图指令饼图指令pie用来用来表示各元素占总和的百分数表示各元素占总和的百分数。该。该指令第二输入变量是与第一变量同长的指令第二输入变量是与第一变量同长的0-1向量,向量,1使对应扇块突出。使对应扇块突出。a=1,1.6,1.2,0.8,2.1

98、;subplot(1,2,1),pie(a,10100),legend(1,2,3,4,5)subplot(1,2,2),b=int8(a=min(a)pie3(a,b)colormap(cool) 2024/7/31Application of Matlab Language120 2024/7/31Application of Matlab Language121 离散杆图离散杆图stem 余弦波的采样信号图余弦波的采样信号图t=linspace(-2*pi,2*pi,20);h=stem(t,cos(t); 2024/7/31Application of Matlab Language1

99、22 例例3.17分别以条形图、填充图、阶梯图和分别以条形图、填充图、阶梯图和杆图形式绘图杆图形式绘图x=0:0.35:7;y=2*exp(-0.5*x);subplot(221);bar(x,y,g);title(bar(x,y,g);axis(0,7,0,2);subplot(222);fill(x,y,r);title(fill(x,y,r);axis(0,7,0,2);subplot(223);stairs(x,y,b);title(stairs(x,y,b);axis(0,7,0,2);subplot(224);stem(x,y,k);title(stem(x,y,k);axis(0

100、,7,0,2); 2024/7/31Application of Matlab Language123 例例3.18极坐标图极坐标图polar函数用来绘制极坐标图,其调用格式函数用来绘制极坐标图,其调用格式为:为:polar(theta,rho,选项选项)例:绘制例:绘制=sin(2)cos(2)的图形的图形theta=0:0.01:2*pi;rho=sin(2*theta).*cos(2*theta);polar(theta,rho,k); 2024/7/31Application of Matlab Language124 3.三维绘图的基本操作三维绘图的基本操作n三维线图指令三维线图指令

101、plot3n三维绘图指令中,三维绘图指令中,plot3最易于理解,它的使用格最易于理解,它的使用格式与式与plot十分相似,只是对应第十分相似,只是对应第3维空间的参量。维空间的参量。t=(0:0.02:2)*pi;x=sin(t);y=cos(t);z=cos(2*t);plot3(x,y,z,b-,x,y,z,bd);view(-82,58);boxonlegend(链链,宝石宝石) 2024/7/31Application of Matlab Language125 三维线图绘制结果三维线图绘制结果 2024/7/31Application of Matlab Language126 三

102、维网线图(三维网线图(mesh)和曲面图)和曲面图(surf)画函数画函数z=f(x,y)所代表的三维空间曲面,需要做以下所代表的三维空间曲面,需要做以下的数据准备工作:的数据准备工作:n确定自变量的取值范围和取值间隔。确定自变量的取值范围和取值间隔。x=x1:dx:x2;y=y1:dy:y2;n构成构成x-y平面上的自变量采样平面上的自变量采样“格点格点”矩阵。矩阵。利用利用MATLAB指令指令meshgrid产生产生“格点格点”矩阵矩阵xa,ya=meshgrid(x,y);n计算函数在自变量采样计算函数在自变量采样“格点格点”上的函数值,上的函数值,即即z=f(x,y)。n网线图、曲面图

103、绘制。网线图、曲面图绘制。 2024/7/31Application of Matlab Language127 举例举例绘制函数绘制函数z=x2+y2的曲面的曲面x=-4:4;y=x;x,y=meshgrid(x,y);%生成生成x-y坐标坐标“格点格点”矩阵矩阵z=x.2+y.2;%计算格点上的函数值计算格点上的函数值subplot(1,2,1),mesh(x,y,z);%三维网格图三维网格图subplot(1,2,2),surf(x,y,z);%三维曲面图三维曲面图colormap(hot); 2024/7/31Application of Matlab Language128 函数函数

104、z=x2+y2的曲面的绘制结果的曲面的绘制结果Matlab程序设计第8讲 2024/7/31Application of Matlab Language130 Matlab命令的执行方式n交互式命令执行方式(命令窗口) 逐条输入,逐条执行,操作简单、直观,但速度慢,执行过程不能保留。nM文件的程序执行方式 将命令编成程序存储在一个文件中(M文件),依次运行文件中的命令,可以重复进行。nMatlab程序设计有传统高级语言的特征,又有自己独特的特点,可以利用数据结构的特点,使程序结构简单,编程效率高。 2024/7/31Application of Matlab Language131 5.1 M

105、文件的分类n用Matlab语言编写的程序,称为M文件。 是由若干Matlab命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法。n M文件根据调用方式的不同分为两类: 命令文件(Script File) 函数文件(Function File)n 它们的扩展名都是.m 2024/7/31Application of Matlab Language132 命令文件和函数文件的区别n命令文件没有输入参数,也不返回输出参数;函数文件可以带输入参数,也可以返回输出参数。n命令文件对工作空间中的变量进行操作,文件中所有命令的执行结果也返回工作空间中;函数文件中定义的变量为局部变量,当函数文件执行

106、完毕时,这些变量也被清除。n命令文件可以直接运行;函数文件不能直接运行,要以函数调用的方式来调用它。 2024/7/31Application of Matlab Language133 例5.1 建立文件将变量a、b的值互换。命令文件:clear;a = 1:10;b = 11,12,13,14;15,16,17,18;c = a; a = b; b = c;ab将文件保存为exch,并在命令窗口执行。执行结果:a = 11 12 13 14 15 16 17 18b = 1 2 3 4 5 6 7 8 9 10 2024/7/31Application of Matlab Language

107、134 函数文件fexch.mfunction a,b = exch(a,b)c = a; a = b; b = c;然后在命令窗口调用该函数文件:clear;x = 1:10;y = 11,12,13,14;15,16,17,18;x,y = fexch(x,y)输出结果为:a = 11 12 13 14 15 16 17 18b = 1 2 3 4 5 6 7 8 9 10函数参数a,b,c未保留在工作空间中,x,y保留在工作空间中。 2024/7/31Application of Matlab Language135 M文件的建立与打开 M文件是一个文本文件,可以用任何编辑程序来建立和编

108、辑,一般最常用的是使用Matlab提供的文本编辑器。 该编辑器是一个集编辑和调试于一体的工作环境。 2024/7/31Application of Matlab Language136 5.2 程序控制结构n顺序结构n选择结构n循环结构 任何复杂的程序都可以由这3种基本结构构成。 2024/7/31Application of Matlab Language137 5.2.1 顺序结构n顺序结构是指按照程序中语句的排列顺序依次执行,直到程序的最后一个语句。(最简单的一种程序)1、数据的输入 从键盘输入数据,则可以使用input函数来进行, 调用格式为: A = input(提示信息,选项);

109、其中提示信息为一个字符串,用于提示用户输入数据。 例如:从键盘输入A矩阵,可以采用下面的命令来完成 A = input(输入A矩阵); 如果在input函数调用时采用s选项,则允许用户输入一个字符串。 例:xm = input(Whats your name?,s); 2024/7/31Application of Matlab Language138 5.2.1 顺序结构2、数据的输出 命令窗口输出函数主要有disp函数,其调用格式为: disp(输出项) 其中输出项既可以为字符串,也可以为矩阵。例如: A = Hello, Tom; disp(A) 输出为:Hello, Tom 又如:A

110、= 1,2,3;4,5,6;7,8,9; disp(A) 输出为: 1 2 3 4 5 6 7 8 9 %disp函数输出格式更紧凑 2024/7/31Application of Matlab Language139 5.2.1 顺序结构例5.2 求一元二次方程 的根。由于Matlab能进行复数运算,所以不需要判断方程的判别式,可直接根据求根公式求根。程序如下:a = input(a=?);b = input(b=?);c = input(c=?);d = b*b-4*a*c;x = (-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(x

111、(1),x2=,num2str(x(2);程序输出为:a=?4b=?78c=?54x1=-0.7188,x2=-18.7812 2024/7/31Application of Matlab Language140 5.2.1 顺序结构3、程序的暂停 程序执行过程中暂停,可用pause函数,其调用格式为: pause(延迟描述) 如果省略延迟时间,直接使用pause,则将暂停程序,直到 用户按任一键后程序继续执行。 若要强行中止程序的运行可按Ctrl+C键。 2024/7/31Application of Matlab Language141 5.2.2 选择结构选择结构是根据给定的条件成立或不

112、成立,分别执行不同的语句。Matlab用于实现选择结构的语句有if语句,switch语句和try语句。1. if语句在Matlab中,if语句有3种格式。(1)单分支if语句语句格式:if 条件 语句组end例如:当x是整数矩阵时,输出x的值 if fix(x)=x disp(x);end 2024/7/31Application of Matlab Language142 5.2.2 选择结构(2)双分支if语句语句格式:if 条件 语句组 1else 语句组 2end当条件成立时,执行语句组1,否则执行语句组2,然后再执行if语句的后续语句。 2024/7/31Application of

113、 Matlab Language143 5.2.2 选择结构例例5.3计算分段函数:计算分段函数:程序如下:程序如下:x=input(请输入请输入x x的值的值:);ifx=10y=cos(x+1)+sqrt(x*x+1);elsey=x*sqrt(x+sqrt(x);endy也可以用单分支if语句来实现:x = input(请输入x的值: );y = cos(x+1)+sqrt(x*x+1);if x=10 y = x*sqrt(x+sqrt(x);endy 2024/7/31Application of Matlab Language144 5.2.2 选择结构(3)多分支if语句语句格式

114、:if 条件1 语句组 1elseif 条件2 语句组 2elseif 条件m 语句组 melse 语句组nend 2024/7/31Application of Matlab Language145 5.2.2 选择结构2、switch语句switch语句根据表达式的取值不同,分别执行不同的语句,其语句格式:switch 表达式case 表达式1 语句组1case 表达式2 语句组2case 表达式m 语句组motherwise 语句组 nendswitch子句后面的表达式应为一个标量或一个字符串;子句后面的表达式应为一个标量或一个字符串;case子句后面的表达式不仅可以为一个标量或一个字符

115、子句后面的表达式不仅可以为一个标量或一个字符串,还可以为一个元胞矩阵。串,还可以为一个元胞矩阵。 2024/7/31Application of Matlab Language146 例5.5 某商场对顾客所购买的商品实行打折销售,标准如下:price200 没有折扣200=price500 3%折扣500=price1000 5%折扣1000=price2500 8%折扣2500=price5000 10%折扣5000mtimesInnermatrixdimensionsmustagree. 2024/7/31Application of Matlab Language150 5.2.3 循

116、环结构循环是指按照给定的条件,重复执行指定的语句,Matlab提供了两种实现循环结构的语句:for语句和while语句。1、for语句for语句的格式为:for 循环变量 =表达式1:表达式2:表达式3 循环体语句end其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。 2024/7/31Application of Matlab Language151 例5.7 已知 ,当n=100时,求y的值。程序如下:y = 0;n = 100;for i=1:n y = y+1/i2endy输出结果为:y = 1.6350 2024/7/

117、31Application of Matlab Language152 5.2.3 循环结构2、while语句while语句的一般格式为:while条件 循环体语句end其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。 2024/7/31Application of Matlab Language153 从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们的和。sum = 0;n = 0;x = input(Enter a number(end in 0):);while(x=0) sum = sum+x; n = n+1; x = inp

118、ut(Enter a number(end in 0):);endif(n0) sum mean = sum/nend例5.8 输出结果为:输出结果为:Enteranumber(endin0):67Enteranumber(endin0):89Enteranumber(endin0):93Enteranumber(endin0):70Enteranumber(endin0):0sum=319mean=79.7500 2024/7/31Application of Matlab Language154 5.2.3 循环结构3、break语句和continue语句它们一般与if语句配合使用。bre

119、ak语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。continue语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。 2024/7/31Application of Matlab Language155 例5.9 求100,200之间第一个能被21整除的整数。程序如下:for n = 100:200 if rem(n,21)=0; continue end breakendn程序输出结果为:n = 105Matlab程序设计第9讲 2024/7/31Application of Mat

120、lab Language157 5.3 函数文件 函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。Matlab提供的标准函数大部分是由函数文件定义的。5.3.1 函数文件的基本结构 函数文件由function语句引导,其基本结构为: function 输出形参表 = 函数名(输入形参表) 注释说明部分 函数体语句 其中,以function开头的一行为引导行,表示该M文件是一个函数文件。 当输出形参多于一个时,应该用方括号括起来。 2024/7/31Application of Matlab Language158 说明:1. 关于函数文件名 函数文件名通常由函数名再加上扩展名.m组

121、成。 当函数文件名与函数名不同时,Matlab将忽略函数名而确认文件名 因此调用时使用函数文件名。2. 关于注释说明部分 注释说明包括3部分: 紧随引导行之后以%开头的第一注释行。 这一行一般包括大写的函数文件名和函数功能简要描述,供lookfor 关键词查询和help在线帮助时使用。 第一注释行及之后连续的注释行。 通常包括函数输入/输出参数的含义及调用格式说明等信息,构成全 部在线帮助文本。 2024/7/31Application of Matlab Language159 说明: 与在线帮助文本相隔一空行的注释行。 包括函数文件编写和修改的信息,如作者和版本等。3、关于return语句

122、 如果在函数文件中插入了return语句,则执行到该语句就结束函数 的执行,流程转至调用该函数的位置。通常也不使用return语句。 例5.10 编写函数文件,求半径为r的圆的面积和周长。 函数文件如下: function s,p = fcircle(r) % FCIRCLE calculate the area and perimeter of a circle of radii r % r 圆半径 % s 圆面积 % p 圆周长 %2006年2月30日编 s = pi*r*r; p = 2*pi*r; 2024/7/31Application of Matlab Language160 说

123、明:将以上函数文件以文件名fcircle.m保存,然后在命令窗口调用。s,p = fcircle(10)输出结果是: s = 314.1593 p = 62.8319采用help命令或lookfor命令可以显示出注释说明部分的内容。 help fcircle屏幕显示 FCIRCLE calculate the area and perimeter of a circle of radii r r 圆半径 s 圆面积 p 圆周长 2024/7/31Application of Matlab Language161 5.3.2 函数调用 函数调用的一般格式是: 输出实参表 = 函数名(输入实参表)

124、 注意:函数调用时,各实参出现的顺序、个数,应与函数定义时相同。例5.11 利用函数文件,实现直角坐标(x,y)与极坐标(,)之间的转换。 函数文件:tran.m: function rho,theta = tran(x,y) rho = sqrt(x*x+y*y); theta = atan(y/x); 调用调用tran.m的命令文件的命令文件main1.m:x=input(pleaseinputx=:);y=input(pleaseinputy=:);rho,the=tran(x,y);rhothe 2024/7/31Application of Matlab Language162 函数

125、的嵌套调用 在Matlab中,函数可以嵌套调用,即一个函数可以调用别的函数。 一个函数调用自身称为函数的递归调用。 例5.12 利用函数的递归调用,求n!。 n!本身就是以递归的形式定义的: 显然,求显然,求n!需要求!需要求(n-1)!,这时可采用递归调用。,这时可采用递归调用。函数如下:函数如下:functionf=factor(n)ifn后输入变量名,检查变量的值。可以分析判断程序 的正确性。 选择Debug菜单中的Continue命令,程序继续运行,在断点处又暂停,再检查 变量的值,一直到发现问题为止。 切换工作空间,结束对程序的调试。打开编辑窗口中的Stack下拉列表框,从 中选择B

126、ase,即将工作空间切换到主工作空间。然后选择Debug菜单中的Set Clear Breakpoint 命令清楚已设置的断点,在选择Continue命令,去除白色 箭头,完成调试。 2024/7/31Application of Matlab Language170 5.5 Matlab矩阵分析与处理5.5.1 特殊矩阵常见的特殊矩阵有零矩阵、幺矩阵、单位矩阵等,这类特殊矩阵在应用中具有通用性。1、通用的特殊矩阵常用的产生通用特殊矩阵的函数有: zeros:产生全0矩阵(零矩阵)。 ones: 产生全1矩阵(幺矩阵)。 eye: 产生单位矩阵。 rand:产生01间均匀分布的随机矩阵。 ra

127、ndn:产生均值为0,方差为1的标准正态分布随机矩阵。 产生(0,1)区间均匀分布随机矩阵使用rand函数 产生均值为0,方差为1的标准正态分布随机矩阵使用randn函数 2024/7/31Application of Matlab Language171 例5.16 建立随机矩阵: 在区间20,50内均匀分布的5阶随机矩阵。 均值为0.6,方差为0.1的5阶正态分布随机矩阵。命令如下: x = 20+(50-20)*rand(5) x = 48.5039 42.8629 38.4630 32.1712 21.7367 26.9342 33.6940 43.7581 48.0641 30.58

128、60 38.2053 20.5551 47.6544 47.5071 44.3950 34.5795 44.6422 42.1462 32.3081 20.2958 46.7390 33.3411 25.2880 46.8095 24.1667 y = 0.6 + sqrt(0.1)*randn(5) 2024/7/31Application of Matlab Language172 5.5 矩阵结构变换1、对角阵与三角阵 只有对角线上有非零元素的矩阵称为对角矩阵,在研究矩阵时, 有时候需要将矩阵的对角线上的元素提取出来形成一个列向量,有 时也需要用一个向量构造一个对角阵。 (1)提取矩阵的

129、对角线元素函数:diag 例如: A = 1,2,3;4,5,6; D = diag(A) D = 1 5 diag函数还有一种形式:diag(A,k)提取第k条对角线的元素。 例如: D1 = diag(A,1) D = 2 6 2024/7/31Application of Matlab Language173 5.5 矩阵结构变换(2)构造对角矩阵 如果V是一个m个元素的向量,diag(V)将产生一个mm对角矩阵,其主对角线元素即为向量V的元素。 例如: diag(1,2,-1,4) ans = 1 0 0 0 0 2 0 0 0 0 -1 0 0 0 0 4 例如: diag(1:3,

130、-1) ans=0000100002000030 2024/7/31Application of Matlab Language174 例5.17 建立一个55矩阵A,然后将A的第一行元素乘以1,第二行乘以2,第五行乘以5。解: 用一个对角矩阵左乘一个矩阵时,相当于用对角阵的第一个元素乘以该矩阵的第一行,依次类推。命令如下: A = ones(5); D = diag(1:5); D * Aans = 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 2024/7/31Application of Matlab Language175 5.6

131、矩阵求逆与线性方程组求解5.6.1 矩阵的逆 对于一个方阵A,如果存在一个与其同阶的方阵B,使得: (I为单位矩阵)则称B为A的逆矩阵,当然,A也是B的逆矩阵。求方阵A的逆矩阵可调用函数inv(A)。例5.18 求方阵A的逆矩阵,且验证。 A = 1,-1,1;5,-4,3;2,1,1; B = inv(A); A*B ans = 1.0000 0 0 -0.0000 1.0000 0 -0.0000 0 1.0000 2024/7/31Application of Matlab Language176 5.6.2 用矩阵求逆方法求解线性方程组 将包含n个未知数,由n个方程构成的线性方程组表示

132、为:其矩阵表示形式为:其中:因此: 2024/7/31Application of Matlab Language177 例5.19 用求逆矩阵A的方法解线性方程组命令如下: A = 1,2,3;1,4,9;1,8,27; b = 5,-2,6; x = inv(A)*b %x = Ab x = 23.0000 -14.5000 3.6667也可以运用左除运算符求解。 2024/7/31Application of Matlab Language178 5.7 矩阵行列式值 把一个方程看做一个行列式,并按行列式的规则求值,称为行列式的值。在Matlab中,使用函数det(A)得到。例如: A

133、= rand(5) A = 0.9501 0.7621 0.6154 0.4057 0.0579 0.2311 0.4565 0.7919 0.9355 0.3529 0.6068 0.0185 0.9218 0.9169 0.8132 0.4860 0.8214 0.7382 0.4103 0.0099 0.8913 0.4447 0.1763 0.8936 0.1389 B = det(A) B = -0.0071Matlab数值计算第10讲 2024/7/31Application of Matlab Language180 6.1 多项式(polynomial) n多项式的MATLAB

134、表达n多项式由一个行向量表示该向量元素是该多项式的系数且按降幂次序排列 如:多项式x412x325x116由行向量: p=1 -12 0 25 116表示。注意,必须包括具有零系数的项。 n求解多项式的根?roots指令 2024/7/31Application of Matlab Language181 6.1 多项式(polynomial)n举例:求解多项式x412x325x116的根p=1 -12 0 25 116p = 1 -12 0 25 116r=roots(p)r = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672iuMATLA

135、B按惯例规定,多项式是行向量,根是列向量 2024/7/31Application of Matlab Language182 6.1 多项式(polynomial)n已知多项式的根,求解多项式 ?n能!n使用poly指令 n举例:由上例所得的根求其多项式 pp=poly(r)pp = 1.0000 -12.0000 -0.0000 25.0000 116.0000即:x412x325x116 2024/7/31Application of Matlab Language183 6.1 多项式(polynomial)n多项式的乘法(conv指令) n举例:多项式a(x)=x32x23x4 和b

136、(x)= x34x29x16的乘积。 a=1 2 3 4 ; b=1 4 9 16; c=conv(a, b)c = 1 6 20 50 75 84 64u两个以上的多项式的乘法需要重复使用conv. 2024/7/31Application of Matlab Language184 6.1 多项式(polynomial)n多项式加法: MATLAB没有提供进行加法运算的函数。n如果两个多项式向量大小相同,标准的数组加法有效。把多项式a(x)与上面给出的b(x)相加。 d=a+bd = 2 6 12 20结果: d(x)= 2x36x212x20 n当两个多项式阶次不同,低阶的多项式必须用首

137、零填补,使其与高阶多项式有同样的阶次。 考虑上面多项式c和d相加: e=c+0 0 0 de = 1 6 20 52 81 96 84结果: d(x)= x6+6x5+20x4+52x3+81x2+96x+84 2024/7/31Application of Matlab Language185 6.1 多项式(polynomial)n问题:编写一个多项式加法运算的函数文件n明确需求n定义一个函数,需要有两个输入参数(比如:p1、p2),一个输出参数p_out。p1、p2表示两个待计算的多项式。p_out表示两个多项式的求和结果n函数的内部处理如p1、p2两参数大小相等,则直接相加: p_ou

138、t=p1+p2如p1、p2两参数大小不等:If length(p1)length(p2)P2前面要补0元素,使p1、p2两参数大小相等否则P1前面要补0元素,使p1、p2两参数大小相等 2024/7/31Application of Matlab Language186 6.1 多项式(polynomial)n函数文件的编写function p_out=poly_sum(p1, p2)% calculate the sum of two polynomials if length(p1)=length(p2) p_out=p1+p2;elseif length(p1)length(p2) p2

139、=zeros(1,length(p1)-length(p2), p2; p_out=p1+p2;else p1=zeros(1,length(p2)-length(p1), p1; p_out=p1+p2;end 2024/7/31Application of Matlab Language187 6.1 多项式(polynomial)n多项式的除法(deconv)n举例说明:c(x)=x66x520x450x375x284x64除以b(x)= x34x29x16 c=1 6 20 50 75 84 64; b=1 4 9 16; q , r=deconv(c , b)q = 1 2 3 4r

140、 = 0 0 0 0 0 0 0 2024/7/31Application of Matlab Language188 6.1 多项式(polynomial)n多项式的导数 (polyder)n举例:求b(x)= x34x29x16的导数。 b=1 4 9 16; d=polyder(b)d = 3 8 9结果为: 3x28x9另外两种形式为: p = polyder(P,Q):求P*Q的导函数 p,q = polyder(P,Q):求P/Q的导函数,导数分子存入p,分母存入q 2024/7/31Application of Matlab Language189 6.1 多项式(polynom

141、ial)n多项式的估值(polyval) n举例:绘制p(x) = x34x27x10在-1, 3段上的曲线。x=linspace(-1, 3); % choose 100 data points between -1and 3.p=1 4 -7 -10; v=polyval(p, x); plot(x, v);title(x3+4x2-7x-10);xlabel(x) 2024/7/31Application of Matlab Language190 6.1 多项式(polynomial)p(x) = x34x27x10在-1, 3段上的曲线: 2024/7/31Application o

142、f Matlab Language191 6.2 函数的数值导数 n导数定义为:n则y=f(x)的导数可近似为:这里这里h0它是它是y的有限差分除以的有限差分除以x的有限差分。的有限差分。 n MATLAB中没有直接提供数值导数的函数,只有计算向中没有直接提供数值导数的函数,只有计算向前差分的函数前差分的函数diff,其调用格式为:,其调用格式为:DX=diff(X)计算向量计算向量X的向前差分的向前差分DX=diff(X,n)计算向量计算向量X的的n阶向前差分阶向前差分 2024/7/31Application of Matlab Language192 例题设x由0,2间均匀分布的10个点

143、组成,求sinx的1-3阶差分。命令如下:X = linspace(0,2*pi,10);Y = sin(X);DY = diff(Y)D2Y = diff(Y,2)D3Y = diff(Y,3)DY = 0.6428 0.3420 -0.1188 -0.5240 -0.6840 -0.5240 -0.1188 0.3420 0.6428D2Y = -0.3008 -0.4608 -0.4052 -0.1600 0.1600 0.4052 0.4608 0.3008D3Y = -0.1600 0.0556 0.2452 0.3201 0.2452 0.0556 -0.1600 2024/7/3

144、1Application of Matlab Language193 6.2 函数的数值导数(续)例:设在-3,3区间内以0.01为步长求数值导数。并画出导函数图像。程序如下:f = inline(sqrt(x.3+2*x.2-x+12)+(x+5).(1/6)+5*x+2); %内联函数x = -3:0.01:3;dx = diff(f(x,3.01)/0.01; %根据定义式求导数plot(x,dx) 2024/7/31Application of Matlab Language194 6.3 数值积分一元函数的数值积分n常用积分指令:quad和quadl。一般说来,quadl比quad更

145、有效。n具体调用格式如下: q = quadl(fun,a,b)q = quadl(fun,a,b,tol)q = quadl(fun,a,b,tol,trace)q,fcnt = quadl(fun,a,b,.)输入量fun为被积函数的句柄。输入量a, b分别是积分的下限、和上限,都必须是确定的数值;前3个输入参数是调用积分指令所必须的,其他可以缺省;输入量tol是一个标量,控制绝对误差;输入量trace为非0值时,将随积分的进程逐点画出被积分函数;输出参数fcnt返回函数的执行次数。Note:quad的调用格式与quadl相同 2024/7/31Application of Matlab

146、Language195 6.3 数值积分(续)n举例:求定积分MATLAB指令quad和quadl求积分fun=inline(exp(-x.*x),x); %数组乘符号.*的采用是必须的 Isim=quad(fun,0,1), I8=quadl(fun,0,1) Isim = 0.7468I8 = 0.7468 2024/7/31Application of Matlab Language196 6.4 元素排序 Matlab中对向量X排序的函数是sort(X), 函数返回一个对X中的元素按升序排列的新向量。 sort函数也可以对矩阵A的各列(或行)重新排序,其调用格式为: Y,I = sort(A,dim) dim=1,按列排序;dim=2,按行排序,Y是排序后的矩阵,I记录Y中的元素在A中的位置。例:对下列矩阵做各种排序。 2024/7/31Application of Matlab Language197 命令如下:A = 1,-8,5;4,12,6;13,7,-13; sort(A) ans = 1 -8 -13 4 7 513 12 6-sort(-A,2) %对A的每行按降序排列ans =5 1 -812 6 413 7 -13

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号