MATLAB数值计算与数据分析(2)

2.1.2  其他常用函数

函数  fix

功能  朝零方向取整

格式  B = fix(A)   %A的每一个元素朝零的方向取整数部分,返回与A同维的数组。对于复数参量A,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝零方向的整数部分。

2-14

   >>A = [-1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i];

   >>B = fix(A)

计算结果为:

   B =

      Columns 1 through 4 

          -1.0000              0             3.0000             5.0000 

      Columns 5 through 6 

          7.0000             2.0000 + 3.0000i

函数  roud

功能  朝最近的方向取整。

格式  Y = round(X)   %X的每一个元素朝最近的方向取整数部分,返回与X同维的数组。对于复数参量X,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝最近方向的整数部分。

2-15

>>A = [-1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i];

>>Y = round(A)

计算结果为:

Y =

     Columns 1 through 4 

       -2.0000      0         3.0000         6.0000 

     Columns 5 through 6 

       7.0000     2.0000 + 4.0000i

函数  floor

功能  朝负无穷大方向取整

格式  B = floor(A)   %A的每一个元素朝负无穷大的方向取整数部分,返回与A同维的数组。对于复数参量A,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝负无穷大方向的整数部分。

2-16

>>A = [-1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i];

>>F = floor(A)

计算结果为:

F =

    Columns 1 through 4 

      -2.0000         -1.0000       3.0000         5.0000 

    Columns 5 through 6 

      7.0000      2.0000 + 3.0000i

函数  rem

功能  求作除法后的剩余数

格式  R = rem(X,Y)   %返回结果X - fix(X./Y).*Y,其中X、Y应为正数。若X、Y为浮点数,由于计算机对浮点数的表示的不精确性,则结果将可能是不可意料的。fix(X./Y)为商数X./Y朝零方向取的整数部分。若X与Y为同符号的,则rem(X,Y)返回的结果与mod(X,Y)相同,不然,若X为正数,则rem(-X,Y) = mod(-X,Y) - Y。该命令返回的结果在区间[0sign(X)*abs(Y)],若Y中有零分量,则相应地返回NaN。

2-17

    >>X = [12 23 34 45];

    >>Y = [3 7 2 6];

    >>R = rem(X,Y)

    计算结果为:

    R =

        0     2     0     3

函数  ceil

功能  朝正无穷大方向取整

格式  B = floor(A)   % A的每一个元素朝正无穷大的方向取整数部分,返回与A同维的数组。对于复数参量A,则返回一复数,其分量的实数与虚数部分分别取原复数的、朝正无穷大方向的整数部分。

2-18

>>A = [-1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i];

>>B = ceil(A)

计算结果为:

B =

    Columns 1 through 4 

     -1.0000        0         4.0000         6.0000 

    Columns 5 through 6 

     7.0000    3.0000 + 4.0000i

函数  exp

功能  以e为底数的指数函数

格式  Y = exp(X)   %对参量X的每一分量,求以e为底数的指数函数Y。X中的分量可以为复数。对于复数分量如,z = x +i*y,则相应地计算:e^z = e^x*(cos(y) + i*sin(y))。

2-19

>>A = [-1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i];

>>Y = exp(A)

计算结果为:

    Y =

       1.0e+003 *

       Columns 1 through 4 

          0.0001        0.0008        0.0231         0.2704

       Columns 5 through 6 

          1.0966   -0.0099 - 0.0049i

函数  expm

功能  求矩阵的以e为底数的指数函数

格式  Y = expm(X)   %计算以e为底数、x的每一个元素为指数的指数函数值。若矩阵x有小于等于零的特征值,则返回复数的结果。

说明  该函数为一内建函数,它有三种计算算法:

1)使用文件expm1.m中的用比例法与二次幂算法得到的Pad近似值;

2)使用Taylor级数近似展开式计算,这种计算在文件expm2.m中。但这种一般计算方法是不可取的,通常计算是缓慢且不精确的;

3)在文件expm3.m中,先是将矩阵对角线化,再把函数计算出相应的的特征向量,最后转换过来。但当输入的矩阵没有与矩阵阶数相同的特征向量个数时,就会出现错误。

例2-20

>>A=hilb(4);

>>Y = expm(A)

计算结果为:

Y =

    3.2506    1.2068    0.8355    0.6417

    1.2068    1.7403    0.5417    0.4288

    0.8355    0.5417    1.4100    0.3318

    0.6417    0.4288    0.3318    1.2729

函数  log

功能  自然对数,即以e为底数的对数。

格式  Y = log(X)   %对参量X中的每一个元素计算自然对数。其中X中的元素可以是复数与负数,但由此可能得到意想不到的结果。若z = x + i*y,则log对复数的计算如下:log (z) = log (abs (z)) + i*atan2(y,x)

2-21  下面的语句可以得到无理数π的近似值:

>>Pi = abs(log(-1))

计算结果为:

Pi =

    3.1416

函数  log10

功能  常用对数,即以10为底数的对数。

格式  Y = log10(X)   %计算X中的每一个元素的常用对数,若X中出现复数,则可能得到意想不到的结果。

