MatLab常用函数大全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、求组合数
C,则输入:
求k
n
nchoosek(n,k)
例:nchoosek(4,2) = 6.
2、求阶乘
求n!.则输入:
Factorial(n).
例:factorial(5) = 120.
3、求全排列
perms(x).
例:求x = [1,2,3];
Perms(x),输出结果为:
ans =
3 2 1
3 1 2
2 3 1
2 1 3
1 2 3
1 3 2
4、求指数
求a^b:Power(a,b) ;
例:求2^3 ;
Ans = pow(2,3) ;
5、求行列式
求矩阵A的行列式:det(A);
例:A=[1 2;3 4] ;
则det(A) = -2 ;
6、求矩阵的转置
求矩阵A的转置矩阵:A’
转置符号为单引号.
7、求向量的指数
求向量p=[1 2 3 4]'的三次方:p.^3 例:
p=[1 2 3 4]'
A=[p,p.^2,p.^3,p.^4]
结果为:
注意:在p与符号”^”之间的”.”不可少.
8、求自然对数
求ln(x):Log(x)
例:log(2) = 0.6931
9、求矩阵的逆矩阵
求矩阵A 的逆矩阵:inv(A)
例:a= [1 2;3 4];
则
10、多项式的乘法运算
函数conv(p1,p2)用于求多项式p1和p2的乘积。
这里,p1、p2是两个多项式系数向量。
例2-2 求多项式43810x x +-和223x x -+的乘积。
命令如下:
p1=[1,8,0,0,-10];
p2=[2,-1,3]; c=conv(p1,p2)
11、多项式除法
函数[q ,r]=deconv(p1,p2)用于多项式p1和p2作除法运算,其中q 返回多项式p1除以p2的商式,r 返回p1除以p2的余式。
这里,q 和r 仍是多项式系数向量。
例2-3 求多项式43810x x +-除以多项式223x x -+的结果。
命令如下:
p1=[1,8,0,0,-10];
p2=[2,-1,3]; [q,r]=deconv(p1,p2)
12、求一个向量的最大值
求一个向量x 的最大值的函数有两种调用格式,分别是:
(1)max(x):返回向量x 的最大值,如果x 中包含复数元素,则按模取最大值。
(2)[y, i]=max(x):返回向量x 的最大值存入y ,最大值的序号存入i ,如果x 中包含复数元素,则按模取最大值。
求向量x 的最小值函数是min(x),用法与max(x)完全相同。
13、求矩阵的最大值和最小值
求矩阵A 的最大值的函数有三种调用格式,分别是:
(1)max(A):返回一个行向量,向量的i 个元素是矩阵A 的第i 列的最大值。
(2)[y,u]=max(A):返回行向量y 和u ,y 纪录A 的每列的最大值,u 纪录每列最大值的行号。
求矩阵A 的最小值的函数min(A),用法与max(A)完全相同。
14、求和与求积
数据序列求和与求积函数是sum 和prod ,其使用方法类似。
设x 是一个向量,A 是一个矩阵,函数的调用格式为:
sum(x):返回向量x 各元素之和。
Sum(A,1):返回矩阵A 的列求和后的行向量
Sum(A,2):返回矩阵A 的行求和后的列向量
prod(x):返回向量x 各元素的乘积。
sum(A):返回一个行向量,其第i 个元素是A 的第i 列的元素之和。
prod(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 行的元素乘积。
15、平均值、标准方差
MATLAB 提供了mean ,std 函数来计算平均值、标准方差或方差。
这些函数的调用方法如下:
mean(x):返回向量x 的算术平均值。
std(x):返回向量x 的标准方差。
对于矩阵A ,mean 函数的一般调用格式为:
y=mean(A ,dim)
这里,dim 取1或2。
当dim=1时,返回一个行向量y ,y 的第i 个元素是A 的第i 列元素的平均值;当dim=2时,返回一个列向量y ,y 的第i 个元素是A 的第i 行元素的平均值。
对于矩阵A ,std 函数的一般调用格式为:
y=std(A ,flag ,dim)
这里,dim 取1或2。
当dim=1时,求各列元素的标准方差;当dim=2时,求各行元素的标准方差。
flag 取0或1,当flag=0时,按1σ计算标准方差;当flag=1时,按2σ计算方差。
缺省flag=0,dim=1。
16、相关系数
对于两组数据序列12[,,,]n x x x x =,12[,,,]n y y y y =,其相关系数的计算, MATLAB 提供了corrcoef 函数来计算相关系数,corrcoef 函数的调用格式为:
r=corrcoef(x ,y)
17、排序
对向量元素的进行排序是一种经常性的操作,MA TLAB 提供了sort 函数对向量x 进行排序。
y=sort(x):返回一个对x 中元素按升序排列后的向量y 。
[y ,i]=sort(x):返回一个对x 中的元素按升序排列的向量y ,而i 记录y 中元素在x 中的位置。
18、多项式的求导
对多项式求导数的函数是:
p=polyder(p1):求多项式p1的导函数。
p=polyder(p1,p2):求多项式p1和p2乘积的导函数。
[p,q]=polyder(p1,p2):求多项式p1和p2之商的导函数,p 、q 是导函数的分子、分母。
例: 求有理分式21()3
x f x x x -=
-+的导函数。
命令如下:
p1=[1,-1];
p2=[1,-1,3]; [p,q]=polyder(p1,p2) 19、多项式的求值
polyval 函数用来求代数多项式的值,其调用格式为:
y=polyval(p,x)
若x 为一数值,则求多项式在该点的值;若x 为向量,则对向量中的每个元素求其多项式的值。
例: 求多项式2()21p x x x =++在点1,2,3,4的值。
命令如下:
p=[1,2,1];
x=1:4;
y=polyval(p,x)
y =
4 9 16 25
roots 函数用来求代数多项式的根,其调用格式为:
x=roots(p)
如果x 为向量,则p=poly(x)可以建立一个以x 为其根的多项式。
20、多项式的求根
roots 函数用来求代数多项式的根,其调用格式为:
x=roots(p)
如果x 为向量,则p=poly(x)可以建立一个以x 为其根的多项式。
例:求多项式32
()6116p x x x x =-+-的根。
命令如下:
p=[1,-6,11,-6];
x=roots(p)
x =
3.0000
2.0000
1.0000
如果键入命令p=poly(x),则可得到以3,2,1为根的三次多项式的系数
p =
1.0000 -6.0000 11.0000 -6.0000 21、单变量非线性方程的求根
MATLAB 还提供了一个fzero 函数,可以用来求单变量非线性方程的求根。
该函数的调
用格式为:
z=fzero(‘fname’,x0)
其中fname 是待求根的函数文件名,x0为搜索的起点。
一个函数可能有多个根,但fzero 函数只能给出离x0最近的那个根。
例: 求函数()1020x f x x =-+=在00.5x =附近的根。
命令如下:
fzero('x -10^x+2',0.5)
ans =
0.3758
22、求单变量函数的最小值点
其调用格式为:
x=fminbnd(‘fname ’,x1,x2)
这里,fname 是目标函数名,x1和x2限定自变量的取值范围,而x0是搜索起点的坐标。
例:求一元函数3()25f x x x =--在[0,5]内的最小值点。
命令如下:
fminbnd('x^3-2*x-5', 0, 5)
ans =
0.8165
23、求多变量函数的最小值点
其调用格式为:
x=fminsearch(‘fname ’,x0)
例: 求多元函数222(,,)4y z f x y z x x y z
=+++在111(,,)222附近的最小值。
建立函数文件f.m 。
function w=f(p)
x=p(1);
y=p(2);
z=p(3);
w=x+y^2/(4*x)+z^2/y+2/z;
调用fminsearch 函数求多元函数在[1/2,1/2,1/2]附近的最小值点。
w=fminsearch('f ',[1/2,1/2,1/2])
w =
0.5000 1.0000 1.0000
计算多元函数的最小值。
f(w)
ans =
4.0000
24、求函数的最大值点
MATLAB 没有专门提供求函数最大值点的函数,当需要求函数在区间(a,b)上最大值点
时,可将它转化为求-f(x)在(a,b)上的最小值点。
25、建立单个符号量(sym函数)
sym函数用来建立单个符号量,一般调用格式为:
符号变量名=sym(‘符号字符串’)
该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。
例如,a=sym(‘a’)将建立符号变量a,此后,用户可以在表达式中使用变量a进行各种运算。
符号变量a和在其他过程中建立的非符号变量a是不同的。
一个非符号变量在参与运算前必须赋值,变量的运算实际上是该变量所对应值的运算,其运算结果是一个和变量类型对应的值,而符号变量参与运算前无须赋值,其结果是一个由参与运算的变量名组成的表达式。
下面的命令及其运算结果,说明了符号变量与非符号变量的差别。
在MA TLAB命令窗口,输入以下命令:
a=sym('a'); %定义符号变量a,b
b=sym('b');
p1=sym('pi'); %定义符号常量
a=sym('3');
b=sym('4');
p2=pi; %定义数值常量
x=3;
y=4;
sin(p1/3) %符号计算
ans =
1/2*3^(1/2)
sin(p2/3) %数值计算
ans =
0.8660
cos((a+b)^2)-sin(pi/4) %符号计算
ans =
cos(49)-1/2*2^(1/2)
cos((x+y)^2)-sin(pi/4) %数值计算
ans =
-0.4065
26、建立多个符号量(syms函数)
函数sym一次只能定义一个符号变量,使用不方便。
MATLAB提供了另一个函数syms,一次可以定义多个符号变量。
syms函数的一般调用格式为:
syms 符号变量名1 符号变量2 …符号变量n
用这种格式定义符号变量时,变量间用空格而不要用逗号分隔。
例如,用syms函数定义4个符号变量a,b,命令如下:
syms a b
27、建立符号表达式
含有符号对象的表达式称为符号表达式。
建立符号表达式有以下3种方法:
(1)利用单引号来生成符号表达式。
例如
y='1/sqrt(2*x)'
y =
1/sqrt(2*x)
(2)利用sym函数建立符号表达式。
例如
z=sym('3*x^2-5*y+2*x*y+6')
z =
3*x^2-5*y+2*x*y+6
A=sym('[a,b;c,d]')
A =
[ a, b]
[ c, d]
第一条命令建立一个符号函数表达式,第二条命令生成一个符号矩阵。
(3)利用已经定义的符号变量组成符号表达式。
例如
syms x y;
z=3*x^2-5*y+2*x*y+6
z =
3*x^2-5*y+2*x*y+6
28、符号表达式中变量的确定
利用函数findsym(s)可以确定符号表达式s中的全部符号变量。
例如:
syms a b x y; %定义4个符号变量
c=sym('3'); %定义1个符号常量
s=3*x+y;
findsym(s)
ans =
x, y
findsym(5*x+2)
ans =
x
findsym(a*x+b*y+c) %符号变量c不会出现在结果中
ans =
a, b, x, y
29、符号表达式四则运算
符号表达式的加、减、乘、除和幂运算可分别由函数symadd、symsub、symmul、symdiv 和sympow来实现。
例如
f='2*x^2+3*x-5'
f =
2*x^2+3*x-5
g='x^2-x+7'
g =
x^2-x+7
symadd(f,g) %加法运算
ans =
3*x^2+2*x+2
sympow(f,'2*x') %乘幂运算
ans =
(2*x^2+3*x-5)^(2*x)
30、符号表达式的因式分解与展开
符号表达式的因式分解和展开运算,可用函数factor和expand来实现,其调用格式为:factor(s):对符号表达式s分解因式。
expand(s):对符号表达式s进行展开。
例如:
syms x y;
s1=x^3-6*x^2+11*x-6
s1 =
x^3-6*x^2+11*x-6
factor(s1)
ans =
(x-1)*(x-2)*(x-3)
s2=(x-y)*(x+y)
s2 =
(x-y)*(x+y)
expand(s2)
ans =
x^2-y^2
31、符号表达式与数值表达式之间的转换
利用函数sym可以将数值表达式转换成符号表达式。
例如:
sym(1.5)
ans =
3/2
利用函数eval可以将符号表达式转换成数值表达式。
例如:
x='(1+sqrt(5))/2'
x =
(1+sqrt(5))/2
eval (x)
ans =
1.6180
y='3/2'
y =
3/2
eval (y)
ans =
1.5000
32、符号极限
MATLAB中求函数极限的函数是limit,可用来求函数在指定点的极限值和左右极限值。
对于极限值为“没有定义”的极限,MATLAB给出的结果为NaN,极限值为无穷大时,MATLAB给出的结果为inf。
limit函数的调用格式为:
(1)limit(f, x, a):求符号函数()f x 的极限值lim ()x a
f x →。
(2)limit(f, x, a, 'left'):求符号函数()f x 的右极限值0
lim ()x a f x →-。
(3)limit(f, x, a, 'right'):求符号函数()f x 的右极限值0
lim ()x a f x →+。
33、符号导数
diff 函数用于对符号表达式求导数。
该函数的一般调用格式为:
diff(s, x, n):对符号表达式或符号函数s 关于x 求n 阶导数,当n 缺省时,表示求一阶导数。
例: 求下列函数导数
(1)2ax y e x -=+,求dy dx。
导数:
syms x a;
diff (‘exp(-a*x^2)+x ’,x) ans =
34、符号积分
符号积分由函数int 来实现。
该函数的一般调用格式为:
int(s,x):以符号表达式或符号函数s 为被积函数,x 为积分变量,计算不定积分。
int(s, x, a, b):以符号表达式或符号函数s 为被积函数,a ,b 为积分的下限和上限,x 为积分变量,计算定积分。
a 和b 可以是两个具体的数,也可以是一个符号表达式,还可以是无穷大。
例:求2
0x e dx ∞
-⎰
积分:
syms x;
y=exp(-x^2);
int(y, x, 0, inf)
ans =
pi^(1/2)/2
35、符号级数
symsum 函数用于求无穷级数的和。
该函数的一般调用格式为:
symsum(s, x, n, m) s 是一个符号函数,它是级数通项,x 是求和变量,n 和m 是求和的开始项和未项。
例: 求下列级数之和
(1)211n n ∞
=∑ (2)111()21n n n ∞-=--∑ 级数1:
syms n;
s=1/n^2;
symsum(s, n, 1, inf)
ans =
1/6*pi^2
级数2:
syms n;
s=(-1)^(n-1)/(2*n-1);
symsum(s, n, 1, inf)
ans = 1/4*pi
36、函数的泰勒展开
taylor 函数用于将一个函数展开为幂级数,其调用格式为:
taylor(f , x, n, a) f 是一个符号表达式或符号函数,它表示需要被展开的函数,x 是函数自变量,n 指需要展开的项数,其缺省值为6,a 指定将函数f 在x = a 处展开,其缺省值为0。
例:求以下函数的泰勒级开式
(1)求函数()ln f x x =在1x =处的泰勒展开式的前5项。
展开式:
syms x;
f=log(x);
taylor(f, x, 5, 1)
ans = x-1-1/2*(x-1)^2+1/3*(x-1)^3-1/4*(x-1)^4
37、符号方程求解
求解用符号表达式的代数方程可由函数solve 实现,其调用格式为:
x=solve(s, ' x '):求解符号表达式s 组成的代数方程,求解变量为x 。
[x1,x2,…,xn ]=solve(s1,s2,…,sn, ' x 1', ' x2 ',…, ' x n'):求解符号表达式s1,s2,…,sn 组成的方程组,求解变量分别为x1,x2,…,xn 。
例2-15 求解方程组
23
2323x ay a z a x by b z b x cy c z c ⎧++=⎪++=⎨⎪++=⎩
(,,a b c 为已知的互异实数)
在MA TLAB 命令窗口,输入命令:
[x,y,z]=solve('x+a*y+a^2*z=a^3','x+b*y+b^2*z=b^3','x+c*y+c^2*z=c^3','x','y','z')
x =
b*c*a
y =
-b*a -c*b -c*a
z =
a+b+c
38、符号常微分方程求解
符号微分方程求解可以通过函数dsolve 来实现,其调用格式为:
dsolve(e, c, 'x') 求解符号表达式构成的常微分方程e ,在由符号表达式给出的初值条件c 下的特解,x 是微分方程的自变量;如果没有给出初值条件c ,则求方程的通解。
dsolve(e1, e2, …,en, c1, c2, …,cn, 'x1', 'x2', …, 'xn ') 求解符号表达式构成的常微分方程组e1, e2, …,en ,在由符号表达式给出的初值条件c1, c2, …,cn 下的特解,x1, x2, …,xn 是微分方程组的自变量;如果没有给出初值条件,则求方程组的通解。
例:求下列微分方程的解
(1)求422dx x y dt dy x y dt
⎧=-⎪⎪⎨⎪=-⎪⎩的通解。
方程:
[x,y]=dsolve('Dx=4*x-2*y','Dy=2*x-y','t')
x =
-1/3*C1+4/3*C1*exp(3*t)-2/3*C2*exp(3*t)+2/3*C2
y =
2/3*C1*exp(3*t)-2/3*C1+4/3*C2-1/3*C2*exp(3*t)
(2)求22dy xy dx
=在(0)1y =下的特解。
方程2:
y=dsolve('Dy=2*x*y^2','y(0)=1','x')
y =
-1/(x^2-1)
39、测量字符串向量的维数
例:s='this',
dim=size(s),得
dim=
1 4
40、给出字符串中各个字符的ASC Ⅱ代码的值
例如:s='this',
ascCode=abs(s),得
ascCode=
116 104 105 115
41、使整数型向量、字符向量必须以字符形式显示
例如:键入setstr(ascCode),则显示结果为
ans=
this
注:ascCode为上题中的ascCode
42、将数值转化成字符串
num2str函数
例如:num2str(2);结果为’2’
43、字符串的联接
在MA TLAB中,字符串的联接十分方便,其一般格式为:[字符串变量1,字符串变量2,'字符集1', '字符集2',…]例如:若键入['圆周率为',num2str(pi)],屏幕上显示出
ans =
圆周率为3.1416
44、使用solve函数求解一般的符号代数方程组>>[x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0')。