MATLAB之数学运算

时间:2023-02-26 16:29:53

第三部分.数学运算

1.三角函数

函数名称

说明

sin()/sind()

正弦函数,输入值为弧度/角度

cos()/cosd()

余弦函数,输入值为弧度/角度

tan()/tand()

正切函数,输入值为弧度/角度

sec()/secd()

正割函数,输入值为弧度/角度

csc()/cscd()

余割函数,输入值为弧度/角度

cot()/cotd()

余切函数,输入值为弧度/角度

asin()/asind()

反正弦函数,返回值为弧度/角度

acos()/acosd()

反余弦函数,返回值为弧度/角度

acsc()/acscd()

反余割函数,返回值为弧度/角度

asec()/asecd()

反正割函数,返回值为弧度/角度

atan()/atand()

反正切函数,返回值为弧度/角度

acot()/acotd()

反余切函数,返回值为弧度/角度

atan2()

四象限内反正切,返回值为弧度/角度

2.双曲线函数

函数名

说明

函数名

说明

sinh()

双曲正弦

asinh()

反双曲正弦

cosh()

双曲余弦

acos()

反双曲余弦

tanh()

双曲正切

atan()

反双曲正切

例:

>> x=-3:0.01:3;

>> plot(x,sinh(x))

>> grid on

 MATLAB之数学运算

3.复数函数

函数名

说明

abs()

求复数的模

angle()

求复数的相角(弧度制)

real()

求复数的实部

imag()

求复数的虚部

conj()

求复数的共轭值

unwrap()

复数的相角展开

isreal()

判断是否为实数

cplxpair()

按共轭复数对重新排列

complex()

由实部和虚部创建函数

例:

>> a=3+4i

 

a =

 

   3.0000 + 4.0000i

 

>> A=abs(a)

 

A =

 

     5

 

>> al=real(a)

 

al =

 

     3

 

>> a2=imag(a)

 

a2 =

 

     4

 

>> angle_a=angle(a)

 

angle_a =

 

    0.9273

 

>> b=conj(a)

 

b =

 

   3.0000 - 4.0000i

4.求和、乘积和差分

(1)求和函数

一般格式:

sum(x)      %返回数组x的所有值之和,这里x表示一个数组

sum(X)      %返回矩阵X各列元素之和的矩阵

comsum(x)   %返回一个数组x中元素累计和的向量

comsum(X)   %返回矩阵X各列元素之和的矩阵,和sun(X)的结果相同

.创建一个三维数组B并对其求和及累积和:

>> B(:,:,1)=[1 2 3;2 3 1;3 2 1]

 

B =

 

     1     2     3

     2     3     1

     3     2     1

 

>> B(:,:,2)=[2 4 6;4 6 2;6 4 2]

 

B(:,:,1) =

 

     1     2     3

     2     3     1

     3     2     1

 

 

B(:,:,2) =

 

     2     4     6

     4     6     2

     6     4     2

 

>> Varsum=sum(B)

 

Varsum(:,:,1) =

 

     6     7     5

 

 

Varsum(:,:,2) =

 

    12    14    10

 

>> VarCsum=cumsum(B)

 

VarCsum(:,:,1) =

 

     1     2     3

     3     5     4

     6     7     5

 

 

VarCsum(:,:,2) =

 

     2     4     6

     6    10     8

12    14    10

(2)乘积函数

一般格式:

函数名

说明

prod(x)

返回数组x中各元素乘积,x表示数组

prod(A)

返回按列向量的所有元素的积,然后组成一行向量

prod(A,dim)

给出dim维内的元素乘积

cumprod(x)  

返回一个x中各元素累计积的向量,也就是第2个元素是x中前两个元素的累计积

cumprod(A)  

返回一个矩阵,其中列元素是A中列元素的累计积

cumprod(A,dim)  

给出在dim维内的累计积

.创建三维数组B并对其求积及累计积:

 

>> B(:,:,1)=[1 2 3;2 3 1;3 2 1]

 

B(:,:,1) =

 

     1     2     3

     2     3     1

     3     2     1

 

 

B(:,:,2) =

 

     2     4     6

     4     6     2

     6     4     2

 

>> B(:,:,2)=[2 4 6;4 6 2;6 4 2]

 

B(:,:,1) =

 

     1     2     3

     2     3     1

     3     2     1

 

 

B(:,:,2) =

 

     2     4     6

     4     6     2

     6     4     2

 

>> Varprod=prod(B)

 

Varprod(:,:,1) =

 

     6    12     3

 

 

Varprod(:,:,2) =

 

    48    96    24

 

>> VarCprod=cumprod(B)

 

VarCprod(:,:,1) =

 

     1     2     3

     2     6     3

     6    12     3

 

 

VarCprod(:,:,2) =

 

     2     4     6

     8    24    12

