2MATLAB的基本数学功能.docx
- 文档编号:25662042
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:18
- 大小:37.84KB
2MATLAB的基本数学功能.docx
《2MATLAB的基本数学功能.docx》由会员分享,可在线阅读,更多相关《2MATLAB的基本数学功能.docx(18页珍藏版)》请在冰豆网上搜索。
2MATLAB的基本数学功能
第二节MATLAB的基本数学功能
MATLAB作为优秀的数学计算和分析软件,其中以矩阵运算为代表的基本运算功能一直是MATLAB引以为豪的核心和基础。
本节将介绍MATLAB的基本运算功能。
一、算术运算
MATLAB提供了两种运算方式,一种是普通的数组运算方式:
在数组中对应元素之间进行运算;另一种是矩阵运算方式:
不改变输入形式和书写方法,把常数看成是标量(即
阶的矩阵),一维数组看作是一行或一列的矢量(即
阶或
阶的矩阵),二维数组看成是
阶的矩阵,然后按照矩阵的运算规则进行运算。
二者的输入形式和表示方法是相同的,差别就在于使用了不同的运算符。
1.加、减运算
矩阵与数组的加减运算没有区别,都使用“+”、“-”运算符,运算方法相同。
需注意的是,两个进行加减运算的数组(或是矩阵)必须有相同的尺寸,否则运算时会出现错误信息。
如:
a=[213;465;246];
b=[257];
a+b
?
?
?
Errorusing==>+
Matrixdimensionsmustagree.
如果其中的一个运算对象是标量,即
阶的矩阵,它可以和其他不同维数的矩阵进行运算。
如:
a+4
ans=
657
8109
6810
2.乘、除运算
矩阵与数组在进行乘法或除法运算时,使用不同的运算符。
矩阵运算使用的运算符是“*”和“\”(或“/”),而数组运算使用的运算符是矩阵运算符号前加一个点“.”,即“.*”和“.\”(或“./”)。
2.1矩阵乘法
矩阵乘法用 “*”表示,两矩阵要能相乘,必须要求前一矩阵的列数与后一矩阵的行数相等。
如:
A=[123;456;789];
B=[25;-13;-20];
A*B
ans=
-611
-935
-1259
用乘法也可以实现两个同维矢量的内积(点乘)。
在输入列矢量时,为了书写方便,通常先写成行矢量,再用转置符号,将其转化为列矢量;也可以直接输入为a=[2;-1;5]。
如:
a=[2-15]';
b=[-13-4]';
a'*b
ans=
-25
b'*a
ans=
-25
MATLAB用dot(a,b)计算矢量a和b的点乘,用cross(a,b)计算矢量a和b的叉乘。
如:
dot(a,b)
ans=
-25
cross(a,b)
ans=
-11
3
5
在MATLAB中矩阵可以和标量相乘,标量可以是乘数或是被乘数。
如:
-5*a'
ans=
-105-25
2.2数组乘法
数组的乘法用“.*”表示,两数组相乘必须具有相同的维数,则a.*b表示a和b中对应元素之间相乘。
如:
z=a'.*b'
z=
-2-3-20
即z(i,j)=a'(i,j)*b'(i,j)。
2.3矩阵除法
在MATLAB中有两种矩阵除法运算符号:
“\”和“/”分别表示左除和右除。
如果A为非奇异方阵,则A\B和B/A运算都可以实现。
A\B表示矩阵A的逆左乘矩阵B,即A\B=inv(A)*B,而B/A表示矩阵A的逆右乘矩阵B,即B/A=B*inv(A)。
通常X=A\B是A*X=B的解,X=B/A是X*A=B的解。
一般A\B≠B/A。
如:
A=rand
(2)
A=
0.95010.6068
0.23110.4860
B=rand
(2)
B=
0.89130.4565
0.76210.0185
C=A/B
C=
1.3425-0.3234
1.1047-0.9887
D=B\A
D=
0.26530.6355
1.56340.0885
2.4数组除法
数组除法用“.\”或“./”表示(结果相同),a与b必须具有相同的维数,a.\b表示b中的元素分别除以a中的对应元素。
如:
g=a'.\b'
g=
-0.5000-3.0000-0.8000
f=b'./a'
f=
-0.5000-3.0000-0.8000
即a'.\b'=b'./a',都表示b'除以a'。
3乘方
3.1 矩阵的乘方
矩阵的乘方用“^”表示,A^p即为A的p次方。
若A是一个方阵,p是一个标量,且p是大于1的整数,则A的p次幂即为A自乘p次;若p是不为整数的标量时,A^p=V*
/V,其中λ1…λn为矩阵A的特征值,V为对应的特征矢量阵。
若A为标量而p为方阵时,计算也涉及到特征值和特征矢量的问题,A^p=V*
/V,其中λ1…λn为矩阵p的特征值,V为对应的特征矢量阵。
若A、p均是矩阵,则A^p是错误的,即A和p中必须一个是标量,一个是方阵。
3.2 数组的乘方
数组的乘方用“.^”。
当底和指数为同样大小的数组时,如:
x=[3-2-1];
y=[243];
z=x.^y
结果为:
z=
916-1
即z=x.^y=[3-2-1].^[243]=[3^2(-2)^4(-1)^3]=[916–1]。
若指数是标量,如:
g=x.^2
结果为:
g=
941
即g=x.^2=[3-2-1].^2=[3^2(-2)^2(-1)^2]=[941]。
若底是标量,指数是数组,如:
f=2.^x
结果为:
f=
8.00000.25000.5000
即f=2.^x=2.^[3-2-1]=[2^32^(-2)2^(-1)]=[8.00000.25000.5000]。
4转置
矩阵的转置用“'”来表示。
如:
A=[0.95010.6068;0.23110.4860];
G=A'
G=
0.95010.2311
0.60680.4860
也可直接对矢量进行转置运算:
[145]'
ans=
1
4
5
若z复数矩阵,则z'为它的复数共轭转置,若要进行非共轭转置运算,使用z.'或conj(z')求得。
如:
z=[2+i3-4i];
z'
ans=
2.0000-1.0000i
3.0000+4.0000i
z.'
ans=
2.0000+1.0000i
3.0000-4.0000i
conj(z')
ans=
2.0000+1.0000i
3.0000-4.0000i
二、数学函数与矩阵函数
1 数学函数
MATLAB所提供的数学函数主要有基本函数与特殊函数两部分。
1.1基本函数
MATLAB的基本函数分为4部分:
三角函数、指数函数、复数函数、取整和求余函数。
见下表:
表3 MATLAB的基本数学函数
函数
名称
功 能
函数
名称
功 能
三角
函数
sin
正弦
cot
余切
asin
反正弦
acot
反余切
cos
余弦
sec
正割
acos
反余弦
asec
反正割
tan
正切
csc
余割
atan
反正切
acsc
反余割
指数
函数
exp
以e为底的指数
pow2
2的幂次
log
自然对数
sqrt
开平方
log10
以10为底的对数
nextpow2
2的下一个幂次
log2
以2为底的对数
复数
函数
abs
绝对值或复数的模
imag
复数的虚部
complex
由实部和虚部构造复数
real
复数的实部
conj
复数的共轭
isreal
是否为实数组
取整
函数
mod
模数(带符号余数)
fix
朝零方向取整
floor
朝负无穷(-∞)方向取整
rem
除后取余数
ceil
朝正无穷(+∞)方向取整
sign
符号函数
round
四舍五入到最近的数
下面计算两个MATLAB基本函数的值,如:
a=[-112;-243];
b=fix(pi*a)
b=
-336
-6129
c=cos(pi*b)
c=
-1-11
11-1
说明:
在计算中,三角函数按弧度计算;mod(x,y)与y符号相同,rem(x,y)与x符号相同,当x与y同号时,mod(x,y)等于rem(x,y)。
1.2特殊函数
MATLAB的特殊函数分为三部分:
特殊数学函数、数理函数、坐标变换。
常用的函数见下表:
表4MATLAB的特殊数学函数
函数名称
功能
函数名称
功能
bessel
各类Bessel函数
cross
矢量叉乘
bete
β函数
dot
矢量点乘
gamma
γ函数
cart2sph
直角坐标变换到球坐标
ellipj
Jachobi椭圆函数
cart2pot
直角坐标变换到极坐标
ellipke
完全椭圆积分
pol2cart
极坐标变换到直角坐标
erf
误差函数
sph2cart
球坐标变换到直角坐标
2矩阵函数
MATLAB提供了包括矩阵分析、线性方程组、特征值和特征矢量、矩阵函数、因式分解的矩阵函数,常用的矩阵函数见下表:
表5MATLAB的矩阵函数
函数命令
功能
函数命令
功能
cond
矩阵的条件数
rank
矩阵的秩
condest
1-范数条件数
svd
矩阵的奇异值分解
rcond
矩阵的倒条件数
trace
矩阵的迹
det
方阵的行列式
expm
矩阵指数
inv
矩阵的逆
sqrtm
矩阵的平方根
norm
矩阵或矢量的范数
logm
矩阵对数
normest
矩阵的2-范数
funm
矩阵的一般矩阵函数
从上表中可以看到,矩阵函数中有几个函数的名称与数学函数相似,只是在相应的数学函数名称后添加了一个字符m。
如:
a=[14;916];
r1=sqrt(a)
r1=
12
34
r2=sqrtm(a)
r2=
0.4662+0.9359i0.8860-0.2189i
1.9935-0.4924i3.7888+0.1152i
三、建立特殊数组(矩阵)
1标准数组(或矩阵)函数
MATLAB中提供了一些标准数组(或矩阵)的建立方法,这些数组(或矩阵)可作为一些基本数组(或矩阵)用于辅助编程或运算。
表6MATLAB的标准数组
函数名称
主要用法
描述
特征
zeros
A=zeros(n)
建立n×n阶的二维全0数组
数组的所有元素全为0,aij=0
A=zeros(m,n)
建立m×n阶的二维全0数组
A=zeros(m,n,p,…)
建立m×n×p×…阶的多维全0数组
A=zeros(size(b))
建立与b同样尺寸的全0数组
ones
A=ones(n)
建立n×n阶的二维全1数组
数组的所有元素全为1,aij=1
A=ones(m,n)
建立m×n阶的二维全1数组
A=ones(m,n,p,…)
建立m×n×p×…阶的二维全1数组
A=ones(size(b))
建立与b同样尺寸的全1数组
eye
A=eye(n)
建立n×n阶的单位矩阵
对角元素为1,其余元素为0
A=eye(m,n)
建立m×n阶的单位矩阵
A=eye(size(b))
建立与b同样尺寸的单位矩阵
rand
A=rand(n)
建立n×n阶的二维随机数组
均匀分布,在0—1之间
A=rand(m,n)
建立m×n阶的二维随机数组
A=rand(m,n,p,…)
建立m×n×p×…阶的多维随机数组
A=rand(size(b))
建立与b同样尺寸的随机数组
randn
A=randn(n)
建立n×n阶的二维随机数组
正态分布,均值为0,方差为1
A=randn(m,n)
建立m×n阶的二维随机数组
A=randn(m,n,p,…)
建立m×n×p×…阶的多维随机数组
A=randn(size(b))
建立与b同样尺寸的随机数组
diag
A=diag(b)
将矢量b放在A矩阵的主对角线上
非对角线元素为0
magic
A=magic(n)
建立n×n阶的魔术方阵
元素由1~n之间的整数组成,任何行元素或任何列元素或任何对角线元素之和都相等,即
2建立大数组
大数组可由方括号中的小数组建立起来。
如:
a=[123;234;569]
输入:
c=[aones(size(a));rand(size(a))a^2]
即把每一个小数组作为新数组中的一个元素,再组成大数组,得到
c=
1.00002.00003.00001.00001.00001.0000
2.00003.00004.00001.00001.00001.0000
5.00006.00009.00001.00001.00001.0000
0.95010.48600.456520.000026.000038.0000
0.23110.89130.018528.000037.000054.0000
0.60680.76210.821462.000082.0000120.0000
或可以输入d=[zeros(3,2)a;ones(2,2)eye(2,3)]
得到d=
00123
00234
00569
11100
11010
注意:
在使用这种方法构建大数组时,小数组在维数中必须满足同一行上的各个小数组要有相同的行数,同一列上的各个小数组要有相同的列数。
3冒号“:
”的使用
3.1产生一维数组,如x=1:
4即产生一个1~4单位增量的一维数组:
x=1:
4
x=
1234
也可以产生单位增量小于1的一维数组,方法是把增量放在起始量和结尾量的中间,如:
y=3:
1/2:
5
y=
3.00003.50004.00004.50005.0000
同样,如果把增量设置为负数,则产生单位增量为负数的一维数组,如:
z=3:
-1/2:
0
z=
3.00002.50002.00001.50001.00000.50000
3.2另外,冒号可以用来生成简易的表格。
方法是先产生一个一维数组,再计算另外一个一维数组,进行转置后合成列向量组。
如:
x=(2:
0.3:
3.5);
y=exp(-x);
[x',y']
则得到ans=
2.00000.1353
2.30000.1003
2.60000.0743
2.90000.0550
3.20000.0408
3.50000.0302
4下标的功能
4.1元素定位
单个的数组元素的位置可在括号中用下标来表达,如已知:
a=[213
465
246]
从中我们可知a(2,1)=4,a(3,3)=6,a(3,2)=4等等。
若用a(3,3)=a(2,1)+a(3,2),利用原数组的元素产生新元素(即a(2,1)+a(3,2)=8)替代a数组中第三行第三列的a(3,3)元素,则产生新的a数组:
a=
213
465
248
下标可以是一个一维数组。
例如若x和v是一维数组,则x(v)也是一个一维数组:
[x(v
(1))x(v
(2))…x(v(n))]。
对于矩阵而言,一维数组下标可以将数组中邻近或不邻近元素构成一个新的子数组:
假如b是一个10×10阶的数组,则b(1:
3,5)是指b中由前三行对应第五列元素组成的3×1阶子数组。
又如b(3:
5,5:
8)是第3、4、5行与第5、6、7、8列交叉处的元素组成的3×4阶子数组;b(:
[5,8,10])=c(:
1:
3)表示将c数组的前三列赋值给b数组的第五、第八、和第十列。
若v和w是整数矢量,则a(v,w)通过取出行下标v和列下标w对应的的a的元素形成新的数组。
如:
a=[213;465;246]
a=
213
465
246
v=1:
3;
w=[321];
计算a(v,w)
ans=
312
564
642
若w=[121],计算a(v,w)
ans=
212
464
242
若v=[13],w=[121],计算a(v,w)
ans=
212
242
4.2改变数组的尺寸
数组的尺寸是可以改变的,例如我们可以将一个2×3阶的数组的尺寸变为6×1阶:
a=[212;242];
b=a(:
)%按列的顺序排成新数组
b=
2
2
1
4
2
2
而赋值语句左边a(:
)可以重新组成与原来的a具有相同尺寸的数组,这相当于在原来的a未被清除的情况下,用新的元素置换(需注意的是等号右边元素的数量与等号左边数组的数量应相同)。
如:
a(:
)=8:
-1:
3
a=
864
753
这时a数组已被新的内容所取代,即由8到3,6个新元素取代了原来数组中的元素,重新组成2×3数组。
数组尺寸的改变也可以通过reshape命令实现,如果a=[864;753],则
b=reshape(a,3,2)%将a中元素按列的顺序排成3×2阶新数组
b=
85
74
63
5空数组
语句[]将一个0×0阶的数组赋给X,使用这个数组不会引起出错情况。
X=[]与clearX不同,clear是将X清除出工作空间,而空数组则存在于工作空间,只是具有空尺寸而已。
当用size测试时表明其为空数组,而用exist可以测出其确实存在。
如果n<1,x=1:
n可以产生空矢量。
若要将某些行与列从数组中移去,可以采用将其置为空数组的方法。
如:
a=
212
242
a(:
[1])=[]%将原来数组中的第一列删除
a=
12
42
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 基本 数学 功能