2-22

>>L1 = log10(realmax)  % 由此可得特殊变量realmax的近似值

>>L2 = log10(eps)  % 由此可得特殊变量eps的近似值

>>M = magic(4);

>>L3 = log10(M)

计算结果为:

L1 =

     308.2547

L2 =

     -15.6536

L3 =

     1.2041    0.3010    0.4771    1.1139

     0.6990    1.0414    1.0000    0.9031

     0.9542    0.8451    0.7782    1.0792

     0.6021    1.1461    1.1761         0

函数  sort

功能  把输入参量中的元素按从小到大的方向重新排列

格式  B = sort(A)   %沿着输入参量A的不同维的方向、从小到大重新排列A中的元素。A可以是字符串的、实数的、复数的单元数组。对于A中完全相同的元素,则按它们在A中的先后位置排列在一块;若A为复数的,则按元素幅值的从小到大排列,若有幅值相同的复数元素,则再按它们在区间[-π]的幅角从小到大排列;若A中有元素为NaN,则将它们排到最后。若A为向量,则返回从小到大的向量,若A为二维矩阵,则按列的方向进行排列;若A为多维数组,sort(A)把沿着第一非单元集的元素象向量一样进行处理。

B = sort(A,dim)        %沿着矩阵A(向量的、矩阵的或多维的)中指定维数dim方向重新排列A中的元素。

[B,INDEX] = sort(A,)   %输出参量B的结果如同上面的情形,输出INDEX是一等于size(A)的数组,它的每一列是与A中列向量的元素相对应的置换向量。若A中有重复出现的相同的值,则返回保存原来相对位置的索引。

2-23

>>A = [-1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i];

>>[B1,INDEX] = sort(A)

>>M = magic(4);

>>B2 = sort(M)

计算结果为:

    B1 =

        Columns 1 through 4 

          -0.2000      -1.9000       3.1416         2.4000 + 3.6000i

        Columns 5 through 6 

           5.6000      7.0000

    INDEX =

          2     1     3     6     4     5

    B2 =

         4     2     3     1

         5     7     6     8

         9     11    10    12

         16    14    15    13

函数  abs

功能  数值的绝对值与复数的幅值

格式  Y = abs(X)   %返回参量X的每一个分量的绝对值;若X为复数的,则返回每一分量的幅值:abs(X) = sqrt(real(X).^2+imag(X).^2)。

2-24

>>A = [-1.9, -0.2, 3.1415926, 5.6, 7.0, 2.4+3.6i];

>>Y = abs(A)

计算结果为:

Y =

     1.9000    0.2000    3.1416    5.6000    7.0000    4.3267

函数  conj

功能  复数的共轭值

格式  ZC = conj(Z)   %返回参量Z的每一个分量的共轭复数:

conj(Z) = real(Z) - i*imag(Z) 

函数  imag

功能  复数的虚数部分

格式  Y = imag(Z)    %返回输入参量Z的每一个分量的虚数部分。

2-25

>>imag(2+3i)

计算结果为:

ans = 

      3

函数  real

功能  复数的实数部分。

格式  Y = real(Z)   %返回输入参量Z的每一个分量的实数部分。

2-26

>>real(2+3i)

计算结果为:

ans =

     2

函数  angle

功能  复数的相角

格式  P = angle(Z)   %返回输入参量Z的每一复数元素的、单位为弧度的相角,其值在区间[-π,π]上。

说明  angle(z) = imag (log(z)) = atan2 (imag(z),real(z))

2-27

>>Z =[1-i, 2+i, 3-i, 4+i;

>>1+2i,2-2i,3+2i,4-2i;

>>1-3i,2+3i,3-3i,4+3i;

>>1+4i,2-4i,3+4i,4-4i];

>>P = angle(Z)

计算结果为:

       P =

           -0.7854    0.4636   -0.3218    0.2450

            1.1071   -0.7854    0.5880   -0.4636

           -1.2490    0.9828   -0.7854    0.6435

            1.3258   -1.1071    0.9273   -0.7854

函数  complex

功能  用实数与虚数部分创建复数

格式  c = complex(a,b)   %用两个实数ab创建复数c=a+bi。输出参量cab同型(同为向量、矩阵、或多维阵列)。该命令比下列形式的复数输入更有用:a + i*b 或a + j*b因为ij可能被用做其他的变量(不等于sqrt(-1)),或者ab不是双精度的。 

c = complex(a)    %输入参量a作为输出复数c的实部,其虚部为0c = a+0*i

2-28

>>a = uint8([1;2;3;4]);

>>b = uint8([4;3;2;1]);

>>c = complex(a,b)

计算结果为:

c =

   1.0000 + 4.0000i

   2.0000 + 3.0000i

   3.0000 + 2.0000i

   4.0000 + 1.0000i

函数  mod

功能  模数(带符号的除法余数)

