- 1.76 MB
- 2022-04-29 14:30:16 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
'MATLAB实用教程
本书的主要内容和结构
第1章MATLAB简介MATLAB的主要特点MATLAB的桌面环境MATLAB的帮助系统
MATLAB的帮助系统帮助浏览工具help函数和doc函数
第2章数据类型常数和变量数组和矩阵字符串多维数组结构单元数组函数句柄
常数常数返回值ans默认变量名,保存最近的结果。如果不给表达式指定一个输出变量,MATLAB会自动将结果保存到ans变量中eps浮点相对精度。是MATLAB用于计算的容限realmax计算机可以表示的最大浮点数realmin计算机可以表示的最小浮点数pi圆周率i,j虚数单位inf无限值。类似n/0的表达式生成的结果为inf,其中n为非0实数NaN表示不合法的数值值,非数值。类似0/0和inf/inf的表达式生成的结果,与NaN有关的算术运算结果,以及n/0,n为复数时的计算结果都是NaNcomputer计算机类型versionMATLAB版本字符串下表列出了MATLAB提供的一些内部函数。
变量变量名MATLAB变量名的第1个字符必须是字母,后面可以跟字母、数字和下划线的任何组合。注意:MATLAB中变量名有大小写区分,所以A和a是不同的变量。创建变量在MATLAB中创建变量很简单,不必声明变量的数据类型。例如在命令窗口键入下面的命令行就可以创建一个A变量。A=9A=9
变量的数据类型数组逻辑型字符型数值型单元数组结构数组函数句柄Java类定制类int8,uint8int16,uint16int32,uint32SingleDouble
数组和矩阵MATLAB中,所有数据都用数组或矩阵形式进行保存。数组矩阵
数组构造数组的方法:直接构造法增量法linspace函数法
直接构造数组在MATLAB中构造数组,只需要用空格或逗号间隔数组元素,然后用方括号括起来就行了。如x=[023678]或x=[0,2,3,6,7,8]就构造了一个有6个元素的数组x。
用增量法构造数组利用MATLAB提供的冒号运算符(first:step:last)可以生成数组。数组中的元素按顺序从first一直到last,增量为step。(2:3:14)如果不指定增量step,则按升序生成数组,后面的数比它前面第一个数大1。(2:13)如果要求生成降序排列的数组,指定一个负的增量。增量可以是整数,也可以是小数。
用linspace函数构造数组用linspace函数构造数组,需要指定首尾值和元素总个数。基本形式是:x=linspace(first,last,num)其中,first,last和num分别为x数组的首尾元素和元素个数。如x=linspace(0,10,5)x=02.50005.00007.500010.0000
矩阵构造矩阵的方法:简单的创建方法构造特殊矩阵聚合矩阵组合不同类型的数据
用简单方法构造矩阵MATLAB中创建矩阵最简单的方法是使用符号[]。在方括号内输入多个元素可以创建矩阵的一个行。用逗号或空格把每个元素间隔开。如果想开始一个新行,用分号终止当前行:A=[row1;row2;...;rown]下面创建一个3行5列的数值矩阵。A=[126293-822;162874391;-417-72956]A=126293-822162874391-417-72956
构造特殊矩阵MATLAB提供了多个创建不同矩阵的函数,如下表所示。函数功能ones创建一个所有元素都为1的矩阵zeros创建一个所有元素都为0的矩阵eye创建对角线元素为1,其他元素为0的矩阵accumarray将输入矩阵的元素分配到输出矩阵中的指定位置diag根据矢量创建对角矩阵magic创建一个方形矩阵,其中行、列和对角线上元素的和相等rand创建一个矩阵或数组,其中的元素为服从均匀分布的随机数randn创建一个矩阵或数组,其中的元素为服从正态分布的随机数randperm创建一个矢量(1×n的矩阵)
聚合矩阵矩阵聚合是通过连接一个或多个矩阵来形成新的矩阵。符号[]不仅是矩阵构造符,它还是MATLAB聚合运算符。表达式C=[AB]在水平方向上聚合矩阵A和B,表达式C=[A;B]在垂向上聚合它们。本例通过在垂向上聚合矩阵A和B来构造新矩阵C:A=ones(2,5)*6;%2×5的矩阵,元素为6B=rand(3,5);%3×5的矩阵,元素为随机数C=[A;B]%垂向聚合A和B注意:在每一条程序后面,有分号“;”,则该语句求出的内容不显示在屏幕上;若没有分号,则所求内容会显示出来
组合不同类型的数据构造矩阵时,如果矩阵的数据类型不同,则MATLAB会自动对某些元素进行类型转换,然后生成的矩阵具有相同的类型。用一个高精度的矩阵和一个低精度的矩阵构造新矩阵时,新矩阵是低精度型的。例如,聚合double型和single型的矩阵时,总是生成single型的矩阵。MATLAB会先将double型元素转换为single型。
聚合矩阵的特殊函数下表列出了聚合矩阵的一些特殊函数。函数描述cat沿指定的维聚合矩阵horzcat水平聚合矩阵vertcat垂向聚合矩阵repmat通过复制和叠置矩阵来创建新矩阵blkdiag用已有矩阵创建块对角矩阵
获取矩阵的元素使用编号索引使用线性索引使用冒号使用end关键字
使用编号索引获取矩阵的元素利用编号和索引,可以获取MATLAB矩阵的元素。要引用矩阵中的特殊元素,用下面的语法指定它的行号和列号,其中A是矩阵变量。按先行后列的顺序指定。A(row,column)
使用线性索引获取矩阵的元素MATLAB保存矩阵中的数据时是作为一个元素列保存。这个元素列又是由矩阵中的所有列组成的,后一列元素按先后顺序添加到前一列元素的最后。所以,矩阵AA=[269;428;301]A=269428351在内存中是按下面的序列保存的:2,4,3,6,2,5,9,8,1矩阵A第3行第2列的元素可以看作实际保存序列中的第6个元素。要获取这个元素,可以使用标准语法A(3,2)或使用A(6)。
使用冒号获取矩阵的元素利用冒号本身可以引用矩阵某行或列的所有元素。使用下面的语法,可以计算4×4的魔方矩阵A中所有元素的和。sum(A(:,2))ans=34将冒号进行索引,可以引用整个矩阵中的所有元素。本例显示矩阵A中的所有元素,按列序返回它们:A(:)
使用end关键字获取矩阵的元素利用end关键字可以指定矩阵某维的最后一个元素。它适用于不知道矩阵有多少行或多少列的情况。例如,可以用下面的语句进行值的替换:B(1:3:end)=-10
字符串字符串的创建类型转换字符串的比较字符串的聚合字符串的搜索和替换
创建字符串通过把字符放到单引号中来指定字符数据。如,下面创建一个1×5的字符串country。country="China";创建一个二维字符串时,确定每行具有相同的长度,例如,下面两个字符串都有5个字符,用它们组合起来的二维字符串是合法的。name=["LiYi";"HuXu"]name=LiYiHuXu根据不同长度的字符串创建字符串时,将短的那些字符串后面用空格补齐,使所有字符串的长度相同。
类型转换用char函数把单元数组转换为标准字符串数组。str2double函数把一个字符串单元数组转换为字符串表示的双精度值。int2str函数将整型数据转换为字符串型数据。num2str函数对输出字符串的格式提供了更多控制,该函数的第2个变量是可选的,它设置输出字符串的位数,或指定一个实际的格式。mat2str函数将数组转换为字符串。mat2str函数将返回一个包含文本的字符串,该文本在命令行中输入,用于创建矩阵。
字符串的比较用strcmp函数比较字符串,字符串不相等时,返回false。可以使用MATLAB的关系运算符,如,可以用(==)确定两个字符串中的相同字符。所有关系运算符(>,>=,<,<=,==,!=)比较对应字符的值。
字符串的聚合字符串通常可以由更小的元素聚合而成。两个通用的聚合方法是使用MATLAB聚合运算符([])或sprintf函数。用strcat函数也可以把两个或更多字符串组合在一起。
字符串的搜索和替换strrep函数进行标准的搜索和替代操作。findstr函数把子字符串的起始位置返回到一个更长的字符串中。strtok函数在输入字符串中第一次发现间隔符时返回间隔符前面的字符,可用该函数把句子分离成单词。strmatch函数在字符串或字符串单元数组的整个行中进行查找,看有没有以给定字符序列打头的字符串,它返回以该字符串打头的行的行号。
多维数组用索引生成多维数组用特殊函数生成多维数组用cat函数生成多维数组
用索引生成多维数组创建多维数组的方法之一是先创建一个二维数组,然后扩展它。如:A=[578;019;436];A是一个3×3的数值,即它的行维和列维都是3。给A添加第三维。A(:,:,2)=[104;356;987]
用特殊函数生成多维数组可以使用与生成二维数组相同的方式,用randn,ones和zeros函数等生成多维数组。提供的每个变量表示生成的数组中对应维的大小。如:要创建一个正态分布随机数的4×3×2的数组,可以输入:B=randn(4,3,2)要生成一个元素均为同一常数的数组,使用repmat函数。如:B=repmat(5,[342])
用cat函数生成多维数组cat函数是创建多维数组的一种简单方式,它按指定的维数将多个数组聚合到一起,其调用格式为:B=cat(dim,A1,A2...)其中A1,A2等是进行聚合的数组,dim是维数。
结构创建结构数组获取结构数组中的数据数组的大小操作字段结构的嵌套
创建结构数组使用赋值语句可以通过将数据赋给单独的字段来生成一个简单的1×1结构数组。使用struct函数可以用struct函数预分配一个结构数组。其基本形式为:str_array=struct("field1",val1,"field2",val2,...)其中,变量为字段名和它们的对应值。
单元数组创建单元数组获取单元数组的数据删除单元和重塑单元数组
创建单元数组用赋值语句创建单元数组可以使用单元索引和内容索引两种方式创建单元数组。用cell函数创建单元数组使用cell函数,可以预分配指定大小的空单元数组,如,下面的语句创建一个空的单元数组:B=cell(2,3);然后可以用赋值语句填充B单元。
函数句柄函数句柄是一种MATLAB数据类型,它包含用于引用函数的信息。创建函数句柄时,MATLAB在句柄中保存所有与要运行的函数有关的信息。第3章将对函数句柄进行比较详细的介绍。
第3章M文件设计变量表达式流程控制函数M文件程序调试与错误处理编程技巧
变量变量的作用范围局部变量:局部变量的作用范围仅限于本函数。全局变量:全局变量用global关键字进行声明,其作用范围为整个M文件。变量的存活期变量的存活期代表变量保持其值的能力。用persistent关键字声明固定变量,可以保持变量的值。
表达式数值表示运算符处理字符串表达式
数值表示MATLAB使用传统的数值表示方法。对于比较长的数,使用科学计数法,用字母e指定以10为底的幂次。虚数用i或j作为后缀。下面是一些合法的数值表示:3-990.00019.63972381.60210e-206.02252e231i-3.14159j3e5i
运算符算术运算符比较运算符逻辑运算符运算符的优先级
运算符的优先级按照优先级别,各种运算符有下面的先后次序。小括号()转置(.")、幂(.^)、复数共轭转置(")、矩阵的幂(^)一元的加(+)、一元的减(-)、逻辑否(~)乘(.*)、右除(./)、左除(.)、矩阵乘(*)、矩阵右除(/)、矩阵左除()加(+)、减(-)冒号操作符(:)小于(<)、小于或等于(<=)、大于(>)、大于或等于(>=)、等于(==)、不等于(~=)逐元素AND(&)逐元素OR(|)&&||
处理字符串表达式处理字符串表达式需要使用eval函数和feval函数。eval函数可以处理包含MATLAB表达式、语句或函数调用的字符串。feval函数与eval函数的区别在于,该函数执行函数而不是MATLAB表达式。注意:尽量少用eval函数,因为使用eval函数的代码通常不好读,不易调试。
流程控制条件控制循环控制错误控制程序终止控制
条件控制if/elseif语句switch/case语句比较上面两种语句,switch/case语句的可读性更强,并且可以比较不同长度的字符串。
循环控制for循环while循环continue命令break命令
错误控制try…catch语句进行错误捕获,它把有可能引起异常的语句放在try控制块中,这样当try控制块中statement语句引起异常时,catch控制块就可以捕获它,并针对不同的错误类型,进行不同的处理。
程序终止控制return命令能使当前正在运行的函数正常退出,并返回调用它的函数,继续运行。下表比较break,continue和return命令。命令用在何处描述breakfor或while循环它出现时,退出循环,在嵌套的循环中,进入相邻的外层循环continuefor或while循环在本循环中跳过剩余的语句,进入本循环的下一次迭代return任意位置它出现时,立即退出函数,进入函数的调用函数中
函数主函数子函数匿名函数嵌套函数私有函数重载函数
主函数任何M文件中的第1个函数称为主函数。注意:一般使主函数的名称与M文件的相同。如果函数名与文件名不同,必须用文件名调用函数。
子函数M文件中可以包含一个以上的函数。文件中除主函数以外的其他函数称为子函数,并且它们只对主函数或同一文件中的其他子函数可见。
匿名函数使用匿名函数,可以在不必创建M文件的情况下快速创建简单函数。可以在MATLAB命令行或任何M文件函数或脚本中创建匿名函数。创建匿名函数的语法格式为:fhandle=@(arglist)expr其中,expr表示函数体,即函数要完成主要工作的代码;arglist为要传递给函数的逗号间隔的输入参数列表。
嵌套函数可以在一个函数中嵌套定义一个或多个函数。嵌套函数具有类似下面的形式:functionx=A(p1,p2)…functiony=B(p3)…end…end
私有函数私有函数是private子目录中的函数。它们只对父目录中的函数可见。
重载函数有时候同一个函数可以用于多种情况,对应地有不同的输入参数,此时要用到重载函数。比如绘制二维线形图的plot函数就有多种重载形式,下面是其中两种。plot(Y)plot(X1,Y1,...)这两个函数具有相同的函数名,不同的参数。调用plot函数时MATLAB会根据函数的参数自动选择使用。
M文件脚本式M文件和函数式M文件M文件的基本结构函数的参数函数句柄
脚本式M文件和函数式M文件脚本式M文件和函数式M文件的区别如下表所示。脚本式M文件函数式M文件不接受输入参数,没有返回值可以接受输入参数,可以有返回值基于工作空间中的数据进行操作默认时,文件中参数的作用范围只限于函数内部自动完成需要花费很多时间的多步操作时使用扩展MATLAB语言功能时使用
M文件的基本结构一个完整的函数式M文件应该包括函数定义行、H1行、帮助文本、函数体、注释和函数代码等方面的内容,其中函数定义行和函数代码是必需的。如function[x,y]=myfun(a,b,c)函数定义行%H1行–用一行文字来综述函数的功能%帮助文本–用一行或多行文本解释如何使用函数,%在命令行中键入"help"时可以使用它%函数体一般从第一个空白行后开始%注释–描述函数的行为,输入输出的类型等,%在命令行中键入"help"时不会显示这些文本x=prod(a,b);%开始编写函数代码
函数的参数检查输入参数的个数传递参数解包varargin中的内容打包varargout参数列表中的varargin和varargout返回输出参数
检查输入参数的个数利用nargin和nargout函数可以确定函数输入参数和输出参数的个数。然后可以根据参数个数用条件语句完成不同的任务,例如functionc=testarg1(a,b)if(nargin==1)c=a.^2;elseif(nargin==2)c=a+b;end给定一个输入参数时,函数计算输入值的平方;给定两个输入参数时,求它们的和。
传递参数使用varargin和varargout函数可以传递任意个数的输入参数或者返回任意个数的输出参数给函数。MATLAB把所有指定的输入参数指定到一个单元数组中。每个单元可以包含任意大小或类型的数据。对于输出参数,函数代码必须把它们打包到一个单元数组中,这样,MATLAB就可以把参数返回给调用函数。
解包varargin中的内容因为varargin将所有输入参数包含在一个单元数组中,所以有必要使用单元数组索引来提取数据。例如y(n)=varargin{n}(2);其中,索引表达式{n}获取varargin的第n个单元。表达式(2)表示单元内容的第二个元素。
打包varargout当允许有任意多个输出参数时,必须将所有输出打包到varargout单元数组中。使用nargout确定输出参数的个数。
参数列表中的varargin和varargoutvarargin或varargout必须出现在参数列表的最后,即函数调用必须首先指定必要的参数。
返回输出参数放在函数定义行中等号左侧的任何参数都是调用函数的返回值。如果传递任何函数可以修改的输入参数,需要把相同的参数作为输出参数,这样,调用函数可以获得更新后的值。
函数句柄在MATLAB中,在函数名前用@符号创建一个函数句柄。下面的例子为humps函数创建一个函数句柄并将它指定给变量fhandle。fhandle=@humps;可以像传递其它变量一样将句柄传递给另一个函数。用MATLAB的feval命令运行函数句柄的目标函数。用函数句柄使用本命令的语法为:feval(fhandle,arg1,arg2,...,argn)
程序调试和错误处理用try-catch语句检查错误错误和警告信息用Debug菜单进行调试
编程技巧矢量化预分配内存空间程序运行情况监测--Profiler
第4章图形绘制创建二维图形创建三维图形
创建二维图形线形图、条形图和面积图饼图误差条图散点图直方图对数坐标图和半对数坐标图多轴图极坐标图帕累托图火柴杆图阶梯图玫瑰花图函数的图形动画
函数的图形可以用fplot函数在指定范围内绘函数的图形。函数必须是y=f(x)形式的,其中,x是矢量,为自变量;y为矢量,为因变量。创建一个M文件myfun,它返回一个两列矩阵。functionY=myfun(x)Y(:,1)=200*sin(x(:))./x(:);Y(:,2)=x(:).^2;创建一个指向myfun的函数句柄。fh=@myfun;用下面的语句绘图。fplot(fh,[-2020])生成右图。
创建动画在MATLAB中,可以用两种方法创建动画序列:·保存很多不同的图片,然后以电影的形式进行显示;·在屏幕上连续擦除和重画对象。每次重画都作递增式的改变。
绘制三维图形用给定数据绘三维线形图用给定数据绘三维表面图表面图绘制的数据格式问题函数的曲线和曲面二次曲面样条曲线和曲面多边形对象模型消隐控制三维图形的场景效果设置
用给定数据绘三维线形图利用plot3函数可以绘制三维线形图。用plot3函数绘图时,需要指定线条穿过的点的坐标。假设X,Y和Z是3个矢量,分别表示一系列点的x坐标、y坐标和z坐标,则下面的命令创建一条经过这些点的三维曲线。plot3(X,Y,Z)
用给定数据绘三维表面图当绘图数据已知时,可以用mesh,surf和surfl等函数直接绘制网格图、刻面图和曲面图。网格图和刻面图又分三角形和四边形两种。
表面图绘制的数据格式问题MATLAB绘制表面图时数据格式是矩阵格式的,而我们通常得到的采样数据或数值计算数据是点坐标格式的。所以,用MATLAB函数绘表面图以前,需要先转换数据格式。xyzx(1,1)y(1,1)z(1,1)x(1,2)y(1,2)z(1,2)……x(1,n)y(1,n)z(1,n)x(2,1)y(2,1)z(2,1)……x(m,n)y(m,n)z(m,n)X矩阵x(1,1)x(1,2)…x(1,n)x(2,1)x(2,2)…x(2,n)……x(m,1)x(m,2)…x(m,n)同上构造Y矩阵和Z矩阵
函数的曲线和曲面使用ezplot函数和ezplot3函数,可以很方便地绘制二维和三维参数曲线;使用ezpolar函数,可以在极坐标中绘制参数曲线。用ezmesh函数绘制函数表示的网格。函数形式可以是一般形式,也可以是参数形式。用ezsurf函数绘制函数表示的曲面。
二次曲面用cylinder函数生成柱面。用sphere函数生成球面。
样条曲线和曲面利用MATLAB的样条工具箱,可以绘制多种样条曲线和曲面。利用MATLAB样条工具箱,可以绘制样条曲面,包括三次样条曲面、B样条曲面和有理样条曲面等。
多边形对象模型由一个或多个相连或不相连的多边形组成的对象称为面片图形对象,也常称为多边形对象模型。创建多边形对象,需要定义面片。只需要指定顶点坐标和某种形式的颜色数据就可以定义面片了。面片支持多种着色方式,这一点对于用几何形体进行数据可视化很有用。定义面片主要有两种方式:指定每个多边形的顶点坐标,MATLAB按顺序连接这些顶点,形成面片。指定每个顶点的坐标值和一个指定如何把这些点连成面的矩阵。
消隐处理默认时,MATLAB绘制三维图形时会进行消隐处理。利用下面的命令,可以取消消隐:hiddenoff
三维图形的场景效果设置绘制三维图以后,可以对它进行着色,添加光照,设置材质、纹理、透明性并进行交互操作。
第5章图形编程句柄图形对象基本图形元素的绘制图形的着色图形变换定制图形交互绘图
句柄图形对象句柄图形对象简介Figure对象Root对象对象的属性
句柄图形对象的组织结构句柄图形对象的层次体系如下图所示。RootFigureUI对象Axes隐藏的AnnotationAxes对象核心对象绘图对象组对象Annotation对象
Figure对象Figure对象是MATLAB显示图形的窗口。图形窗口包括菜单、工具条、用户界面对象、上下文菜单、坐标系和坐标系的子对象等。
Root对象Root对象是Figure对象的父对象。不能实例化Root对象,因为它的作用只是保存信息,它保存MATLAB状态、计算机系统和MATLAB默认设置等信息。
对象的属性图形对象的属性控制它外观和行为的很多方面。属性包括了诸如对象类型、父对象、子对象、可见性之类的一般信息,也包括该对象类型的独有信息。例如,在任何给定的Figure对象上,可以知道最后按下的是哪个键、鼠标光标的位置或者最近选择的菜单的句柄等。
基本图形元素的绘制绘制直线段、多义线和曲线—line函数绘制矩形、圆角矩形、椭圆、圆及对应的区域图形—rectangle函数绘制多边形—patch函数绘制文本—text函数
绘制直线段和多义线MATLAB中的直线段和多义线用Line对象表示。用line函数创建直线段对象。按照直线逼近的思路,还可以用该函数创建曲线。下面利用line函数生成多义线:X2=[192028];Y2=[1251032];line(X2,Y2,"LineWidth",2,"Marker","+")
绘制曲线按照直线逼近的思路,可以用line函数创建曲线。下面用多条直线段逼近余弦曲线,左图用10条直线段逼近,右图用20条直线段逼近。
绘制矩形、圆角矩形、椭圆、圆及对应的区域图形MATLAB中,矩形、圆角矩形、椭圆、圆及对应的区域图形都用Rectangle对象表示。用rectangle函数可以创建Rectangle对象。在同一个坐标系中创建矩形、圆角矩形、椭圆和圆各一个,使用了不同的线型和线宽。rectangle("Position",[1,1,20,10],"LineWidth",3);rectangle("Position",[5,3,10,15],"Curvature",[11]);rectangle("Position",[5,3,10,10],"Curvature",[11],"LineWidth",3);rectangle("Position",[4,5,12,8],"Curvature",.4,"LineStyle","--");axisequal
绘制多边形任意多边形及多边形区域是用Patch对象表示的,该对象由patch函数创建。使用patch函数生成面片,有两种方法,一种是顶点/颜色法,通过指定每个小面的顶点坐标和颜色来创建;另一种是顶点/小面法,通过指定所有顶点的坐标和各小面的顶点和颜色来创建。
绘制文本文本用Text对象表示,该对象由text函数创建,text函数是创建文本图形对象的低级函数。使用它将文本字符串放在指定的位置上。下面创建多种形式的文本:text(10,30,"添加文本1");text(10,25,"添加文本2","FontSize",20,"FontAngle","Italic");text(10,20,"添加文本3","FontName","黑体","FontWeight","bold");text(10,10,"添加文本4","Rotation",45);axis([520835])
图形的着色多边形的单色填充多边形的插值着色对同一个多边形,左图为单色填充效果,右图为插值着色效果。
图形变换在MATLAB中实现图形变换,需要用到hgtransform对象,使用该对象的Matrix属性可以给hgtransform对象的所有子对象应用一个变换。典型的变换包括旋转、平移和缩放。用hgtransform函数创建hgtransform图形对象。使用makehgtform函数创建4×4的变换矩阵。
定制图形前面介绍了在MATLAB中创建基本图形元素的方法。有了基本图形元素,就可以灵活运用它们,形成更复杂的图形。
第6章高等数学计算函数和极限导数极限和导数的应用不定积分和定积分空间解析几何与向量代数多元函数的极限和求导级数微分方程
函数复合函数运算符号表达式的复合函数运算主要是通过函数compose来实现的。反函数符号表达式的反函数运算主要是通过函数finverse来实现的。函数的图形
极限符号极限由函数limit来实现。例:求数列的极限。解:在命令窗口键入下面的命令行:symsn;limit((n+(-1)^(n-1))/n,n,inf)得ans=1
导数求函数的导数求隐函数的导数求参数方程确定的函数的导数
求函数的导数用diff函数进行函数求导。例:求函数的导数。解:在命令窗口键入下面的命令行:symsx;f=sym("(x-1)^3/(x+1)");B=diff(f)得B=3*(x-1)^2/(x+1)-(x-1)^3/(x+1)^2
求隐函数的导数对于隐函数F(x,y)=0,导数
求参数方程确定的函数的导数对于参数方程导数
极限和导数的应用渐近线极值拐点
不定积分和定积分不定积分求定积分定积分的近似计算定积分的应用多重积分
不定积分MATLAB中,用符号工具箱中的int函数求函数的不定积分和定积分。用int函数的前两种调用格式求不定积分。例:求不定积分。解:在命令窗口键入symsxnint(x^n)或symsxnint(x^n,x)得ans=x^(n+1)/(n+1)
求定积分用int函数的后两种调用格式求定积分。例:求定积分。解:在命令窗口键入symsxint(x^7,0,1)得ans=1/8
定积分的近似计算用MATLAB提供的trapz函数可以用梯形法近似求取定积分的值。例:积分的精确值为2,下面用trapz函数在均匀间隔的网格上求该积分的数值近似。X=0:pi/100:pi;Y=sin(X);Z=trapz(X,Y)Z=1.9998
定积分的应用使用定积分,可以解决几何和物理中的很多实际问题,比如求平面图形的面积、求曲面围成的体积、求曲线的弧长、求功等。
多重积分可以用int函数求函数的多重积分。例:求二重积分。解:在命令窗口键入symsxy;int(int(x*y,y,2),y,1,2)得ans=9/8
空间解析几何与向量代数空间向量运算曲面及其方程
空间向量运算已知向量a={2,1,-1},b={1,-1,2},计算a+b,a-b,2a,a·b,a×b。解:在命令窗口键入下面的命令行:a=[21-1];b=[1-12];c=a+bd=a-be=2*af=dot(a,b)g=cross(a,b)得c=301d=12-3e=42-2f=-1g=1-5-3上面分别用dot和cross函数计算向量的点积和叉积
曲面及其方程利用MATLAB提供的绘图函数,可以绘制给定函数的曲面和二次曲面。相关内容,请参见6.2.4和6.2.5小节的介绍。
多元函数的极限和求导求多元函数的极限求多元函数的导数求二元隐函数的导数
求多元函数的极限例:求极限。解:在命令行键入symsxy;limit((sin(x+y)-sin(x))/y,y,0)ans=cos(x)
求多元函数的导数用diff函数计算多元函数的偏导数,需要指定相对于哪个变量求偏导数。例:求函数f=sin(st)的偏导数。解:在命令窗口键入下面的命令行symsstf=sin(s*t)diff(f,t)ans=cos(s*t)*s
求二元隐函数的导数对于隐函数F(x,y,z)=0,导数
级数级数求和泰勒级数展开傅立叶级数展开
级数求和可以用symsum函数求级数的和。例:求级数和。解:在命令窗口键入symsxks1=symsum(1/k^2,1,inf)s2=symsum(x^k,k,0,inf)s1=1/6*pi^2s2=-1/(x-1)
泰勒级数展开用taylor函数进行泰勒级数展开。例:求函数的泰勒级数展开,取前7项。解:在命令窗口键入下面的代码symsxf=1/(5+4*cos(x))T=taylor(f,8)返回T=1/9+2/81*x^2+5/1458*x^4+49/131220*x^6
傅立叶级数展开通过编写程序,可以实现函数的傅立叶级数展开。
微分方程微分方程可以通过函数dsolve求解。例:求微分方程的通解,y为应变量,t为默认的自变量。解:输入下面的命令行dsolve("Dy=1+y^2")返回ans=tan(t+C1)即为所求的通解。下面指定初始条件y|x=0=1。y=dsolve("Dy=1+y^2","y(0)=1")生成y=tan(t+1/4*pi)
第7章线性代数矩阵分析矩阵的分解线性方程组的求解矩阵的特征值和特征向量符号矩阵稀疏矩阵
矩阵分析矩阵的行列式矩阵的四则运算矩阵的幂和平方根矩阵的指数和对数矩阵的翻转矩阵的逆运算矩阵的迹矩阵的范数矩阵的条件数矩阵的重塑矩阵的逻辑运算矩阵的初等变换矩阵的秩
矩阵的行列式可用函数det求矩阵的行列式大小。例:a=[120;25-1;410-1];b=det(a)b=1
矩阵的四则运算数组和矩阵的加减运算使用加号和减号,即“+”和“-”。矩阵相乘使用“*”运算符。如果只是将两个矩阵中相同位置的元素相乘,使用“.*”运算符。矩阵除法有左除和右除的区别,分别使用“”和“/”运算符。与“”和“/”运算符相对应,也有“.”和“./”运算符,分别用于将两个矩阵中的对应元素相除。矩阵与常数的代数运算,可以直接使用上面的各种运算符。
矩阵的幂和平方根矩阵的幂运算使用运算符“^”,幂运算具有类似X^p的形式。如果p是整数,则幂通过重复求平方来计算;如果该整数为负值,则首先计算X的逆;如果p取其他值,则计算需要用到特征值和特征矢量,即如果[V,D]=eig(X),则X^p=V*D.^p/V。用sqrtm函数求矩阵的平方根。
矩阵的指数和对数矩阵的指数运算用expm函数实现。矩阵的对数运算用logm函数实现。
矩阵的翻转用fliplr函数左右翻转矩阵;用flipud函数上下翻转矩阵;用flipdim函数沿指定方向翻转矩阵;用transpose函数沿主对角线翻转矩阵。
矩阵的逆运算用函数inv实现矩阵的逆运算。由函数pinv实现矩阵的伪逆运算。。
矩阵的迹矩阵的迹是指矩阵所有对角线元素的和。在MATLAB中,矩阵的迹可由函数trace计算得到。
矩阵的范数矩阵的范数运算可由函数norm来实现,具有norm(A),norm(A,1),norm(A,2),norm(A,inf),norm(A,’fro’)等形式,分别代表矩阵的范数运算、1-范数运算、7-范数运算、无穷大范数运算和F-范数运算。
矩阵的条件数条件数的值代表矩阵“病态”程度的大小。在MATLAB中,矩阵的条件数可分别由函数cond(A),condest(A)或rcond(A)计算得到,它们分别计算矩阵的条件数值、1-范数矩阵条件数值和矩阵的逆条件数值。
矩阵的重塑用reshape函数进行矩阵重塑。下面将一个3×4的矩阵重塑为2×6的。例:A=[14710;25811;36912]A=147102581136912B=reshape(A,2,6)B=135791124681012
矩阵的逻辑运算使用逻辑运算符,可以直接对数组或矩阵进行逻辑运算,包括逻辑非、逻辑或、逻辑与和逻辑异或运算。
矩阵的初等变换用rref函数进行矩阵的初等行变换。例:A=[1218;12310;23113;1229]A=121812310231131229B=rref(A)B=1003010200110000
矩阵的秩用函数rank求矩阵的秩。例:a=[120;25-1;410-1];b=rank(a)b=3
矩阵的分解矩阵的LU分解矩阵的QR分解矩阵的QZ分解矩阵的乔累斯基分解矩阵的奇异值分解矩阵的特征值分解矩阵的Schur分解
矩阵的LU分解矩阵的LU分解是线性方程组求解方法中高斯消去法的基础,在MATLAB中由函数lu来实现。
矩阵的QR分解在MATLAB中,QR分解可由函数qr实现。常用的调用格式如下:[B,C]=qr(A)返回的矩阵C为上三角矩阵,矩阵B为满秩矩阵。[Q,R,E]=qr(A)返回的矩阵E是置换矩阵,矩阵R是上三角矩阵,矩阵Q是满秩矩阵。上述矩阵满足关系A*E=Q*R。
矩阵的QZ分解在MATLAB中,QZ分解可由函数qz来实现。qz函数常用的调用格式如下:[AA,BB,Q,Z,V]=qz(A,B)要求矩阵A,B是方阵。产生的矩阵AA,BB是上三角矩阵,Q,Z是正交矩阵,矩阵V是特征矢量矩阵。其中,满足Q*A*Z=AA与Q*B*Z=BB。[AA,BB,Q,Z,V]=qz(A,B,flag)对于方阵A,B的QZ分解取决于参数flag。参数flag可取"complex"与"real"。
矩阵的乔累斯基分解设矩阵A为n阶对称正定矩阵,则A矩阵可分解为LL,即A=LL。其中,矩阵L是上三角矩阵。此时,这种分解就称为乔累斯基分解。在MATLAB中,乔累斯基分解由函数chol实现。
矩阵的奇异值分解在MATLAB中,矩阵的奇异值分解由函数svd来实现,其调用格式为[b,c,d]=svd(A)
矩阵的特征值分解在线性代数中,很多情况下需要求矩阵的特征值。MATLAB中求矩阵特征值的函数是eig和eigs。其中函数eigs主要应用于稀疏矩阵。
矩阵的Schur分解在MATLAB中,矩阵的Schur分解由Schur函数来实现,其调用格式为[b,c]=schur(A)其中c矩阵为Schur矩阵。
线性方程组的求解方形系统超定系统不定系统
矩阵的特征值和特征向量在MATLAB中,矩阵的特征值运算用函数eig或eigs实现。其中,eigs函数主要针对矩阵为稀疏矩阵的情况。
符号矩阵符号矩阵的四则运算符号矩阵的转置运算符号矩阵的行列式运算符号矩阵的求逆运算符号矩阵的求秩运算符号矩阵的常用函数运算符号矩阵常用线性方程(组)的求解
稀疏矩阵MATLAB中,创建稀疏矩阵一般用函数sparse或spdiags来实现。稀疏矩阵由于存储空间变小,而且MATLAB专门开发了针对它的算法,因此对稀疏矩阵的运算速度也非常快。
第8章概率论与数理统计的MATLAB实现随机变量及其分布多维随机变量及其分布随机变量的数字特征样本描述参数估计假设检验方差分析一元线性回归
随机变量及其分布离散型随机变量及其分布律连续型随机变量及其概率密度分布函数逆累加分布函数
离散型随机变量及其分布二项分布泊松分布离散均匀分布几何分布超几何分布
连续型随机变量及其概率密度连续型均匀分布指数分布正态分布
分布函数对于离散型随机变量X,设x为任意实数,X的分布函数为对于连续型随机变量X,假设其概率密度为f(x),则其分布函数为
逆累加分布函数逆累加分布函数是累加分布函数的逆函数。利用逆累加分布函数,可以求得满足给定概率时随机变量对应的置信区间的最小值和最大值。
多维随机变量及其分布用mvnpdf和mvncdf函数可以计算二维正态分布随机变量在指定位置处的概率和累积分布函数值。下面左图和右图分别为二维正态分布随机变量的概率密度图和累积分布图。
随机变量的数字特征期望方差常见分布的数学期望和方差协方差和相关系数矩和协方差矩阵
样本描述集中趋势包括算术平均值、几何均值、调和均值、中值和截尾均值等。离中趋势包括均值绝对差、极差、方差和标准差等。抽样分布包括卡方分布、t分布和F分布等。
参数估计点估计可以用矩法和最大似然法进行参数估计。区间估计可以用mle函数,利用最大似然估计法进行参数的区间估计。常见分布的参数估计MATLAB统计工具箱提供了多种函数的参数估计函数,详见课本。
假设检验方差已知时的均值检验方差未知时单个正态总体均值的检验方差未知时两个正态总体均值差的检验基于成对数据的检验分布拟合检验
方差已知时的均值检验用ztest函数在给定方差的条件下检验单样本数据是否服从给定均值的正态分布。
方差未知时单个正态总体均值的假设检验t检验是用小样本检验总体参数,特点是在均方差不知道的情况下,可以检验样本平均数的显著性。用ttest函数进行样本均值的t检验。
方差未知时两个正态总体均值差的检验ttest2函数对两个样本的均值差异进行t检验。
基于成对数据的检验实际工作中为了比较两种方法或两种产品的差异,常常需要进行对比试验。这样得到的数据具有成对的特点。分析这种数据,还是需要t检验。前面用到的ttest函数可以进行检验。
分布拟合检验q-q图峰度-偏度检验秩和检验
q-q图q-q图用变量数据分布的分位数与所指定分布的分位数之间的关系曲线来检验数据的分布。如果两个样本来自同一分布,则图中数据点呈现直线关系,否则为曲线关系。
峰度-偏度检验峰度-偏度检验又称为Jarque-Bera检验,评价给定数据服从未知均值和方差的正态分布的假设是否成立。该检验基于数据样本的偏度和峰度。对于正态分布数据,样本偏度接近于0,样本峰度接近于3。
秩和检验秩和检验可检验两个总体是否相等。用ranksum函数检验两个样本是否取自中值相同的总体。
方差分析单因子方差分析用anova1函数进行单因子方差分析。双因子方差分析用anova2函数进行双因子方差分析。
一元线性回归进行一元线性回归MATLAB中可以使用polyfit函数实现一元线性回归。对于给定的数据,该函数返回一元线性回归方程的系数。可化为一元线性回归的曲线回归问题在实际应用过程中,人们遇到的更多是非线性问题,通过变换,有的非线性问题可以转换为线性问题,从而可以用线性回归的方法来处理。
第9章最优化方法的MATLAB实现一维搜索问题线性规划无约束非线性最优化问题有约束非线性最优化问题
一维搜索问题求解单变量最优化问题的方法有很多种。如果函数的导数容易求得,一般来说首先考虑使用三次插值法,因为它具有较高的效率。对于只需要计算函数值的方法,二次插值法是一个很好的方法,它的收敛速度较快,在极小点所在区间较小时尤其如此。黄金分割法则是一种十分稳定的方法,并且计算简单。由于以上原因,MATLAB优化工具箱中用得较多的方法是二次插值法、三次插值法、二次三次混合插值法和黄金分割法。
利用fminbnd函数找到固定区间内单变量函数的最小值。例:对边长为3m的正方形铁板,在4个角处剪去相等的正方形以制成方形无盖水槽,问如何剪法使水槽的容积最大?解:假设剪去的正方形的边长为x,则水槽的容积为现在要求在区间(0,1.5)上确定一个x,使最大化。因为优化工具箱中要求目标函数最小化,所以需要对目标函数进行转换,即要求最小化。首先编写M文件fminbndtest.m:functionf=myfun(x)f=-(3-2*x).^2*x;然后调用fminbnd函数:x=fminbnd(@fminbndtest,0,1.5)得到问题的解:x=0.5000即剪掉的正方形的边长为0.5m时水槽的容积最大。
线性规划线性规划问题的矩阵形式为线性规划的标准形式要求使目标函数最小化,约束条件取等式,变量b非负。不符合这几个条件的线性模型要首先转化成标准形式。在MATLAB工具箱中,可用linprog函数求解线性规划问题。
无约束非线性最优化问题求解无约束最优化问题的方法主要有两类,即直接搜索法和梯度法。直接搜索法适用于目标函数高度非线性,没有导数或导数很难计算的情况。常用的直接搜索法为单纯形法,此外还有Hooke-Jeeves搜索法、Pavell共轭方向法等。在函数的导数可求的情况下,梯度法是一种更优的方法。常见的梯度法有最速下降法、Newton法、Marquart法、共轭梯度法和拟牛顿法等。MATLAB优化工具箱中用于求解无约束非线性规划问题的函数有fminunc和fminsearch。
有约束非线性最优化问题有约束非线性最优化问题的数学模型为其中,x,b,beq,lb,和ub为矢量,A和Aeq为矩阵,c(x)和ceq(x)为函数,返回标量。f(x),c(x),和ceq(x)可以是非线性函数。利用fmincon函数求多变量有约束非线性函数的最小值。
第10章复变函数的MATLAB实现构造复数(矩阵)复数运算复变函数的图形
构造复数(矩阵)用complex函数构造复数。语法格式为c=complex(a,b)其中,a和b分别表示复数的实部和虚部,必须是标量或大小相同的向量、矩阵或多维数组。输出结果c=a+bi,其大小与输入参数的相同。
复数的实部和虚部用real函数返回复数的实部。用imag函数返回复数的虚部。
共轭复数用conj函数计算复数的共轭值。该函数的语法格式为ZC=conj(Z)其中Z为复数数组。
复数的模用abs函数求复数的模。该函数的调用格式为abs(Z)返回复数的模,等价于sqrt(real(Z).^2+imag(Z).^2)。
复数的辐角用angle计算复数的辐角。该函数的语法格式为P=angle(Z)
复数的乘除法复数的乘除法运算由“*”和“/”实现。例:m=4+2i;n=2-5i;m*nans=18.0000-16.0000im/nans=-0.0690+0.8276i
复数的指数运算用exp函数进行复数的指数运算。该函数的调用格式为Y=exp(Z)其中Z为复数数组。
复数的对数运算用log函数进行复数的对数运算。该函数的调用格式为Y=log(Z)其中Z为复数数组。
复数的平方根运算用sqrt函数进行复数的平方根运算。该函数的调用格式为B=sqrt(Z)该函数返回复数数组Z中每个元素的平方根。
复数的幂运算复数的幂运算的形式为Z^n,结果返回复数Z的次幂。例:(3+i)^2ans=8.0000+6.0000i
复数的三角函数运算复数的三角函数运算函数参见下表。函数名函数功能函数名函数功能sin(x)返回x的正弦函数值asin(x)返回x的反正弦值cos(x)返回x的余弦函数值acos(x)返回x的反余弦值tan(x)返回x的正切函数值atan(x)返回x的反正切值cot(x)返回x的余切函数值acot(x)返回x的反余切值sec(x)返回x的正割函数值asec(x)返回x的反正割值csc(x)返回x的余割函数值acsc(x)返回x的反余割值sinh(x)返回x的双曲正弦值coth(x)返回x的双曲余切值cosh(x)返回x的双曲余弦值sech(x)返回x的双曲正割值tanh(x)返回x的双曲正切值csch(x)返回x的双曲余割值
求方程的复数根用solve函数可以求方程的复数根。例:解方程x2+1=0。z=solve("x^2+1=0")z=i-i如果方程为多项式形式,可以用roots函数进行求解。
复变函数的积分利用int函数,可以求复变函数的不定积分和定积分。例:求积分。symsz;int("exp(z)","z",-pi*i,0)ans=2
绘复变函数的图形绘二维图形绘三维图形
复数(数组、矩阵)的图形可以用plot函数绘复数(数组、矩阵)的图形。语法格式为plot(Z)其中,Z为复数向量或矩阵,等价于plot(real(Z),imag(Z))。
复变函数的三维图形假设f(z)为复变函数,在指定的范围内,用曲面的高度表示实部(real(f(z))),颜色表示虚部(imag(f(z))),颜色映射通过变化HSV颜色模型中的饱和度。用cplxmap函数绘制复变函数的图形,语法格式为cplxmap(z,f(z),bound),其中,z指定范围,f(z)为复变函数。用cplxgrid函数生成极坐标复数网格。z=cplxgrid(m)是一个(m+1)×(2*m+1)的复数极坐标网格。
复变函数的图形示例绘函数f(z)=z的图形。colormap(hsv(64))z=cplxgrid(30);cplxmap(z,z)title("z")生成下图。绘函数f(z)=z^3的图形。cplxmap(z,z.^3)title("z^3")生成下图。
第11章运筹学的MATLAB实现线性规划与非线性规划整数规划最大最小化多目标决策
线性规划与非线性规划线性和非线性最优化问题请参见第8章8.2~8.4节的内容。二次规划如果某非线性规划的目标函数为自变量的二次函数,约束条件全是线性函数,就称这种规划为二次规划。利用quadprog函数求解二次规划问题。
整数规划主要介绍0-1规划,0-1规划是一种特殊形式的整数规划。用bintprog函数求解0-1规划问题。
最大最小化最大最小化问题的数学模型为式中x,b,beq,lb和ub为矢量,A和Aeq为矩阵,c(x),ceq(x)和F(x)为函数,返回矢量。F(x),c(x)和ceq(x)可以是非线性函数。fminimax使多目标函数中的最坏情况达到最小化。
多目标决策多目标决策问题的数学模型为式中x,weight,goal,b,beq,lb和ub为矢量,A和Aeq为矩阵,c(x),ceq(x)和F(x)为函数,返回矢量。F(x),c(x)和ceq(x)可以是非线性函数。利用fgoalattain函数求解多目标达到问题。
第12章多元统计分析的MATLAB实现多元线性回归分析聚类分析判别分析因子分析
多元线性回归分析多元线性回归的回归模型为y=b0+b1xi1+b2xi2+…bnxin,i=1,2,…,n模型中各系数与常数项通常还是利用最小二乘法来求得。全回归分析回归诊断逐步回归分析
全回归分析用regress函数进行多元线性回归分析,利用该函数得到的是全回归结果。
回归诊断用regstats函数进行线性模型的回归诊断。
逐步回归分析用stepwise函数进行逐步回归,它使用交互环境(如下图)进行分析。
聚类分析主要介绍系统聚类分析方法。系统聚类法是聚类分析中应用最为广泛的一种方法,它的基本原理是:首先将一定数量的样品或指标各自看成一类,然后根据样品(或指标)的亲疏程度,将亲疏程度最高的两类进行合并。然后考虑合并后的类与其他类之间的亲疏程度,再进行合并。重复这一过程,直至将所有的样品(或指标)合并为一类。
系统聚类分析用到的函数函数功能pdist计算观测量两两之间的距离squareform将距离矩阵从上三角形式转换为方形形式,或从方形形式转换为上三角形式linkage创建系统聚类树dendrogram输出冰柱图cophenet计算Cophenetic相关系数cluster根据linkage函数的输出创建分类clusterdata根据数据创建分类inconsistent计算聚类树的不连续系数
判别分析判别分析是利用原有的分类信息,得到体现这种分类的函数关系式(称之为判别函数,一般是与分类相关的若干个指标的线性关系式),然后利用该函数去判断未知样品属于哪一类。对于给定的数据,用classify函数进行线性判别分析,用mahal函数计算马氏距离。
因子分析因子分析是一种降维方法。需要用模型解释数据内部的相关性时,使用因子分析法进行分析。MATLAB中,用factoran函数进行因子分析。
第13章计算方法的MATLAB实现一元非线性方程求解线性方程组的数值解法非线性方程组的数值解法插值曲线拟合数值微分数值积分常微分方程的数值解
一元非线性方程求解可用fzero函数和roots函数求解一元非线性方程。用fzero函数求一元非线性方程的零点。用roots函数计算多项式的根。
线性方程组的数值解法基于矩阵变换的直接解法Jocabi迭代法Gauss-Seidel迭代法SOR(超松弛)迭代法
非线性方程组的数值解法不动点迭代法Newton迭代法拟Newton法
插值一维插值二维插值多维插值Lagrange插值Newton插值
一维插值多项式插值用函数interp1进行一维插值。可选的插值方法包括:最近邻插值线性插值三次样条插值三次插值FFT插值函数interpft用基于FFT的方法进行一维插值。
二维插值用函数interp2进行二维插值。可选的插值方法包括:最近邻插值双线性插值双三次插值
多维插值函数interp3进行三维插值,可选的插值方法包括:最近邻法线性插值三次插值用interpn函数进行更高维数据的插值,同样有最近邻插值、线性插值和三次插值三种方法。
曲线拟合最小二乘法多项式曲线拟合相关工具
最小二乘法最小二乘法通过最小化残差的平方和来获得待定系数的估计。常见的最小二乘法包括线性最小二乘、加权线性最小二乘、稳健最小二乘和非线性最小二乘等。求解非线性最小二乘问题的Gauss-Newton法和Levenberg-Marquart法是老牌算法。
多项式曲线拟合用polyfit函数计算拟合数据集的多项式在最小二乘意义上的系数,调用形式为p=polyfit(x,y,n)x和y是包含要拟合的x和y数据的矢量,n是多项式的阶次。
拟合工具MATLAB支持用下图所示的拟合界面进行曲线拟合。
数值微分数值微分运算数值梯度运算中心差分
数值微分运算可以用diff函数实现数值微分运算。例:x=[375;042];diff(x)ans=-3-3-3
数值梯度运算用gradient函数进行数值梯度运算。例:v=-2:0.2:2;[x,y]=meshgrid(v);z=x.*exp(-x.^2-y.^2);[px,py]=gradient(z,.2,.2);contour(v,v,z),holdon,quiver(v,v,px,py),holdoff
中心差分使用del2函数可以实现中心差分。
数值积分梯形求积Simpson求积Lobatto求积Gauss求积Romberg求积二重积分三重积分
常微分方程的数值解显式和线性隐式常微分方程问题求解完全隐式常微分方程问题求解边界值常微分方程问题求解改进的Eulor法线性多步法
第14章偏微分方程数值解的MATLAB实现一维偏微分方程的求解二维偏微分方程的求解用GUI求解偏微分方程
一维偏微分方程的求解MATLAB使用pdepe求解器求解一维PDE,要求一维PDE具有下面的形式:其中,。区间[a,b]必须是有界区间。m可以是0,1或2,分别表示平面对称、柱面对称和球面对称。如果m>0,则a必须大于等于0。
二维偏微分方程的求解利用MATLAB提供的偏微分方程数值解工具箱,可以求解二维PDE问题。可求解的问题包括椭圆型问题、抛物型问题、双曲型问题、特征值问题和非线性问题等。该工具箱使用有限单元法进行数值求解。
基本二维偏微分方程问题及其求解函数基本二维偏微分方程问题及其求解函数如下表所示。二维偏微分方程问题求解函数椭圆型问题assempde抛物型问题parabolic双曲型问题hyperbolic特征值问题pdeeig非线性问题pdenonlin
用GUI求解偏微分方程在MATLAB命令窗口中输入命令:pdetool,然后单击回车键,显示PDE图形用户界面,如下图所示。可以在该工具中可视地完成整个建模、求解和绘图任务。
用GUI求解偏微分方程的基本步骤一般地,利用PDE图形用户界面求解PDE问题的过程分为以下几步:①选择应用模式;②建立几何模型;③定义边界条件;④定义PDE类型和PDE系数;⑤三角形网格剖分;⑥PDE求解;⑦解的图形表达。其中前5步可称为前处理,第7步可称为后处理。
第15章计算几何的MATLAB实现点与多边形的包含关系矩形的集合运算凸包Delaunay剖分Voronoi图最近邻搜索
点与多边形的包含关系用inpolygon函数可以测试点是否位于在多边形区域内部。
矩形的集合运算MATLAB用rectint函数求矩形区域的交。
凸包二维点集的凸包N维点集的凸包
二维点集的凸包用convhull函数计算平面点集的凸包。例:下面的代码首先在极坐标中生成一系列点,用pol2cart函数将它们转换到笛卡儿坐标,然后用convhull函数计算点的凸包,用plot函数,用红色实线画出凸包线。xx=-1:.05:1;yy=abs(sqrt(xx));[x,y]=pol2cart(xx,yy);k=convhull(x,y);plot(x(k),y(k),"r-",x,y,"b+")
N维点集的凸包用convhulln函数求N维点集的凸包。根据维数的不同,可用不同方法绘convhulln函数输出数据的图形。对于2维情况,使用plot函数绘图。对于3维情况,使用trisurf函数绘图。使用patch函数绘图,对小面颜色可以有更多的控制。对于3维以上的情况,不能绘图。
Delaunay剖分二维Delaunay剖分三维Delaunay剖分N维Delaunay剖分
二维Delaunay剖分对于给定的点集,Delaunay三角网是连接每个点及其相邻点的线段集。可以用delaunay函数实现二维Delaunay三角剖分
三维Delaunay剖分用delaunay3函数进行三维Delaunay剖分。
N维Delaunay剖分用delaunayn函数进行N维Delaunay剖分。
Voronoi图考虑共面点集P,对于P中的每个点Px,总存在一个多边形边界,边界内的点到该点的距离比到其他任何点的距离都小。称这个多边形边界为Voronoi多边形,给定点集的所有Voronoi多边形构成的集合称为Voronoi图。Voronoi图与Delaunay三角网有关—Delaunay三角形外接圆的圆心与Voronoi多边形的顶点重合,如右图所示。
二维Voronoi图用voronoi函数绘二维Voronoi图。例:下面的代码用voronoi函数绘10个随机点的Voronoi图。rand("state",5);x=rand(1,10);y=rand(1,10);voronoi(x,y)
N维Voronoi图用voronoin函数绘N维Voronoi图。
最近邻搜索用desearch函数进行最近点搜索。用dsearchn函数进行N维最近点搜索。用tsearch函数搜索最近Delaunay三角形。
第16章科学计算可视化的MATLAB实现曲面数据的可视化体数据的可视化
曲面数据的可视化表现标量特征—等值线图表现矢量特征—矢量图
等值线图等值线图通过将空间上一定范围内值相等的点依次连线来反映数据的分布特征。用contour函数生成二维等值线图。用contourf函数填充二维等值线图。用contour3函数绘三维等值线图。
矢量图矢量图用箭头显示图中各点处的矢量大小和方向。其中,箭头指示的方向为矢量的方向,箭头的长短表示矢量的大小。用quiver函数绘二维矢量图。用quiver3函数绘三维矢量图。
体数据的可视化表现标量特征表现矢量特征
表现体数据的标量特征可以用剖面图、等值面图、等帽盖图等表现体数据的标量特征。下面左图为剖面图,右图为等值面图和等帽盖图的叠加。
表现体数据的矢量特征科学计算中往往会生成大量矢量数据,使用特定图形表现数据特征,具有直观、高效的特点。MATLAB中提供的用于表现体数据矢量特征的图形有流线图、流管图、流沙图、流锥图、流带图和卷曲图等。下面左图为流线图,右图为流锥图。
第17章图形用户界面设计图形用户界面开发环境(GUIDE)菜单控件对话框GUI设计实例
图形用户界面开发环境启动GUIDE输出编辑器GUIDE模板菜单编辑器对象属性查看器位置调整工具对象浏览器Tab顺序编辑器运行GUIGUIFIG文件和M文件
启动GUIDE在命令窗口中键入guide,启动GUIDE,显示下图所示的“GUIDEQuickStart”对话框。
输出编辑器在GUIDE中打开GUI以后,它显示在输出编辑器中。输出编辑器是所有GUIDE工具的控制面板。
GUIDE模板“GUIDEQuickStart”对话框提供了几种基本类型的GUI模板。使用模板的好处是可以通过修改模板来快速创建GUI。选择一种模板以后,它的预览效果显示在右面的面板中。
菜单编辑器利用菜单编辑器,可以创建、设置、修改下拉式菜单和弹出式菜单。在GUIDE中单击工具栏上的按钮,或者选择“Tools”菜单中的“MenuEditor…”选项,打开菜单编辑器的界面,如下图所示。
对象属性查看器利用对象属性查看器,可以查看每个对象的属性值,也可以修改、设置对象的属性值,从对象设计编辑器界面工具栏上选择,或者选择“View”菜单下的“PropertyInspecter”选项,打开对象属性查看器,如右图所示。
位置调整工具利用对象对齐工具,可以很方便地对对象设计编辑器中对象设计区内多个对象的位置进行调整。从对象设计编辑器界面的工具栏上选择按钮,或者选择“Layout”菜单下的“AlignObjects…”选项,可以打开对象位置调整器,如下图所示。
对象浏览器利用对象浏览器,可查看当前设计阶段的各个句柄图形对象。从对象设计编辑器界面的工具栏上选择,或者选择“Tools”菜单下的“ObjectBrowser”选项,可以打开对象浏览器,如下图所示。
Tab顺序编辑器利用Tab顺序编辑器,可以设置用户按下键盘上的Tab键时,对象被选中的先后顺序。单击工具栏上的按钮,或者选择“Tools”菜单下的“TabOrderEditor…”选项,可以打开Tab顺序编辑器,如下图所示。
运行GUI从“Tools”菜单中选择“Run”选项,或单击按钮,运行GUI。
GUIFIG文件和M文件GUIDE把GUI保存在两个文件中,它们在第一次保存或运行时生成。一个是FIG文件,扩展名为fig,它包含对GUI和GUI控件的完整描述;另一个是M文件,扩展名为m,它包含控制GUI的代码,包括其控件的回调。
菜单创建菜单用命令行方式创建用GUIDE的菜单编辑器创建菜单的属性
控件控件的对象类型创建控件工具栏
控件的对象类型GUIDE提供的基本控件类型如下图所示。
创建控件用命令行方式创建在命令行方式下,可以通过函数uicontrol来建立控件对象。用GUIDE创建在GUIDE设计环境下,通过鼠标拖拉即可完成控件的创建。
工具栏用uitoolbar函数创建空白的工具栏。用uipushtool函数在工具栏上添加命令按钮。用uitoggletool函数创建开关按钮。
对话框一般对话框文件打开对话框文件保存对话框颜色设置对话框字体设置对话框打印页面设置对话框打印预览对话框打印对话框公共对话框帮助对话框出错信息显示对话框信息提示对话框问题显示对话框警告信息显示对话框变量输入对话框列表显示对话框
GUI设计的主要步骤设计GUI完成GUI设置GUI控件的属性GUI编程保存和运行GUI
第18章文件操作文件的打开、保存和关闭读写文本文件读写二进制数据文件使用ImportWizard工具
文件的打开、保存和关闭使用open函数,可以根据扩展名打开文件。也可以用fopen函数打开文件。用save函数将工作空间中的变量保存到磁盘文件中。用fclose函数关闭一个或更多已经打开的文件。
读写文本文件使用load函数,可以将文件中的数据导入到工作空间。用csvread和csvwrite函数实现逗号间隔的文本文件的读写。用dlmread函数将指定间隔方式的文本文件读入矩阵。
读写二进制数据文件使用load函数。用fread函数从文件中读取二进制数据。用fwrite函数将二进制数据写入文件。
使用ImportWizard工具ImportWizard是MATLAB提供的一个导入数据的工具。利用该工具,可以将MAT文件数据、Excel数据、文本数据、图像数据、声音数据甚至AVI数据导入到MATLAB中。
第19章编译与接口MATLAB编译器MATLAB与VisualBasic接口MATLAB与.NET程序接口
MATLAB编译器使用MATLAB编译器可以生成独立应用程序、库、Excel插件、COM对象、.NET组件和Java组件等。使用部署工具进行编译使用mcc进行编译
使用部署工具进行编译部署工具如下图所示。该工具是MATLAB最近的版本推出来的,它将可执行程序、库和组件的编译任务集成到一个统一的编译环境下。
使用mcc进行编译mcc是调用MATLAB编译器的MATLAB命令,可以从MATLAB命令行或DOS命令行发出mcc命令。
MATLAB与VisualBasic接口MATLAB与VisualBasic接口可以有多种手段,从传统的DDE,OLE到ActiveX控件、COM组件技术等都可以使用。本书主要介绍MATLAB的.NET生成器,利用它生成COM组件,并实现与VisualBasic的接口。详细内容请参见19.2节。
MATLAB与.NET程序接口使用.NET生成器,还可以生成.NET组件,用于.NET程序中。详细内容请参见19.3节。
第九节便秘中医内科学脾胃系病证
[概述]一、定义1、定义:便秘是指粪便在肠内滞留过久,秘结不通,排便周期延长,或周期不长,但粪质干结,排出艰难,或粪质不硬,虽有便意,但便而不畅的病证。2、包括:排便周期延长,秘结不通周期不长,但粪质干结,排出艰难粪质不硬,虽有便意,但便而不畅
二、文献摘要(一)病名和临床表现1、《伤寒杂病论》则提出便秘当从阴阳分类2、金元时期,张洁古首倡实秘、虚秘之别(二)病因病机1、《内经》认为大小便的病变与肾的关系密切。2、《金匮要略·五脏风寒积聚病脉证并治》阐明胃热过盛,脾阴不足,以致大便干燥而坚的病机与证治。(三)临床治疗《金匮要略·五脏风寒积聚病脉证并治》“趺阳脉浮而涩,浮则胃气强,涩则小便数,浮涩相搏,大便则坚,其脾为约。麻仁丸主之。”
三、范围1、以便秘为主要症状的辨证论治,类似于西医学的功能性便秘。2、肠道激惹综合征、肠炎恢复期肠蠕动减弱引起的便秘,直肠及肛门疾患引起的便秘,药物性便秘,内分泌及代谢性疾病的便秘,以及肌力减退所致的排便困难。
[病因病机]一、病因1.饮食不节2.情志失调3.年老体虚4.感受外邪
(二)病机饮酒过多过食辛辣肥甘厚味,导致肠胃积热大便干结;恣食生冷阴寒凝滞,胃肠传导失司造成便秘。忧愁思虑过度久坐少动气机郁滞,不能宣达通降失常,传导失职,糟粕内停,不得下行大便秘结。素体虚弱气虚则大肠传送无力气虚则大肠传送无力气血两亏病后、产后及年老体虚之人血虚则津枯肠道失润阴亏则肠道失荣大便干结,便下困难阳虚则肠道失于温煦,阴寒内结,便下无力
外感寒邪阴寒内盛,凝滞胃肠失于传导糟粕不行冷秘。热病之后肠胃燥热,耗伤津液大肠失润大便干燥,排便困难。
(三)病因病机小结1、病位及涉及脏腑:在大肠,同时与肺、脾、胃、肝、肾等脏腑的功能失调有关。2、病性:可概括为寒、热、虚、实四个方面。3、走势:单纯性便秘,只需用心调治,则其愈较易,预后较佳。若属它病兼便秘者,则须察病情的新久轻重。1)、热病之后,余热未清,伤津耗液而大便秘结者,调治得法,热去津复,预后易佳。2)、噎膈重症,常兼便秘,甚则粪质坚硬如羊矢,预后甚差。3)、老年性便秘和产后便秘,多属虚证。因气血不复,大便难畅,阳气不通,阴寒不散,便秘难除,因而治疗时难求速效。
[诊查要点]一、诊断依据主症:1、排便间隔时间超过自己的习惯1天以上,或两次排便时间间隔3天以上。2.大便粪质干结,排出艰难,或欲大便而艰涩不畅。兼症:常伴腹胀、腹痛、口臭、纳差及神疲乏力、头眩心悸等症。病史及诱发因素:常有饮食不节、情志内伤、劳倦过度等病史或诱发因素。发病特点:起病较缓,多表现为慢性病变过程。
二、病证鉴别便秘与肠结相同点不同点急缓及病因表现兼症便秘皆为大便秘结不通慢性久病大肠传导失常所致腹部胀满,大便干结艰行,可有矢气和肠鸣音,或有恶心欲吐,食纳减少肠结多为急病大肠通降受阻所致腹部疼痛拒按,大便完全不通,且无矢气和肠鸣音严重者可吐出粪便
三、相关检查1、大便常规、潜血试验和直肠指检应是常规检查的内容。直肠指检有助于发现直肠癌、痔、肛裂、炎症、狭窄及外采压迫、肛门括约肌痉挛等。2、腹部平片可有助于确定肠梗阻的部位,对假性肠梗阻的诊断尤有价值。3、钡剂灌肠适用于了解钡剂.通过胃肠道的时间、小肠与结肠的功能状态,亦可明确器质性病变的性质、部位与范围。4、此外,可根据临床估计器质性病变部位的高低,选用直肠镜、乙状直肠镜或纤维结肠镜进行检查。5、应除外其他内科疾病中所出现的便秘症状,本病中老年多发。
[辨证论治]一、辨证要点便秘的辨证当分清虚实,实者包括热秘、气秘和冷秘,虚者当辨气虚、血虚、阴虚和阳虚的不同。
联系实证邪滞日久气血不足或阳虚阴亏转化虚症耗伤正气虚症停积日久化燥为实本虚标实
二、治疗原则以通下为主实秘----祛邪(泻热,温散,通导)虚秘----扶正(益气温阳,滋阴养血)
三、证治分类1.热秘主症:大便干结,腹胀腹痛,口干口臭兼症:面红心烦,或有身热,小便短赤舌脉:舌红,苔黄燥,脉滑数。证机概要:肠腑燥热,津伤便结。治法:泻热导滞,润肠通便。代表方:麻子仁丸加减。
2.气秘主症:大便干结,或不甚干结,欲便不得出,或便而不爽,肠鸣矢气兼症:腹中胀痛,嗳气频作,纳食减少,胸胁痞满舌脉:舌苔薄腻,脉弦。证机概要:肝脾气滞,腑气不通。治法:顺气导滞。代表方:六磨汤加减。
3.冷秘主症:大便艰涩,腹痛拘急,胀满拒按兼症:胁下偏痛,手足不温,呃逆呕吐舌脉:舌苔白腻,脉弦紧。证机概要:阴寒内盛,凝滞胃肠。治法:温里散寒,通便止痛。代表方:温脾汤合半硫丸加减。
(二)虚秘1.气虚秘主症:大便并不干硬,虽有便意,但排便困难,用力努挣兼症:汗出短气,便后乏力,面白神疲,肢倦懒言舌脉:舌淡苔白,脉弱证机概要:脾肺气虚,传送无力。治法:益气润肠。代表方:黄芪汤加减。
2.血虚秘主症:大便干结,面色无华兼症:头晕目眩,心悸气短,健忘,口唇色淡舌脉:舌淡苔白,脉细证机概要:血液亏虚,肠道失荣。治法:养血润燥。代表方:润肠丸加减。
3.阴虚秘主症:大便干结,如羊屎状,形体消瘦,潮热盗汗兼症:头晕耳鸣,两颧红赤,心烦少眠,腰膝酸软舌脉:舌红少苔,脉细数证机概要:阴津不足,肠失濡润。治法:滋阴通便。代表方:增液汤加减。
4.阳虚秘主症:大便干或不干,排出困难,四肢不温,腹中冷痛兼症:小便清长,面色咣白,或腰膝酸冷舌脉:舌淡苔白,脉沉迟证机概要:阳气虚衰,阴寒凝结。治法:温阳通便。代表方:济川煎加减。
李X,男,19岁。于3月间发生天花,其形颇顺,饮食如常,但大便二十天未解,皮肤结痂末实,始而神志尚清,突于午后烦躁不宁,胸中气满,腹中作胀,夜卧不安,肢肿臂溃,脉难以取,观其虽在壮年,疮未结痂,胃腑结热,又系症实。实症宜攻,攻则气脱。再四思维,拟兼顾并筹之法。方用补中益气汤以护其中而升其气,大承气汤荡涤热邪,以下其一方两法,分煎合服。方用:黄芪6克党参4.5克白术4.5克陈皮3克升麻1.5克柴胡1.5克炙草1.5克当归4.5克(另煎合服)大黄1.5克枳实2.1克厚朴3克芒硝1.5克(另煎合服)药后便通热退,而痂亦结,1剂而愈。
此证属于气虚与热结虚实夹杂。实证宜清热通下,虚证宜补,若欲双全,则应补中益气与荡涤结热同时并举,通下为要,寓泻于补,下而不伤正气,掌握了补益通下之妙。然而两方另煎合服,治法颇奇。
1呕吐病因及病位、发病机理。泄泻与痢疾临床如何鉴别。男,45岁,5月15日就诊四年前9月14日晚因天热露宿至鸡鸣,次日即少腹痛,经西药治疗疼痛消失。旬日后腹痛再作,此后反复发作4年之久,虽经中西医多方治疗,病情仍每况愈下。近3月来发作频繁,甚则5-7日一发,病势急迫,几不欲生。就诊时患者面色苍白,双手压腹,口中呻吟,恶心欲吐,四末逆冷,腹部喜暖,按之柔软,小腹胀痛,痛区散见核桃大小包块,按之柔软,揉按则可行消散,少顷包块兀自又起,二便尚调,舌质稍淡,苔薄白,脉沉细弦。
谢谢'
您可能关注的文档
- 最新LSMW详细教程课件PPT.ppt
- 最新LUNG-HRCTBASICINTERPRETATION肺部高分辨率CT征象课件PPT.ppt
- 最新LTE网络拓扑结构专题-LTE和CDMA系统内干扰对比课件PPT.ppt
- 最新M3U3高三单元复习课件PPT.ppt
- 最新M3U3课件课件PPT.ppt
- 最新m7u1-project-(读写作文)课件PPT.ppt
- 最新matlab-函数逼近与拟合法课件PPT.ppt
- 最新Materials-Studio培训学习教程资料课件PPT.ppt
- 最新matlab教程(第3讲-数组)资料课件PPT.ppt
- 最新MATLAB在自动控制原理中的应用课件PPT.ppt
- 最新matlab在数字图像处理中的应用3课件PPT.ppt
- 最新MATLAB图像处理编程与应用 教学课件 张涛 第9章 图像分割课件PPT.ppt
- 最新Matlab数字图像处理9[方案]课件PPT.ppt
- 最新MBA-G民生股改引发的思考课件PPT.ppt
- 最新MBTI职业性格测试_图文_1494319167.课件PPT.ppt
- 最新MBTI职业性格分析课件PPT.ppt
- 最新MBTI性格测试2804217课件PPT.ppt
- 最新MC9328-MX1处理器简介资料课件PPT.ppt