48    96    24

(3)差分函数

调用格式

说明

diff(x)

给出一个长度为n-1的向量,它的元素是长度为n的向量x中相邻元素的差,如果x=(x1,x2,...,xn),diff(x)=(x2-x1,x3-x2,...,xn-(xn-1))

diff(A)

A的第一维内计算相邻元素的差分。对于二维矩阵来说,即diff(A)=A(2:m,:)-A(1:m-1,:)

diff(x,k)

求出第k次差分,diff(x,2)diff(diff(x))等价

diff(A,k,dim)

dim维内求出第k次差分

.已知向量x求其差分:

>> x=[1 3 7 12 35 78]

 

x =

 

     1     3     7    12    35    78

 

>> Vard1=diff(x)

 

Vard1 =

 

     2     4     5    23    43

 

>> Vard2=diff(Vard1)

 

Vard2 =

 

     2     1    18    20

5.最大值和最小值

函数格式

说明

max(x)

返回x中的最大值;如果x为复数,则返回abs(x)的最大值

max(X)

返回一个矩阵,该矩阵的元素包含矩阵X中第一维元素中的最大值。例如,X是一个二维矩阵,则返回的函数为一个向量,它的第一个元素即X中的第一列的最大值,以此类推。若X为复数,则返回abs(X)的最大值

max(A,B)

返回一个与A,B同维数的矩阵,该矩阵的每个元素均为A,B矩阵相同位置元素的最大值

min(x)

返回x中的最小值;如果x为复数,则返回abs(x)的最小值

min(X)

返回一个矩阵,该矩阵的元素包含矩阵X中第一维元素中的最小值。例如,X是一个二维矩阵,则返回的函数为一个向量,它的第一个元素即X中的第一列的最小值,以此类推。若X为复数,则返回abs(X)的最小值

min(A,B)

返回一个与A,B同维数的矩阵,该矩阵的每个元素均为A,B矩阵相同位置的最小值

.创建三维数组B,并求其最大值:

>> B(:,:,1)=[1 2 3;2 3 1;3 2 1]

 

B(:,:,1) =

 

     1     2     3

     2     3     1

     3     2     1

 

 

B(:,:,2) =

 

     2     4     6

     4     6     2

     6     4     2

 

>> B(:,:,2)=[2 4 6;4 6 2;6 4 2]

 

B(:,:,1) =

 

     1     2     3

     2     3     1

     3     2     1

 

 

B(:,:,2) =

 

     2     4     6

     4     6     2

     6     4     2

 

>> max(B)

 

ans(:,:,1) =

 

     3     3     3

 

 

ans(:,:,2) =

 

     6     6     6

 

>> whos

  Name          Size             Bytes  Class     Attributes

 

  A             1x1                  8  double              

  B             3x3x2              144  double              

  VarCprod      3x3x2              144  double              

  VarCsum       3x3x2              144  double              

  Vard1         1x5                 40  double              

  Vard2         1x4                 32  double              

  Varprod       1x3x2               48  double              

  Varsum        1x3x2               48  double              

  a             1x1                 16  double    complex   

  a2            1x1                  8  double              

  al            1x1                  8  double              

  angle_a       1x1                  8  double              

  ans           1x3x2               48  double              

  b             1x1                 16  double    complex   

  x             1x6                 48  double    

6.简单统计命令

函数

说明

mean(x)

求出向量x的算术平均值

mean(A,dim)

给出一个1xnx...xp的矩阵,它包含A中第1维的各个平均值。如果给出了dim,就在dim维内计算

median(x)

求出向量x中元素的中值

median(A,dim)

给出一个1xnx...xp的矩阵,它包含A中第1维各列的中值。如果给出了dim,就在dim维内计算

std(x)

求出向量x中元素的标准差

std(A,dim)

给出一个1xnx...xp的矩阵,它包含A中第1维各列的标准差。如果给出了dim,就在dim维内计算标准差

.求算术平均值和中值:

>> A=[1.4 9.3 3.5;1.8 9.8 3.2;1.6 10.2 3.9];

>> mean(A)

 

ans =

 

    1.6000    9.7667    3.5333

 

>> mean(A,2)

 

ans =

 

    4.7333

    4.9333

    5.2333

 

>> Varmed=median(A)

 

Varmed =

 

    1.6000    9.8000    3.5000

 

>> Varstd=std(A)

 

Varstd =

 

    0.2000    0.4509    0.3512

7.排序

函数

说明

sort(x)

返回一个向量x的元素按递增排序的向量。如果元素是复数,则使用绝对值进行排序,即sort(abs(x))

[y,ind]=sort(x)

返回下标向量ind,即y=x(ind).另外,向量yx中元素按递增排序得到的

sort(A,dim)

A中各列按递增排序,注意矩阵的行已被改变。如果给出了dim,则在dim维内进行排序