用法  M = mod(X,Y)   %输入参量X、Y应为整数,此时返回余数X -Y.*floor(X./Y),若Y≠0,或者是X。若运算数xy有相同的符号,则mod(X,Y)等于rem(X,Y)。总之,对于整数x,y,有:mod(-x,y) = rem(-x,y)+y。若输入为实数或复数,由于浮点数在计算机上的不精确表示,该操作将导致不可预测的结果。

2-29

>>M1 = mod(13,5) 

>>M2 = mod([1:5],3) 

>>M3 = mod(magic(3),3)

计算结果为:

M1 =

     3

M2 =

     1     2     0     1     2

M3 =

     2     1     0

     0     2     1

     1     0     2

函数  nchoosek

功能  二项式系数或所有的组合数。该命令只有对n<15时有用。

函数  C = nchoosek(n,k)   %参量n,k为非负整数,返回n! / ( (n-k)! k!),即一次从n个物体中取出k个的组合数。

C = nchoosek(v,k)   %参量vn维向量,返回一矩阵,其行向量的分量为一次性从v个物体中取k个物体的组合数。矩阵 C包含=n! / ( (n-k)! k!)行与k列。

例2-30

>>C = nchoosek(2:2:10,4)

计算结果为:

       C =

           2     4     6     8

           2     4     6    10

           2     4     8    10

           2     6     8    10

           4     6     8    10

函数  rand

功能  生成元素均匀分布于(0,1)上的数值与阵列

用法  Y = rand(n)   %返回n*n阶的方阵Y,其元素均匀分布于区间(0,1)。若n不是一标量,在显示一出错信息。

Y = rand(m,n)Y = rand([m n])          %返回阶数为m*n的,元素均匀分布于区间(0,1)上矩阵Y。

Y = rand(m,n,p,)Y = rand([m n p])    %生成阶数m*n*p*…的,元素服从均匀分布的多维随机阵列Y。

Y = rand(size(A))   %生成一与阵列A同型的随机均匀阵列Y

rand            %该命令在每次单独使用时,都返回一随机数(服从均匀分布)。

s = rand('state')    %返回一有35元素的列向量s,其中包含均匀分布生成器的当前状态。该改变生成器的当前的状态,见表2-1

2-1

命   令

含   义

Rand(’state’,s)

设置状态为s

Rand(’state’,0)

设置生成器为初始状态

Rand(’state’,k)

设置生成器第k个状态(k为整数)

Rand(’state’,sum(100*clock))

设置生成器在每次使用时的状态都不同(因为clock每次都不同)

例:

>>R1 = rand(4,5)

>>a = 10; b = 50;

>>R2 = a + (b-a) * rand(5)  % 生成元素均匀分布于(10,50)上的矩阵

计算结果可能为:

R1 =

    0.6655    0.0563    0.2656    0.5371    0.6797

    0.3278    0.4402    0.9293    0.5457    0.6129

    0.6325    0.4412    0.9343    0.9394    0.3940

    0.5395    0.6501    0.5648    0.7084    0.2206

R2 =

   33.6835   19.8216   36.9436   49.6289   46.4679

   18.5164   34.2597   15.3663   31.0549   49.0377

   19.0026   37.1006   33.6046   39.5361   13.9336

   12.4641   12.9804   35.5420   23.2916   46.8304

   28.5238   48.7418   49.0843   13.0512   10.9265

函数  randn

功能  生成元素服从正态分布(N(0,1))的数值与阵列

格式  Y = randn(n)    %返回n*n阶的方阵Y,其元素服从正态分布N(0,1)。若n不是一标量,则显示一出错信息。

Y = randn(m,n)Y = randn([m n])   %返回阶数为m*n的,元素均匀分布于区间(0,1)上矩阵Y。

Y = randn(m,n,p,)Y = randn([m n p])    %生成阶数m*n*p*…的,元素服从正态分布的多维随机阵列Y。

Y = randn(size(A))    %生成一与阵列A同型的随机正态阵列Y

randn    %该命令在每次单独使用时,都返回一随机数(服从正态分布)。

s = randn('state')      %返回一有2元素的向量s,其中包含正态分布生成器的当前状态。该改变生成器的当前状态,见表2-2

2-2

命    令

含    义

randn(’state’,s)

设置状态为s

randn(’state’,0)

设置生成器为初始状态

rand(’state’,k)

设置生成器第k个状态(k为整数)

rand(’state’,sum(100*clock))

设置生成器在每次使用时的状态都不同(因为clock每次都不同)

例:

>>R1 = rand(4,5)

>>R2 = 0.6 + sqrt(0.1) * randn(5)

计算结果可能为:

R1 =

    0.2778    0.2681    0.5552    0.5167    0.8821

    0.2745    0.3710    0.1916    0.3385    0.5823

    0.9124    0.5129    0.4164    0.2993    0.0550

    0.4125    0.2697    0.1508    0.9370    0.5878

R2 =

    0.4632    0.9766    0.5410    0.6360    0.6931

    0.0733    0.9760    0.8295    0.9373    0.1775

    0.6396    0.5881    0.4140    0.6187    0.8259

    0.6910    0.7035    1.2904    0.5698    1.1134

    0.2375    0.6552    0.5569    0.3368    0.3812

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值