Matlab学习笔记(三)——数值计算

拥有回忆 提交于 2020-01-11 22:35:35

3.1 矩阵特征值和奇异值

3.1.1 行列式、逆和秩

  • det(A) 求方阵A的行列式 rank(A) 求A的秩 inv(A) 求A的逆矩阵 pinv(A) 求A的伪逆

3.1.2 特征值和特征向量的求取

  • E=eig(A):用于求A的全部特征值,构成向量E
  • [V,D]=eig(A):用于求A的全部特征值,构成对角矩阵D,并求A的特征向量构成V的列向量

3.2 概率和统计

3.2.1 基本分析函数

  1. sum函数:用于求矩阵列矩阵元素或向量的和
    B=sum(A):若A为向量,则返回所有元素的和;如A为矩阵,则返回其他各列所有元素和
    B=sum(A,dim):返回A中第dim维的所有元素和

  2. cumsum函数:用于求矩阵或向量的累积和
    B=cumsum(A):若输入参数A为一个向量,则返回该向量所有元素累积和,若A为矩阵,则返回该矩阵各列元素的累计和,即返回一个行向量
    B=cumsum(A,dim) A为矩阵,若dim=1,则表示在列方向上求累计和;若dim=2,则表示在行方向上求累计和
    cumsum是累计和,结果中含有每一步的运算结果,sum给出的则是最终求和的结果

  3. prod函数:用于求矩阵元素的积
    B=prod(A):若A为向量,则返回所有所元素的积;若A为矩阵,则返回各列所有元素积
    B=prod(A,dim):返回A中第dim维所有元素的积

  4. sort函数:用于对矩阵元素按升序或降序进行排列
    B=sort(A):对A进行默认升序排序,若A为矩阵,则对各列进行排序
    B=sort(A,dim):对矩阵A中的第dim维进行升序排序
    B=sort(…,mode) 按照指定升序或降序进行排序。mode可以是ascend或者descend
    [B,IX]=sort(A,…) 对A进行排序,并返回排序后个元素的下标值

  5. max函数和min函数:返回向量或矩阵的最大或最小元素
    C=max(A):A若为向量则返回该向量中所有元素的最大值,若为矩阵则返回一个行向量
    C=max(A,B):比较A,B中对应元素的大小,返回一个A、B中较大元素组成的矩阵或向量
    C=max(A,[],dim):返回A中第dim维的最大值
    [C,I]=max(…):返回向量或矩阵中的最大值及其下标

  6. 其他函数
    mean函数用于求平均值 median函数用于求中值 std函数用于求标准差
    var函数用于求方差 cov函数用于求协方差矩阵 corrcoef函数用于计算矩阵相关系数

3.3 数值求导与积分

3.3.1 导数与梯度

  1. 导数
    Y=diff(X):求X相邻行元素之间的一阶差分
    Y=diff(X,n):求X相邻行元素之间的n阶差分

  2. 梯度
    FX=gradient(F):返回F的一维数值梯度,F是一个向量
    [FX,FY]=gradient(F):返回二维数值梯度的x和y部分,F是一个矩阵

3.3.2 一元函数的数值积分

  1. quad函数:采用自适应Simpson方法计算积分,特点是精度高,较为常用
    q=quad(fun,a,b):计算函数fun在a到b区间内的数值积分
    q=quad(fun,a,b,tol):用指定的绝对误差tol代替默认误差

  2. quadl函数:采用自适应Lobatto方法计算积分,特点是精度较高,最为常用
    q=quadl(fun,a,b):计算函数fun在a到b区间内的数值积分
    q=quadl(fun,a,b,tol):用指定的绝对误差tol代替默认误差

  3. trapz函数:使用梯形法进行积分,特点是速度快精度差

  4. cumtrapz函数:用于求累积的梯形数值的积分

3.3.3 二重积分的数值计算

  • q=dblquad(fun,xmin,xmax,ymin,ymax)

3.4 插值

3.4.1 一维数据插值

  • 一维函数插值常用函数yi=interp1(x,y,xi,method) y为函数值矢量,x为自变量取值范围,x与y的长度必须相同,xi为插值点的向量或者数组,method为插值方法选项。
  • 临近点插值 method=nearest (速度最快但平滑性最差)
  • 线性插值 method=linear:在两个数据点之间连接直线,计算给定的插值点在直线上的值作为插值结果(占用内存和运算时间较临近点插值大/长,其结果是连续的,但顶点处斜率会改变)
  • 三次样条插值 method=spline:通过数据点拟合出三次样条曲线,计算过给定的插值点在曲线上的值作为插值的结果(运算时间最长,其插值数据和导数都是连续的,平滑性最好)
  • 立方插值 method=pchip或cubic:通过分段立方Hermite插值方法计算插值结果

3.4.2 二维数据插值

  • 主要运用于图形图像处理和三维曲线拟合等领域。一般语法为:zi=interp2(x,y,z,xi,yi,method),interp1的四种插值方法也可以在interp2中使用

3.4.3 样条插值

  • 基本思想:设有一组已知的数据点,目标是找一组拟合多项式,在拟合过程中,对于此数据组的每个相邻样点对,用三次多项式去拟合样点之间的曲线,为保证拟合的唯一性,对该三次多项式在样点处的一阶、二阶导数加以约束。这样除被研究区间端点外,所有内样点处可保证样条有连续的一阶、二阶导数。
  • yy=spline(x,y,xx):根据样点数据 (x,y),求xx所对应的三次样条插值
  • pp=spline(x,y):从样点数据 (x,y)获得逐段多项式样条函数数据pp

3.5 曲线拟合

3.5.1 曲线拟合的实现

  • 可以用polyfit函数来求最小二乘拟合多项式的系数,另外可以用polyval函数按所得的多项式计算指定值
  • [p,s]=polyfit(x,y,m) x,y为测量而得的原始数据,为向量,m为欲拟合的多项式的次数
  • polyfit将根据原始数据x、y得到一个m次拟合多项式P(x)的系数,该多项式能在最小二乘意义下最优地近似函数f(x),返回的结果中p为m次拟合多项式的系数,而s中的数据则是拟合多项式有关误差估计的结构数组

3.6 Fourier分析

  1. 函数fft和ifft
    Y=fft(X):如果X是向量,则采用快速傅里叶算法作X的离散傅里叶变换;若X为矩阵,则计算矩阵每一列的傅里叶变换
    Y=fft(X,n):用参数n限制X的长度,若X的长度小于n,则用0补足,若X的长度大于n,则去掉长出的部分

  2. fft2和ifft2
    用于对数据作二维快速傅里叶变换和傅里叶反变换。数据的二维傅里叶变换相当于,先对X的列做一维傅里叶变换,再对变换结果的行做一维傅里叶变换

  3. fftshift和ifftshift
    用于把傅里叶变换结果Y(频域数据)中的直流分量(频率为0处的值)移到中间位置;
    若Y为向量,则交换Y的左右半边

以上内容全部来自《MATLAB从入门到精通》

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!