[B,Ind]=sort(A)

返回矩阵Ind和矩阵B,矩阵B的列为矩阵A中按递增排序的列,矩阵Ind的每列对应于上面提到的向量中列ind

sortrows(X,col)

对矩阵A的各行按递增排序。如果行的元素是复数,它们以absx)为主,以anglex)为辅进行排序,如果给出col,则根据指定的列数对行进行排序

.对给定矩阵升序降序排序:

>> B=[0 5 5;3 0 3;5 3 0]

 

B =

 

     0     5     5

     3     0     3

     5     3     0

 

>> [Ascend,Ind]=sort(B)

 

Ascend =

 

     0     0     0

     3     3     3

     5     5     5

 

 

Ind =

 

     1     2     3

     2     3     2

     3     1     1

 

>> Var_Descend=flipud(sort(B))      

%把矩阵sort(B)上下翻转,并把翻转后的新矩阵返回Var_Descend

 

Var_Descend =

 

     5     5     5

     3     3     3

     0     0     0

8.关系和逻辑运算及多项式运算

(1)关系操作符

关系操作符

功能说明

关系操作符

功能说明

<

小于

>=

大于或者等于

<=

小于等于

==

等于

>

大于

~=

不等于

例:

>> a=magic(3)        %输入一个魔方阵列

 

a =

 

     8     1     6

     3     5     7

     4     9     2

 

>> a>4*ones(3)     %a与全为4的数组比较

 

ans =

 

     1     0     1

     0     1     1

     0     1     0

(2)逻辑操作符

逻辑操作符

说明

&

&&

只是用于标量,表示“与”

|

||

只是用于标量,表示“或”

~

xor

异或

例:

>> a=[1,2,-3,0,0];

>> b=[0,1,0,2,0];

>> a&b

 

ans =

 

     0     1     0     0     0

 

>> a|b

 

ans =

 

     1     1     1     1     0

 

>> -a

 

ans =

 

    -1    -2     3     0     0

 

>> xor(a,b)

 

ans =

 

     1     0     1     1     0

(3)关系与逻辑函数

函数名称

功能介绍

xor(x)

异或运算

any(x)

如果向量x中有非0元素则返回1,否则返回0

all(x)

如果向量x中所有元素非0则返回1,否则返回0

isequal(x,y)

xy对于元素相等时置1,否则置0

ismember(x,y)

x元素是y是子集,相应x元素置1,否则置0

例:

>> a=[1,2,-3,0,0];

>> b=[0,1,0,2,0];

>> any(a)

 

ans =

 

     1

 

>> all(a)

 

ans =

 

     0

 

>> isequal(a,b)

 

ans =

 

     0

(4)多项式运算

函数名称

功能介绍

polyval(p,x)

计算多项式p,如果x是一个标量,则计算出多项式在x点的值;如果x是一个向量或者一个矩阵,则计算出多项式在x中所有元素上的值

[y,err]=polyval(p,x,E)

计算向量x的多项式p的值。同上,计算结果在y中,同时还根据polyfit命令给出的矩阵E返回一个误差估计向量err

polyvalm(p,A)

直接对矩阵A进行多项式计算。不是像上个命令一样对每个元素进行多项式计算,而是计算p(A)=P1An+p2An+...

poly(A)

计算矩阵A的特征多项式向量

poly(x)

给出一个长度为n+1的向量,其中的元素是次数为n的多项式的系数。这个多项式的根是长度为n的向量x中的元素

compan(p)

计算带有系数p的多项式的友矩阵A,这个矩阵的特征多项式为p

roots(p)

计算特征多项式p的根,是一个长度为n的向量,也就是方程p(x)=0的解。表达式polyroots(p)=p为真,结果可以是复数

conv(p,q)

计算多项式pq的乘积,也可以认为是pq的卷积

[k,r]=deconv(p,q)

计算多项式pqk是商多项式,r是残多项式。这个计算等价于pq的逆卷积

例:给定两个多项式MATLAB之数学运算MATLAB之数学运算。试进行以下计算:

(1)计算多项式在x=1处的值。

2)两个多项式相乘,得到一个新的多项式。

3)求多项式的根。

解:

>> p2=[2 3 -5];

>> p3=[3 0 0 -4];

>> var_valuel=polyval(p2,1)

 

var_valuel =

 

     0

 

>> var_value2=polyval(p3,1)

 

var_value2 =

 

    -1

 

>> p5=conv(p2,p3)

 

p5 =

 

     6     9   -15    -8   -12    20

>> roots2=roots(p2)

 

roots2 =

 

   -2.5000

    1.0000

 

>> roots3=roots(p3)

 

roots3 =

 

  -0.5503 + 0.9532i

  -0.5503 - 0.9532i

   1.1006