zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    django ---解决跨域的问题
    python-isinstance函数
    python每日一学-os模块常用函数
    调用父类方法super
    fiddler小运用-断点
    劝告
    Django model字段
    Jenkins自动化部署前端
    解决react使用antd table组件固定表头后,表头和表体列不对齐以及配置fixed固定左右侧后行高度不对齐
    高德地图判断点的位置是否在浏览器可视区域内
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2330270.html
Copyright © 2011-2022 走看看