![Matlab知识点](https://img.doczj.com//img60/02wo0nr5s6umqoqjhc9v-01.webp)
Matlab知识点
- 格式:doc
- 大小:290.00 KB
- 文档页数:34
![Matlab知识点](https://img.doczj.com//img60/02wo0nr5s6umqoqjhc9v-01.webp)
零、帮助
1、help命令:如help fun 显示某函数的功能和语法描述。如help sin。若单独使用help
命令,则显示出帮助主题。
2、lookfor命令:如lookfor XYZ 在所有的M文件中查找XYZ关键词。
一、变量
1、Matlab区分大小写;标准函数及命令字母必须小写。
2、命令后加分号,则不显示运算结果。
3、注释以%开头。
4
5、who、whos命令:显示工作空间中的变量清单或列表。
6、clear命令:删除工作空间中的变量。
7、较大矩阵数值的输入:在命令窗口中向一个新变量赋空阵,在工作空间窗口中双击该变
量,打开变量编辑器,填表即可。
8、save命令:把一些变量存储到磁盘文件(.mat),文件名中不能出现后缀。
9、load命令:将文件中的变量调入内存。
10、单个数据的算术运算只是矩阵运算的特例。
11、常用算术运算符:+ - * / \ ^ ( )
12、关系运算符:< <= > >= == ~=(不等于)
13、逻辑运算符:&(与)、|(或)、~(非)
二、常用数学函数
1、三角函数以弧度为单位。
2、abs函数还可求字符串的ASCII码。
3、这些函数几乎都可以针对向量或矩阵进行运算。
三、数据的输出格式
1、format命令:设置或改变数据输出的格式。其格式符如下:
四、矩阵运算(向量是特殊的矩阵)
1、直接输入法建立矩阵:矩阵元素用方括号括起来,按矩阵行顺序输入各元素,同一行各
元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。如:A=[1,2,3;4,5,6]
2、利用.m文件建立矩阵:即将矩阵的赋值命令写入到一个.m文件中,并运行该文件。
3、利用冒号表达式建立一个向量:A=e1:e2:e3 其中,e1为初始值、e2为步长、e3为终止
值。e2可省略,如A=e1:e3,则步长为1。
4、linspace函数:也可产生一个行向量,如A=linspace(a,b,n) 其中,a为第1个元素,
b为最后一个元素,n为元素总数。n可省略,默认产生100个元素。
5、利用已建好的矩阵建立更大的矩阵:如:A=[B,C;C,B]。
6、矩阵元素的引用:如A(3,2)=200 即对矩阵A的第3行第2列的元素赋值为200。若赋值
时给出的下标超出范围,则将对A进行扩展,扩展后的未赋值矩阵元素置0。
7、矩阵按列存储。矩阵元素也可按序号进行引用,如A(2)=100。
8、size函数:如[l,c]=size(A),返回两个元素的向量,分别是矩阵A的行数和列数。
9、sub2ind函数:如sub2ind(size(A),l,c),返回矩阵A的第l行第c列元素的序号。
10、ind2sub函数:如[l,c]=ind2sub(size(A),n),返回矩阵A中序号为n的元素的行列下
标值。
11、length函数:如length(A) 返回矩阵A的行数和列数中的较大者。
12、ndims函数:如ndims(A) 返回A的维数。
13、利用冒号表达式获得子矩阵
①如A(a,:) 表示矩阵A的第a行的全部元素。
②如A(:,b) 表示矩阵A的第b列的全部元素。
③如A(a:b,:) 表示矩阵A的第a行至第b行的全部元素。
④如A(:,a:b) 表示矩阵A的第a列至第b列的全部元素。
⑤如A(a:b,c:d) 表示矩阵A的第a行至第b行内的且在第c列至第d列中的所有元素。
⑥如A(end,:) 表示矩阵A的最后一行的全部元素。
⑦如A([a,b],c:end) 表示矩阵A的第a和第b两行中第c列至最后一列的全部元素。
14、A(:) 将矩阵A的每一列元素堆叠起来,成为一个列向量。
15、空矩阵:如A=[]
16、利用空矩阵删除矩阵元素:如A(:,[a,b])=[] 即删除矩阵A的第a列和第b列元素。
17、reshape函数:如reshape(A,m,n) 在矩阵A总元素个数保持不变的前提下,将矩阵A
重新排成m行n列的矩阵。该函数不改变矩阵元素个数和存储结构。
18、通用的特殊矩阵
① zeros函数:产生全0矩阵,即零矩阵。
② ones函数:产生全1矩阵,即幺矩阵。
③ eye函数:产生单位矩阵。
④ rand函数:产生0到1之间均匀分布的随机矩阵。
⑤ randn函数:产生均值为0、方差为1的标准正态分布随机矩阵。
⑥以上函数的用法类似,如zeros(n)产生n行n列的零矩阵、zeros(m,n)产生m行n
列的零矩阵。
⑦如a+(b-a)*rand(n) 即在区间[a,b]内均匀分布的产生n阶随机矩阵。
⑧如a+sqrt(b)*randn(n) 即产生均值为a、方差为b的n阶正态分布随机矩阵。
19、专门的特殊矩阵
① magic函数:如magic(n) 产生n阶魔方矩阵。
② vander函数:如vander(V) 产生以向量V为基础向量的范德蒙矩阵。
③ hilb函数:如hilb(n) 产生n阶希尔伯特矩阵。
④ invhilb函数:如invhilb(n) 产生n阶希尔伯特矩阵的逆矩阵。
⑤ toeplitz函数:如toeplitz(C,R) 产生以向量C为第1列,向量R为第1行的托普
利兹矩阵;如toeplitz(C) 产生以向量C生成的对称托普利兹矩阵。
⑥ compan函数:如compan(P) 产生多项式的伴随矩阵,P为多项式的系数向量。
⑦ pascal函数:如pascal(n) 产生n阶帕斯卡矩阵。
20、矩阵基本算术运算
①加减:如C=A+B、C=A-B 其中,A与B同维;另外,A或B也可以是标量。
②乘法:如C=A*B 其中,A或B也可以是标量。
③除法:如C=A\B(左除,相当于A的逆左乘B)、C=A/B(右除,相当于B的逆右乘A),
其中,A或B也可以是标量。
④幂:如C=A^x 其中,x是一个数(可以是复数)。
21、点运算:在有关的算术运算符前面加点,表示两个矩阵对应元素进行相关运算,要求两
个矩阵同维。如:C=A.*B、C=A./B、C=A.^x、C=A.^B(A与B同维)、C=x.^A(x为标量,A为矩阵)
22、函数运算:如C=sin(A) A为矩阵,则对A的每一个元素求其正弦值,运算结果是与A
同维的矩阵(或向量)。
23、关系运算
①运算符:< <= > >= == ~=(不等于)。
② 1表示真、0表示假。
③如:C=A
C为0、1矩阵。
④参加运算的A或B也可以是标量。
24、逻辑运算
①运算符:&(与)、|(或)、~(非)。
②非零元素为真,用1表示;零元素表示假,用0表示
③如:C=A&B、C=~A 其中,A与B同维,且相同位置的对应元素进行逻辑运算,结果C
为0、1矩阵。
④参加运算的A或B也可以是标量。
25
位置的元素值。
26、diag函数
①如B=diag(A) 即提取矩阵A的主对角线元素,形成向量B。
②如B=diag(A,k) 即提取矩阵A的第k条对角线元素,形成向量B。(即与主对角线平
行,向上为第1条、第2条、…,向下为第-1条、第-2条、…,主对角线为第0条)
③如B=diag(V) 其中V是m个元素的向量,此时,产生一个m阶对角矩阵B,其主对
角线元素为向量V的元素。
④如B=diag(V,k) 其中V是m个元素的向量,此时,产生一个(m+|k|)阶对角矩阵B,
其第k条对角线元素为向量V的元素。
27、triu函数
①如B=triu(A) 即提取矩阵A的上三角元素,形成向量B。
②如B=triu(A,k) 即提取矩阵A的第k条对角线以上的元素,形成向量B。
28、tril函数:提取矩阵的下三角,与triu函数类似。
29、矩阵的转置:如B=A’。
30、rot90函数:将矩阵A按逆时针旋转90度的k倍。如B=rot90(A,2) 即矩阵A逆时针旋
转180度。当k为1时可省略,如B=rot90(A)。
31、fliplr函数:将矩阵A进行左右翻转。如B=fliplr(A)。
32、flipud函数:将矩阵A进行上下翻转。如B=flipud(A)。
33、inv函数:求矩阵的逆。如B=inv(A) 其中A为满秩的方阵。
34、pinv函数:求矩阵的伪逆。如B=pinv(A) 其中A可以不是方阵或非满秩的方阵。
35、det函数:求方阵的行列式值。如d=det(A)。
36、rank函数:求矩阵的秩。如r=rank(A)。
37、trace函数:求矩阵的迹。如t=trace(A)。
38、norm函数:求向量或矩阵的范数。
①如v=norm(A,1) 求向量或矩阵的1-范数。
②如v=norm(A) 或 v=norm(A,2) 求向量或矩阵的2-范数。
③如v=norm(A,inf) 求向量或矩阵的无穷范数。
39、cond函数:求矩阵的条件数
①如c=cond(A,1) 求矩阵A的1-范数下的条件数。
②如c=cond(A) 或 c=cond(A,2) 求矩阵A的2-范数下的条件数。
③如c=cond(A,inf) 求矩阵A的无穷范数下的条件数。
40、eig函数:求矩阵的特征值与特征向量。
①如E=eig(A) 求矩阵A全部特征值,形成向量E。
②如[V,D]=eig(A) 通过对矩阵A进行相似变换求A的全部特征值构成对角阵D,并求
A的特征向量构成V的列向量。
③如[V,D]=eig(A,’nobalance’) 与②类似,但不是通过相似变换求解,而直接进行
求解。
41、矩阵的超越函数
① sqrtm函数:如B=sqrtm(A) 求矩阵A的平方根。相当于A^0.5。
② logm函数:如B=logm(A) 求矩阵A的自然对数。
③ expm函数:如B=expm(A) 求自然常数e的A次幂。
④ funm函数:如B=funm(A,@fun) 即求直接作用于矩阵A的由fun指定的超越函数值。
如B=funm(A,@sin),这里fun可以是exp、log、sin、cos、sinh、cosh。
42、稀疏矩阵
①采用三元组按列存储。
② sparse函数:如S=sparse(A) 将矩阵A转化为稀疏存储方式的矩阵S;S=sparse(m,n)
生成一个m行n列的所有元素都是0的稀疏矩阵S;S=sparse(U,V,A) 其中U、V、A 是3个等长的向量,A是要建立的稀疏矩阵的非零元素向量,U和V分别是对应的行和列下标值向量。
③ find函数:如[U,V,A]=find(S) 返回矩阵S中非零元素的下标和元素。
④ full函数:如A=full(S) 返回和稀疏矩阵S对应的完全存储方式矩阵。
⑤ spconvert函数:如S=spconvert(A) 其中A是一个m行3列或m行4列的矩阵,m
是非零元素的个数,A的4个列的含义依次为非零元素所在的行、非零元素所在的列、非零元素的实部、非零元素的虚部,若非零元素为实数,则无需第4列。
⑥ spdiags函数:如[B,d]=spdiags(A) 从原带状矩阵A中提取全部非零对角线元素赋
给矩阵B及这些非零对角线的位置向量d;又如[B]=spdiags(A,d) 从原带状矩阵A 中提取由向量d所指定的那些非零对角线元素构成矩阵B;又如S=spdiags(B,d,m,n) 利用具有稀疏特征的带状矩阵生成稀疏矩阵S,其中m和n分别为原带状矩阵的行数和列数。
⑦ speye函数:如S=speye(m,n) 返回一个m行n列的稀疏存储的单位矩阵。
⑧稀疏矩阵的运算规则与普通矩阵一样。当参与运算的对象不全是稀疏矩阵时,所得
结果一般是完全存储形式的矩阵。
43、sum函数:如s=sum(V) 当V是向量时,返回该向量全部元素的和;又如S=sum(A) 当A
是矩阵时,返回值S是一个由A中列向量元素之和所构成的行向量。
五、字符串
1、字符串是用单撇号括起来的字符序列。如s='abc'
2、Matlab将字符串当作一个行向量,每个元素对应一个字符。因此,矩阵的许多使用方法
和函数都可以在此进行应用。如s1=s(1:5) 即在s中取子串、k=find(s>='a'&s<='z') 即在s中找出小写字母的位置。
3、也可以建立多行字符串矩阵。如S=['abc';'123'] 但要求各行字符数要相等,或用空格
来调节各行的长度使之彼此相等。
4、常用字符串处理函数
5
6、如disp(['The value of x is',num2str(x)]) 显示字符串及变量值所对应的串值。
六、结构数据
1、结构矩阵的建立:结构矩阵名.成员名=表达式
如:a.x1=10; a.x2=[1,2;3,4]; a(2).x1=20; a(2).x2=[4,3;2,1];
2、结构矩阵元素的成员也可以是结构数据。
3、对结构数据的引用,可以引用其成员,也可引用结构矩阵的元素,也可引用结构变量。
4、结构成员的增加:如a(1).x3=30; 即给结构矩阵的任一个元素增加成员即可,其他成员
均为空值。
5、rmfield函数:删除结构成员。如a=rmfield(a,'x3')
6、关于结构的函数
七、单元数据
1、单元矩阵的各个元素就是不同类型的数据。
2、单元矩阵的建立:和一般矩阵相似,只是矩阵元素用大括号括起来。
如a={10,'a',[1,2;3,4];20,'b',[4,3;2,1]}
3、单元矩阵的引用:用带有大括号下标的形式。如a{2,1}=30。
4、celldisp函数:如celldisp(c) 显示整个单元矩阵。
5、删除单元矩阵中的某个元素:如c(2)=[] 即删除单元矩阵c中的第2个元素。(c{2}=[]
表示将单元矩阵c中的第2个元素置空,但并不删除)
6
八、程序设计
1、利用Matlab编写的程序,称为M文件。是一个文本文件。(Matlab提供的内部函数和各
种工具箱,都是利用Matlab命令开发的M文件)。M文件要放在Matlab的工作目录中或其它目录(将该目录加到Matlab的搜索路径中)
2、M文件的两种类型
①命令文件:没有输入和输出参数;对Matlab工作空间中的变量进行操作,文件中所
有命令的执行结果也完全返回到工作空间中;在Matlab的命令窗口中输入文件名可直接运行。
②函数文件:可以有输入和返回参数;文件中变量为局部变量;需要以函数调用的方
式运行。
3、edit命令:打开文本编辑器;若采用edit 文件名的格式,则打开或新建一个M文件。
4、input函数:如x=input(提示串,选项) 提示串是一个字符串;从键盘输入的数据赋值
给变量x;若输入为字符串,则需要选项’s’;键盘输入时的数据格式与数据赋值时的数据格式一致。
5、disp函数:如disp(A) 其中A是变量,与可以是字符串;显示A的值。又如disp([字
符串,num2str(a)]) 即将字符串与变量值转换为串后一同显示。
6、pause函数:如pause(延迟秒数) 使程序暂停数秒;若直接使用pause函数,则程序暂
停,直至用户按任一键继续;若强行中止程序的运行,可按Ctrl+C组合键。
7、if语句
① if 条件语句组 end
② if 条件语句组 else 语句组 end
③ if 条件语句组 elseif 条件语句组… elseif 条件语句组 else 语句组 end
8、switch语句
switch 表达式
case 值1
语句组1
…
otherwise
语句组n
end
9、try语句
try
语句组1
catch
语句组2
end
try语句执行语句组1,若在执行过程中出错,则将错误信息赋给预定义变量lasterr,并转去执行语句组2。
10、for语句
① for 循环变量=初值:步长:终值循环体语句 end
②步长为1时可省略,即初值:终值
③循环语句的执行速度较慢,有时可用点运算来代替循环。
④ for 循环变量=矩阵表达式循环体语句 end
⑤④格式的执行过程依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直
至各列元素处理完毕。
⑥实际上,(初值:步长:终值)是一个行向量,可视为仅为一行的矩阵,每列是单个数
据。
11、while语句
While 条件循环体语句 end
12、break与continue语句
13、每一个函数文件定义一个函数。其基本格式如下:
function 输出形参表=函数名(输入形参表)
注释说明部分
函数体语句
①当输出形参多于一个时,则应用方括号括起来。
② M文件名与函数名最好一致。
③第一注释行:一般是大写的函数文件名和函数功能简要描述,供lookfor和help命
令使用。
④第一注释行及之后连续的注释行:通常是函数输入输出参数的含义及调用格式说明
等信息,构成全部在线帮助文本。
⑤与在线帮助文本相隔一空行的注释行,一般是诸如作者、修改日期、版本等信息,
用于软件档案管理。
14、return语句:用于从函数文件中返回。
15、函数调用格式:[输出实参表]=函数名(输入实参表)
16、函数调用时各实参出现的顺序、个数应与函数定义时形参的顺序、个数一致。
17、Matlab中,函数可以嵌套(和递归)调用。
18、函数参数的可调性
①在调用函数时,Matlab用两个预定义变量nargin和nargout分别记录调用该函数时
的实际输入实参和输出实参的个数。
②只要在函数文件中包含这两个变量,就可以准确知道该函数文件被调用时的输入输
出参数个数,从而决定函数如何处理。
19、局部变量:函数文件中的变量是局部变量。
20、全局变量:作用域是整个Matlab工作空间。定义格式为:global 变量名列表
①变量名列表中变量之间用空格分隔。
②在编程时,可以在所有需要调用全局变量的函数里定义全局变量。同时,为了在基
本工作空间中使用全局变量,也要定义全局变量。
③在函数文件里,全局变量的定义语句应放在变量使用之前。
④全局变量不受欢迎。
21
九、绘图
1、二维数据曲线图是将平面坐标上的数据点连接起来的平面图;坐标系可以是直角坐标系、
对数坐标系、极坐标系;数据点可以用向量或矩阵形式给出,类型可以是实数或复数。
2、plot函数
①如plot(X,Y) 绘制直角坐标系下的二维曲线,X和Y是等长向量,分别存储x坐标
和y坐标数据,它们构成一系列的点对。
②当X是向量,Y是有一维与X同维的矩阵时,则绘制多根不同颜色的曲线。曲线条数
等于Y矩阵的另一维数,X被作为这些曲线共同的横坐标。
③当X和Y是同维矩阵时,则以X、Y对应列元素为横、纵坐标分别绘制曲线,曲线条
数等于矩阵的列数。
④如plot(X) 当X为实数向量时,以该向量元素的下标为横坐标,元素值为纵坐标画
一条连续折线;当X为复数向量时,则分别以向量元素实部和虚部为横、纵坐标绘制一条曲线。
⑤当X是实数矩阵时,plot(X) 则按列绘制每列元素值相对其下标的多条曲线;当X
是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。
⑥如plot(X1,Y1,X2,Y2,…,Xn,Yn) 绘制多条曲线。其中每一组向量对(Xi,Yi)可以绘
制出一条曲线;每一组向量对的长度可以不同。配对的(Xi,Yi)也可以是矩阵对,则按它们的列元素为横、纵坐标绘制曲线。
⑦该函数一般是先取足够稠密的向量X值,然后计算函数值向量Y来绘图;取点时一
般是等间隔采样。为了提高绘制精度,可采用fplot函数,它可自适应地对函数进行采样,以更好地反映函数的变化规律。
3、plotyy函数:如plotyy(X1,Y1,X2,Y2) 其中(X1,Y1)对应一条曲线、(X2,Y2)对应一条曲
线;两者的横坐标标度相同,纵坐标有两个,左纵坐标用于(X1,Y1)数据对,右纵坐标用于(X2,Y2)数据对。
4、图形保持
①若希望在已存在的图形上再继续添加新的图形,可以使用图形保持命令hold。
② hold on/off 命令用于控制是保持原有图形还是刷新原有图形。
③不带参数的hold命令在两种状态之间进行切换。
5、设置曲线样式
①
②
③
④以上三种选项可组合使用。如plot(X1,Y1,’b-.’,X2,Y2,’y:d’)
⑤当选项省略时,颜色将根据曲线的先后顺序依次采用②表中给出的前7种颜色。
6、图形标注
① title函数:如title(图形名称) 用于说明图形的名称。
② xlabel函数:如xlabel(X轴说明) 用于说明X坐标轴的名称。
③ ylabel函数:如ylabel(Y轴说明) 用于说明Y坐标轴的名称。
④ text函数:如text(x,y,图形说明) 在(x,y)坐标处添加图形说明。
⑤ gtext函数:如gtext(图形说明) 执行该命令时,单击鼠标即可将文本放置在十字
光标处。
⑥ legend函数:如legend(图例1,图例2,…) 用于绘制曲线的图例,图例放置在图形
空白处,用户也可通过鼠标移动图例。
⑦除legned函数外,其他函数也适用于三维图形。
⑧上述函数中的说明文字,除使用标准的ASCII字符外,还可使用LaTeX(一种十分流
行的数学排版软件)格式的控制字符。
7、若干LaTeX格式
①受LaTeX字符串控制的部分要加大括号括起来。
② \bf、\it、\rm分别定义黑体、斜体和正体字符。如'This is {\bf Matlab}'
③如'sin({\omega}t+{\beta})'用于使用希腊字母。
④如'e^{axt}'对应的标注效果为指数形式(即上标形式)。
⑤如'x_{12}'对应的标注效果为下标形式。
8、坐标控制
①一般Matlab绘图时会自动选择合适的坐标刻度。但用户也可以重新设定坐标刻度。
② axis函数:如axis([xmin xmax ymin ymax zmin zmax]) 用于设定绘图时的坐标刻
度,若二维绘图,则只使用前4个参数。
③如axis equal 则横纵坐标采用等长刻度。
④如axis square 则产生正方形坐标系(默认为矩形)。
⑤如axis auto 则使用默认设置。
⑥如axis off/on 则取消或显示坐标轴。
⑦ grid命令:如grid on/off 用于控制画不画风格线,无参数的grid命令在两种状
态下切换。
⑧ box命令:如box on/off 用于控制加不加边框线,无参数的box命令在两种状态下
切换。
9、图形的可视化编辑:Matlab在图形窗口中提供了可视化的图形编辑工具。
10、图形窗口的分割
①有时需要在一个图形窗口内绘制若干个独立的图形,这就需要对图形窗口进行分割;
每一个绘图区可建立独立的坐标系并绘制图形;同一窗口的不同图形称为子图。
② subplot函数:如subplot(m,n,p) 将当前图形窗口分成m行n列个绘图区,区号按
行优先编号,且选定第p个区为当前活动区。
③ plot函数等绘图函数都是在当前活动区内绘制。
④切换活动区仍使用subplot(m,n,p)函数,其中的m、n值同第1次使用时的值相同,
用不同的p值来指定不同的绘图活动区。
11、fplot函数:如fplot(fname,lims,tol,选项) 其中fname是以字符串体现的函数名,
它也可以是由多个分量构成的行向量,各分行可以是函数的直接字符串,但自变量都必须是x;lims是x、y的取值范围,以行向量 [xmin,xmax]或[xmin,xmax,ymin,ymax]两种形式;tol是相对允许误差,默认值为2e-3;选项定义与plot函数相同。
12、对数坐标图形
① semilogx函数:如semilogx(X1,Y1,选项1,X2,Y2,选项2,…) 其中X轴为常用对数
刻度,Y轴仍保持线性刻度。
② semilogy函数:如semilogy(X1,Y1,选项1,X2,Y2,选项2,…) 其中Y轴为常用对数
刻度,X轴仍保持线性刻度。
③ loglog函数:如loglog(X1,Y1,选项1,X2,Y2,选项2,…) 其中X轴和Y轴均采用常
用对数刻度。
④以上函数中的选项与plot函数中的选项一样。
13、polar函数:如polar(theta,rho,选项) 用于绘制极坐标图。其中,theta是由极坐标
极角所构成的向量,rho是与theta向量对应的由极坐标矢径所构成的向量,选项与plot 函数相似。
14、二维统计分析图
① bar函数:如bar(X,Y,选项) 绘制条形图。
② stairs函数:如stairs(X,Y,选项) 绘制阶梯图。
③ stem函数:如stem(X,Y,选项) 绘制杆图。
④以上3个函数的用法与plot函数相似,只是没有多输入形式。
⑤ fill函数:如fill(X1,Y1,选项1,X2,Y2,选项2,…) 按向量元素下标渐增次序依次
用直线段连接X、Y对应元素定义的数据点,并且首尾相连,构成封闭多边形,然后将多边形内部涂满指定的颜色。
⑥ pie函数:如pie(X) 利用向量X,绘制出各元素值占总和的百分比的饼图。
⑦ compass函数:如compass(Z) 利用复数向量Z,绘制出每个复数分量的相量图。
15、隐函数绘图:即ezplot函数
①如ezplot(f) 其中f=f(x),在默认区间(-2*pi,2*pi)内绘制。
②如ezplot(f,[a,b]) 其中f=f(x),在区间(a,b)内绘制。
③如ezplot(f) 其中f=f(x,y),x、y均在默认区间(-2*pi,2*pi)内绘制。
④如ezplot(f,[xmin,xmax,ymin,ymax]) 其中f=f(x,y),x、y在参数所指定的区间内
绘制f(x,y)=0的图形。
⑤如ezplot(f,[a,b]) 其中f=f(x,y),x、y均在区间(a,b)内绘制。
⑥如ezplot(x,y) 其中x=x(t)、y=y(t),t在默认区间(0,2*pi)内绘制。
⑦如ezplot(x,y,tmin,tmax) 其中x=x(t)、y=y(t),t在指定区间内绘制。
⑧以上的f、x、y函数形式可以采用字符串的形式给出。
16、绘制三维曲线:即plot3函数
①如plot3(X1,Y1,Z1,选项1,X2,Y2,Z2,选项2,…,Xn,Yn,Zn,选项n) 与plot函数的
用法十分相似。
②图形标注时还可以使用zlabel函数,与xlabel函数相似。
17、绘制三维曲面
①方法:绘制z=f(x,y)所代表的三维曲面,先要在xy平面内设定一个矩形区域,例如
D=[a,b]*[c,d],然后将[a,b]在x轴方向分成m份,将[c,d]在y轴方向分成n份,即将区域D分成m*n个小矩形,生成代表每一个小矩形顶点坐标的平面网格坐标矩阵,最后利用有关函数求对应网格坐标的Z矩阵。
② meshgrid函数:如[X,Y]=meshgrid(x,y) 其中,x是[a,b]划分成m份后的向量,y
是[c,d]划分成n份后的向量,矩阵X的每一行都是向量x,行数等于向量y的元素个数,矩阵Y的每一列都是向量y,列数等于向量x的元素个数。因此,X和Y相同位置上的元素对恰好是区域D的网格点坐标。当x=y时,该函数可写成meshgrid(x)。
③根据矩阵X和矩阵Y所对应的每一个网格点上的坐标求函数值z,则得到函数值矩阵
Z。显然,X、Y、Z各列或各行所对应坐标对应于一条空间曲线,空间曲线的集合组成空间曲面。
④ mesh函数:如mesh(X,Y,Z,C) 用于绘制三维网格图。其中,X、Y、Z是维数相同的
矩阵,X、Y是网格坐标矩阵,Z是网格点上的高度矩阵,C用于指定在不同高度下的颜色范围(C省略时,认为C=Z,即颜色的设定正比于图形的高度);当X和Y省略时,把Z矩阵的列下标当作x轴坐标、行下标当作y轴坐标;当X和Y是向量时,要求X的长度等于Z矩阵的列,Y的长度等于Z矩阵的行,X和Y向量元素的组合构成网格点的x,y坐标。
⑤ meshc函数:用法与mesh函数相似,不同的是还在xy平面上绘制曲面在在z轴方向
的带等高线。
⑥ meshz函数:用法与mesh函数相似,不同的是还在xy平面上绘制曲面的底座。
⑦ surf函数:用法与mesh函数相似,各线条之间的补面用颜色填充。相应地也可使用
surfc函数。
18、标准三维曲面
① Matlab提供了一些函数用于绘制标准三维曲面,并可利用这些函数产生相应的绘图
数据。也常用于三维图形的演示。
② sphere函数:如[X,Y,Z]=sphere(n) 绘制圆心位于原点,半径为1的单位球体。当
有输出参数时,可产生(n+1)*(n+1)的矩阵X、Y、Z数据;又如sphere(n)可绘制出
多面体表面图,n也可省略,默认值为20。
③ cylinder函数:如[X,Y,Z]=cylinder(R,n) 绘制柱面。其中,R是一个向量,存放
柱面各个等间隔高度上的半径,n表示在圆柱圆周上有n个间隔点,缺省为20。如
cylinder(3)生成一个圆柱;cylinder([10,1])生成一个圆锥。
④ peaks函数(也称多峰函数):在[-3,3]*[-3,3]的矩形区域内划分网格来确定函数值。
如[X,Y,Z]=peaks(n) 将生成n*n的输出矩阵值。
⑤也可利用以上函数所生成的数据,通过mesh或surf函数来绘制。
19、三维统计图形
① bar3函数:绘制三维条形图。如bar3(X) X的每个元素对应于一个条形;又如bar3(X,Y)
在X指定的位置上绘制Y中元素的条形图。
② stem3函数:绘制离散序列数据的三维杆图。如stem3(Z) 将数据序列Z表示为从xy
平面向上延伸的杆图;又如stem3(X,Y,Z) 在X和Y指定的位置上绘制数据序列Z
的杆图,X、Y、Z的维数必须相同。
③ pie3函数:如pie3(X) 用X向量中的数据绘制三维饼图。
④ fill3函数:如fill3(X,Y,Z,C) 在三维空间中绘制出填充过的多边形, 使用X、Y、
Z作为多边形的顶点,而C指定了填充的颜色。
20、waterfall函数:用法与效果与meshz函数相似。如waterfall(X,Y,Z) 它的网格线在
x轴方向出现,具有瀑布效果。
21、等高线图
① contour函数:绘制二维等高线图。如contour(X,Y,Z,n,选项)
② contour3函数:绘制三维等高线图。如contour3(X,Y,Z,n,选项)
③以上函数中的n参数指定高度的等级数。
22、view函数:如view(az,el) 设置视点。
①从不同视点绘制的图形形状是不一样的;视点位置可由方位角和仰角表示。
② az为方位角(又称旋转角):它是视点与三维坐标系原点连线在xy平面上投影与y
轴负方向形成的角度,正值表示逆时针,负值表示顺时针。
③ el为仰角(又称视角):它是视点与原点连线与xy平面的夹角,正值表示视点在xy
平面上方,负值表示视点在xy平面下方。
④ az和el均以度为单位。
⑤系统默认视点定义为方位角-37.5度、仰角30度。
23、色图
①颜色的RGB表示:利用3个元素的向量表示,元素在[0,1]范围内取值,如[1,0.5,0]
表示橙色。
②色图:是一个m*3的数据矩阵,它的每一行是RGB三元组。色图矩阵可人为生成,
也可利用函数来定义。色图的作用是用于对绘制的图形进行着色。
③如M=gray(m) 即生成m*3的色图矩阵M,表示的颜色是灰色由浓到淡。当参数m省
略,则m由当前绘图窗口的色图大小决定,一般默认值为64。
④定义色图矩阵的函数
⑤
⑥ colormap函数:如colormap(M)或colormap(gray) 其中,M为色图矩阵。该函数实
现图形窗口色图的设置和改变。
24、三维表面图形的着色
①三维表面图实际上就是在网格图的每一个网格片上涂上颜色。
② surf函数用默认的着色方式对网格片着色。还可用shading命令来改变着色方式。
③ shading faceted命令:将每个网格片用其高度对应的颜色进行着色,但网格线仍保
留,其颜色为黑色。该方式是默认方式。
④ shading flat命令:将每个网格片用同一个颜色进行着色,且网格线也用相应的颜
色,使表面更光滑。
⑤ shading interp命令:在网格片内采用颜色插值处理,得出的表面最光滑。
25、图形的裁剪:通过将图形中需要裁剪部分对应的函数值设置为NaN,在绘图时,函数值
为NaN的部分将不显示,从而达到对图形进行裁剪的目的。
26、图像处理
① Matlab有一个图像处理工具箱。
② imread函数:如[A,camp]=imread(fname) 读取图像的数据矩阵和色图矩阵。对于灰
度图像,则A为二维矩阵;对于彩色图像,则A为三维矩阵,第3维存储颜色数据。
③ imwrite函数:如imwrite(A,fname,fmt) 其中,fmt为图像文件格式,如bmp、jpg、
gif等。
④ image函数和imagesc函数:如image(A) 用于图像的显示。为了保证图像的显示效
果,一般还应使用colormap(camp)设置图像色图。
27、动画
① getframe函数:返回当前绘图窗口的一个快照(即当前坐标轴值),也称为一帧。
② moviein函数:如M=moviein(n) 建立一个足够大的n列矩阵M,该矩阵用来保存n
幅帧的数据,以备播放。之所以要事先建立一个大矩阵,是为了提高程序运行速度。
③ movie函数:如movie(M,n) 即播放由矩阵M所定义的画面n次,默认时播放1次。
④ M矩阵值的获得:可通过M(:,k)=getframe获得(k可以是一个循环变量)
28、质点轨迹动画
①质点在二维平面或三维空间的运动轨迹曲线也称为彗星轨迹曲线。
② comet函数与comet3函数:如comet(X,Y,p)、comet3(X,Y,Z,p)
③ X、Y、Z为曲线的坐标参数。两者的用法与plot和plot3函数相同。
④ p用于设置彗星长度的参数,默认值为0.1。(可省略不用)
十、数据分析
1、最大值(max函数)和最小值(min函数)
①如y=max(V) 返回向量V的最大值;若V中包含复数,则按模取最大值。
②如[y,l]=max(V) 返回向量V的最大值存入y,最大值的序号存入l。
③如Y=max(A) A为矩阵,返回一个行向量,向量的第i个元素是矩阵A的第i列的最
大值。
④如[Y,U]=max(A) U向量记录每列最大值的序号。
⑤如max(A,[],dim) 其中dim取1或2。取1时与max(A)完全相同;取2时返回一个
列向量,记录矩阵A每行上的最大值与对应的序号。
⑥如U=max(A,B) A、B是两个同型的向量或矩阵,结果U是与A、B同型的向量或矩阵,
U的每个元素等于A、B对应元素的较大者。
⑦如U=max(A,n) n是一个标量,结果U是与A 型的向量或矩阵,U的每个元素等于A
对应元素和n中的较大者。
⑧ min函数的用法与max完全相同。
2、求和(sum函数)与求积(prod函数)
① sum(V) 返回向量V各元素的和。
② prod(V) 返回向量V各元素的积。
③ sum(A) A为矩阵,返回一个行向量,其第i个元素是A的第i列的元素和。
④ prod(A) A为矩阵,返回一个行向量,其第i个元素是A的第i列的元素乘积。
⑤ sum(A,dim) 当dim为1时,等同于sum(A);当dim为2时,返回一个列向量,其第
i个元素是A的第i行的各元素之和。
⑥ prod(A,dim) 当dim为1时,等同于prod(A);当dim为2时,返回一个列向量,其
第i个元素是A的第i行的各元素之乘积。
3、平均值(mean函数)和中值(median函数):两者的用法与sum函数完全一致。
4、累加和(cumsum函数)与累乘积(cumprod函数)
①累加和:若已知数据序列x1,x2,…,xn,则经累加和计算后的结果序列为
y1,y2,...,yn,其中yi=x1+x2+ (xi)
②累乘积:与累加和类似,yi=x1*x2* (xi)
③如V=cumsum(X) 返回向量X的累加和向量。
④如V=cumprod(X) 返回向量X的累乘积向量。
⑤如M=cumsum(A) 返回一个矩阵,其第i列是A的第i列的累加和向量。
⑥如M=cumprod(A) 返回一个矩阵,其第i列是A的第i列的累乘积向量。
⑦如M=cumsum(A,dim) 当dim为1时,等同于cumsum(A);当dim为2时,返回一个
矩阵,其第i行是A的第i行的累加和向量。
⑧如M=cumprod(A,dim) 当dim为1时,等同于cumprod(A);当dim为2时,返回一
个矩阵,其第i行是A的第i行的累乘积向量。
5、标准方差(std函数)与相关系数(corrcoef函数)
①如Y=std(A,flag,dim) A为向量时,返回一个数,即向量的标准方差;当A为矩阵
时,返回一个向量,该向量与dim的含义同上;当flag为0时,按求和后除以(n-1)再开方来计算标准方差;当flag为1时,按求和后除以n再开方来计算标准方差。
默认flag为0、dim为1。
②如M=corrcoef(X) 返回从矩阵X形成的一个相关系数矩阵。M矩阵与X同维。它把X
的每一列作为变量,然后求它们的相关系数。
③如M=corrcoef(X,Y) 其中X、Y为向量,等同于corrcoef([X,y])。
6、排序(sort函数):
①如V=sort(X) 返回一个对向量X中的元素按升序排列的新向量。
②如[Y,I]=sort(A,dim,mode) A为矩阵,dim指明对列还是行进行排序,mode取字符
串ascend按升序(默认)、取字符串descend为降序。结果中的Y矩阵是排好序的结果,I矩阵记录Y中的元素在A中的位置。
7、一维数据插值(interp1函数)
①如Y1=interp1(X,Y,X1,method) 其中,X、Y是两个等长的已知向量,分别存储采样
点和样本点;X1是一个向量或标量,存储欲插值的点;Y1是一个与X1等长的插值结果;字符串参数method是采用的插值方法。
② method取linear:线性插值(默认方法)。
③ method取nearest:最近点插值。
④ method取cubic:3次多项式插值。
⑤ method取spline:3次样条插值。
⑥ X1的取值不能超出X给定的范围,否则会给出NaN错误。
⑦ spline函数:如Y1=spline(X,Y,X1) 即3次样条插值,与interp1在method取值
为spline时完全一样。
8、二维数据插值(interp2函数)
①如Z1=interp2(X,Y,Z,X1,Y1,method)
②其中,X、Y是两个向量,分别存储两个参数的采样点,Z是与参数采样点对应的函
数值;X1、Y1是两个向量或标量,存储欲插值的点;Z1存储插值结果。
③ method的取值与interp1函数一样。同时,X1、Y1的取值不能超范围。
9、n维数据插值(interpn函数)
10、曲线拟合(polyfit函数)
①采用最小二乘法进行曲线拟合,实际上是求一个多项式的系数向量。
②如[P,S]=polyfit(X,Y,m) 函数根据采样点X和采样点函数值Y,产生一个m次多项
式P及其在采样点的误差向量S。要求X、Y是两个等长向量、m的大小不能超过采样点的个数。P的长度为m+1。
11、一维离散傅里叶变换(fft函数与ifft函数)
①如fft(X) 返回向量X的离散傅里叶变换。设X的长度为N,若N为2的幂次,则为
以2为基数的快速傅里叶变换,否则为运算速度很慢的非2幂次的算法。对于矩阵X则应用于矩阵的每一列。
②如fft(X,N) 计算N点离散傅里叶变换。若X的长度小于N,则不足部分补零;若大
于N,则删去超出N的那些元素。对于矩阵X,它同样应于矩阵的每一列。
③如fft(X,[],dim)或fft(X,N,dim) 对于矩阵而言,前者的功能与fft(X)基本相同,
后者与fft(X,N)基本相同。当dim为1时,该函数作用于X的每一列,当dim为2时,则作用于X的每一行。
④当样本数N不是2的幂次时,可以取一个大于N且是2的幂次的值进行计算,则便
可进行快速变换。
⑤ ifft函数:求一维离散傅里叶逆变换,用法与fft相似。
12、多项式计算(多项式以系数向量的方式表示)
①加减法:即向量的加减法,但两者的次数不同时,应该将低次多项式对应的向量高
次项用0补足。
② conv函数:如P=conv(P1,P2) 求多项式P1和P2的乘积。
③ deconv函数:如[Q,R]=deconv(P1,P2) 求多项式P1和P2的除法。其中Q返回P1
除以P2的商式,R返回余式。Q和R仍是多项式的系数向量。
④ polyder函数:如p=polyder(P) 求P的导函数;如p=polyder(P,Q) 求P*Q的导函
数;如[p,q]=polyder(P,Q) 求P/Q的导函数,结果的分子存入p,分母存入q。
⑤ polyval函数:如Y=polyval(P,x) 求代数多项式的值。若x为一数值,则求多项式
在该点的值;若x为向量或矩阵,则对向量或矩阵中的每个元素求其多项式的值。
⑥ polyvalm函数:如Y=polyvalm(P,A) 其中P为多项式,A为方阵,该函数以A为自
变量求多项式的值。
⑦ roots函数:如X=roots(P) 多项式求根。n次多项式有n个根,X为根的向量。
⑧ poly函数:如P=poly(X) X为向量,返回以X为其根的多项式,其系数赋给P。
十一、解方程与最优化问题求解
1、利用直接法求解线性方程组
① X=A\B 即利用左除对方程组AX=B的求解。
②系统会根据系数矩阵选用高斯消元法、主元素消元法、平方根法或追赶法。
③若B为列向量,则可获得方程组的数值解。
④若B为N*M的矩阵,则可同时获得与系数矩阵A相同的M个线性方程给的数值解。
⑤若A是奇异的或接近奇异的,则会给出警告。
⑥若A不是方阵,将会在最小二乘意义下求解。
⑦也可利用矩阵A的逆求解,即x=inv(A)*B。
2、利用矩阵分解法求解线性方程组
①矩阵分解是将一个矩阵分解成若干个矩阵的乘积。
②常见分解有LU分解、QR分解、Cholesky分解、Schur分解、Hessenberg分解和奇
异分解等。
③通过分解法求解线性方程组的优点是运算速度快,节省存储空间。
④ lu函数:即矩阵的LU分解。如[L,U]=lu(A) A为方阵,产生一个上三角矩阵U和一
个变换形式的矩阵L,满足A=LU。又如[L,U,P]=lu(A) A为方阵,产生一个上三角矩阵U和一个下三角矩阵L以及一个置换矩阵P,满足PA=LU。此时,求解方程组AX=B,则X=U\(L\B)或X=U\(L\P*B)。
⑤ qr函数:即矩阵的QR分解。如[Q,R]=qr(A) 产生一个正交矩阵Q和一个上三角矩阵
R,满足A=QR。又如[Q,R,E]=qr(A) 产生一个正交矩阵Q、一个上三角矩阵R及一个置换矩阵E,满足XE=QR。此时,求解方程组AX=B,则X=R\(Q\B)或X=E*(R\(Q\B))。
⑥ chol函数:即矩阵的Cholesky分解。如R=chol(A) 产生一个上三角矩阵R,满足
R'R=A,若A为非对称正定,则出错。又如[R,p]=chol(A) 不输出出错信息。若A为对称正定,则p=0,否则p为一个正整数。如A为满秩矩阵,则R为一个阶数为q=p-1的上三角矩阵,且满足R’R=A(1:q,1:q)。此时,求解方程组AX=B,则X=R\(R’\B)。
3、利用迭代法求解线性方程组
①迭代法适用于求解大型系数矩阵的方程组。
②迭代法主要包括Jacobi迭代法、Gauss-Serdel迭代法、超松弛迭代法和两步迭代法。
③ jacobi函数:即Jacobi迭代法。如[Y,n]=Jacobi(A,B,X0,ep) 其中X0为初值向量,
ep为迭代精度,如取1.0e-6,Y为所求解向量,n为计算的实际迭代次数。
④ gauseidel函数:即Gauss-Serdel迭代法。如[Y,n]=gauseidel(A,B,X0,ep)。一般
地,该方法比Jacobi迭代法快,但某些情况下,Jacobi收敛,而该方法不收敛。
4、 fzero函数:如z=fzero(@fname,x0,tol,trace) 用来求单变量非线性方程的根。
① fname是待求根的函数文件名。在该M文件中一般应允许向量作为输入参数,故采用
点运算。
② x0为搜索的起点,该函数只给出离x0最近的一个根(方程可能有多个根)。
③ tol控制结果精度,默认tol=eps。
④ trace为1时显示迭代信息,为0不显示,默认值为0。
⑤非线性方程求根常见的有牛顿迭代法、弦截法、二分法等。
⑥若待求根的函数不是函数文件名时,该函数需要以字符串的方式给出,且其中的变
量只能是x。
⑦ inline函数(内联函数):f=inline(函数表达式的字符串) 如f=inline('x-10.^x+2')
此时,可用f替代@fname参数,而不必编写函数的M文件。
5、fsolve函数:如X=fsolve(@fname,X0,options) 求非线性方程组的数值解。
①需要用到Matlab优化工具箱。
② fname是用于定义需求解的非线性方程组的函数文件名。
③ X0是求解过程的初值向量,一般以列向量给出。
④ options用于设置优化工具箱的优化参数。
⑤ optimset命令:显示出全部的优化参数。若需要得到某个优化函数(如fsolve函数)
当前的默认参数值,则可使用optimset fsolve命令。
⑥ optimset函数:设置优化参数。如options=optimset('Display','off') 将优化参
数的Display选项的值设置为off。这里的options即可用在fsolve函数中。
6、常微分方程初值问题的数值解法
①一般只有对一些典型的常微分方程,才能求出它们的一般解表达式并用初始条件确
定表达式中的任意常数。
②实际问题中遇到的常微分方程在许多情况下得不出一般解,所以,一般是要求获得
解在若干个点上的近似值。
③一般格式:[t,y]=solver(@fname,tspan,y0) 其中,t和y分别给出时间向量和相应
的状态向量;fname是定义f(t,y)的函数文件名,该函数文件必须返回一个列向量;
tspan形式为[t0,tf],表示求解区间;y0是初始状态列向量。
④求常微分方程数值解的函数
⑤选取方法时,可考虑精度要求和复杂度控制要求。
⑥刚性:若微分方程描述的一个变化过程包含着多个相互作用但变化速度相差十分悬
殊的子过程,这样一类过程认为具有“刚性”,这类方程具有非常分散的特征值。
⑦函数ode23和ode45是对一阶常微分方程组设计的,因此对高阶常微分方程,需行
将它转化为一阶常微分方程组,即状态方程。
7、无约束最优化问题求解
① fminbnd函数:如[x,fval]=fminbnd(@fname,x1,x2,options) 求一元函数在(x1,x2)
区间中的极小值点x和最小值fval。
② fminsearch函数:如[x,fval]=fminsearch(@fname,x0,options) 基于单纯形算法求
多元函数极小值点x和最小值fval。
③ fminunc函数:如[x,fval]=fminunc(@fname,x0,options) 基于拟牛顿法求多元函数
极小值点x和最小值fval。
④这里的函数只是求局域极值。
⑤其中,fname是定义目标函数的M文件名;x0是一个向量,表示极值点的初值;options
为优化参数。
⑥当目标函数的阶数大于2时,使用fminunc比fminsearch更有效,但当目标函数高
度不连续时,使用fminsearch效果较好。
⑦求f(x)的最大值,即求-f(x)的最小值。
8、有约束最优化问题求解
①即求在G(x)<=0下的函数极小值问题。
②约束条件还可细化为下以几种形式:
③线性不等式约束:Ax<=b
④线性等式约束:Aeqx=beq
⑤非线性不等式约束:Cx<0
⑥非线性等式约束:Ceqx=0
⑦ x的下界和上界:Lbnd<=x<=Ubnd
⑧ fmincon函数[x,fval]=fmincon(@fname,x0,A,b,Aeq,beq,Lbnd,Ubnd,NonF,options)
其中,x、fval、fname、x0和options的含义同上。其余参数为约束条件,参数NonF
为非线性约束函数的M文件名。如果某个约束不存在,则用空矩阵来表示。
9、线性规划问题求解
①线性规划:即求在线性约束条件下线性目标函数的极小值问题。
②线性约束:Ax<=b、Aeqx=beq、Lbnd<=x<=Ubnd
③ linprog函数:如[x,fval]=linprog(f,A,b,Aeq,beq,Lnd,Ubnd) 其中,x是最优解,
fval是目标函数的最优值。x、b、beq、Lbnd、Ubnd是向量,A、Aeq为矩阵,f为
目标函数系数向量。
十二、数值积分与数值微分
1、变步长辛普生数值积分法
① quad函数:如[I,n]=quad(@fname,a,b,tol,trace)
② quadl函数:如[I,n]=quadl(@fname,a,b,tol,trace)
③其中,fname是被积函数名,a和b分别是定积分的下限和上限,tol用来控制积分
精度,trace控制是否展现积分过程,取值同上。返回参数I即定积分值,n为被积
函数的调用次数。
④一般quadl函数的精度和效率要高于quad函数。
⑤积分上、下限也可以是复数,则在复平面上求积分。
2、高斯-克朗罗德数据积分法
① quadgk函数:如[I,err]=quadgk(@fname,a,b) 求振荡函数的定积分。
②积分上、下限可以是-inf或inf。
3、梯形数值积分法
① trapz函数:如I=trapz(X,Y) 其中,X、Y是两个等长的向量,分别存放一组样本点
和样本值,要求X向量中的元素值由小到大递增。
②当被积函数关系不知道,只有一组(x,y)的样本点和样本值,此时,可以利用该函数
求其定积分。积分区间为[x1,xn],即X向量的第一个元素与最后一个元素。
4、多重定积分的数值求解
① dblquad函数:如I=dblquad(@fname,a,b,c,d,tol) 求两重定积分,其中[a,b]为x
的积分区域,[c,d]为y的积分区域。
② triplequad函数:如I=triplequad(@fname,a,b,c,d,e,f,tol) 求三重定积分,其
中[e,f]为z的积分区域。
5、数值微分
①数值分析关心函数f(x)的导数g(x)在一串离散点(以X向量体现)的近似值G(X)
以及误差。
②定义:f(x+h)-f(x)为向前差分;f(x)-f(x-h)为向后差分;f(x+h/2)-f(x-h/2)为中
心差分;它们分别除上h后则分别称为向前差商、向后差商和中心差商。当h充分小时,差商即为导数值。
③数值微分方法1:用多项式或样条函数g(x)对f(x)进行逼近(插值或拟合),然后用
g(x)在点x处的导数(即多项式的导数)作为f(x)在点x处的导数。
④数值微分方法2:用f(x)在点x处的某种差商作为其导数。
6、diff函数(即向前差分)
①如DX=diff(X) 计算向量X的向前差分,即DX(i)=X(i+1)-X(i),DX结果元素比X
少一个。
②如DX=diff(X,n) 计算向量X的n阶向前差分,即diff(X,2)=diff(diff(X))。
③如DX=diff(A,n,dim) 计算矩阵A的n阶差分,n默认为1,dim为1(默认)按列计
算,dim为2时按行计算。
十三、符号运算
1、符号对象的建立
① sym函数:格式:符号变量名=sym(符号字符串) 如a=sym('a') 符号字符串可以是
常量、变量、函数或表达式。该函数与可以将数值表达式变换成它的符号表达式,如sym(1.5)。
② syms函数:syms 符号变量名1 符号变量名2 …符号变量名n (只能用空格分
隔)
③利用字符串生成符号表达式:如y='1/sqrt(2*x)'
2、符号表达式的四则运算:用+、-、*、/、^ 实现,结果仍是一个符号表达式,但不时并
不是最简形式。
3、numden函数:如[n,d]=numden(s) 提取符号表达式s的分子和分母,分别存放在n与d
中。提取之前会将表达式有理化。若s是符号矩阵,则n和d分别为分子和分母矩阵。
4、factor函数:如factor(s) 对符号表达式s进行分解因式。
5、expand函数:如expand(s) 对符号表达式s进行展开。
6、collect函数:如collect(s)或collect(s,V) 对符号表达式s按变量V合并同类项。
7、coeffs函数:如coeffs(s)或coeffs(s,x) s为多项式表达式,按x主变量提取多项式
系数,若没有指定变量,则按离x就近原则确定主变量。
8、simplify函数:如simplify(s) 应用函数规则对s进行化简。
9、simple函数:如simple(s) 试用几种不同的化简工具,然后选择在结果表达式中含有最
小字符的那种形式。
10、eval函数:如eval(s) 将符号表达式变换成数值表达式。
11、sym2poly函数:如U=sym2poly(s) 将符号多项式转换为多项式系数向量。
12、poly2sym函数:如s=poly2sym(U,y) 将多项式系数向量转换为符号多项式。其中,y
是指定的自变量,默认为x。
13、符号表达式中变量的确定
① findsym函数与symvar函数:如findsym(s[,n])、symvar(s[,n]) 两者返回符号表
达式s中的n个符号变量,若没有指定n,则返回s中的全部符号变量。前者以字符串形式返回结果,后者以向量形式返回结果。
②在求函数的极限、导数和积分时,若没有明确指定自变量,将按以下原则确定主变
量:寻找除i、j之外,在字母顺序上最接过x的小写字符,若表达式中有两个符号变量与x的距离相等,则ASCII大者优先。
③可用findsym(s,1)或symvar(s,1)查找表达式s的主变量。
14、符号矩阵
①也是一种符号表达式。
②符号表达式运算分别作用于矩阵的每一个元素。
③符号矩阵也可以进行有关的矩阵运算。
④求符号矩阵的转置需要使用点运算符,即A.'
15、符号极限(limit函数)
①如limit(f,x,a) 求符号函数f(x)在x趋近于a时的极限值。
②如limit(f,a) 求默认自变量趋近于a时的极限值。
③如limit(f) 求默认自变量趋近于0时的极限值。
④如limit(f,x,a,'right'):求右极限值。
⑤如limit(f,x,a,'left'):求右极限值。
16、符号导数(diff函数)
①如diff(s) 按默认变量对符号表达式s求一阶导数。
②如diff(s,'v') 以v为自变量,对符号表达式求一阶导数。若v是符号变量,则无
需单撇号。利用它也可以求偏导数。
③如diff(s,n) 按默认变量对符号表达式求n阶导数。
④如diff(s,'v',n) 以v为自变量求n阶导数。
17、符号积分(int函数)
①如int(s) 按默认变量对被积函数或符号表达式s求不定积分。
②如int(s,v) 以v为自变量,求不定积分。
③如int(s,v,a,b) 求定积分,a、b为定积分的下限和上限,它们可以是具体的数,
也可以是一个符号表达式,还可以是无穷(inf)。当被积函数在闭区间[a,b]上可积时,函数返回一个定积分结果。当a、b有一个是无穷时,函数返回一个广义积分。
18、级数
①前面的sum函数可以求以向量形式表示的有限级数的求和。
② symsum函数:如symsum(s,v,n,m) 求(无穷)级数的和。其中,s表示一个级数的
通项,是一个符号表达式;v是求和变量(可省略);n和m是求和的开始项和末项,末项可以是inf。
③ taylor函数:如taylor(f,v,n,a) 将函数f按变量v展开为泰勒级数,展开到第n
项(即变量v的n-1次幂)为止,n的默认值为6;v可省略;参数a指定在自变量v=a处展开,a的默认值为0。
19、符号代数方程求解(solve函数)