首页 > 其他分享 >「matlab学习笔记」数据分析与多项式计算

「matlab学习笔记」数据分析与多项式计算

时间:2023-02-24 23:11:06浏览次数:64  
标签:数据分析 函数 插值 多项式 矩阵 matlab 向量 MATLAB

中国大学MOOC 科学计算与MATLAB语言(点击此处跳转)

MATLAB官方文档(点击此处跳转)

5.1 数据统计分析

常用统计函数

函数 解释
max() 求向量或矩阵的最大元素
min() 求向量或矩阵的最小元素
mean() 求算术平均值
median() 求中值

当参数为向量时,上述函数有两种调用格式:

  • y=max(X):返回向量X的最大值存入y,如果X中包含复数元素,则按模取最大值。
  • [y,k]=max(X):返回向量X的最大值存入y,最大值元素的序号存入k,如果X中包含复数元素,则按模取最大值。

当参数为矩阵时,函数有三种调用格式:

  • max(A):返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。
  • [Y,U]=max(A):返回行向量Y和U,Y向量记录A中每列的最大值,U向量记录每列最大值元素的行号。
  • max(A,[],dim):dim取1或2。dim取1时,该函数的功能和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。

思考:对矩阵按行求最大元素,仅使用第一种格式,能够做到吗?
答:将矩阵A转置A'

思考:用什么方法只调用一次max函数就能求得整个矩阵的最大值?
答:将矩阵A的每一列元素堆叠起来,成为一个列向量A(:)

思考:有了平均值,为什么还要中值?
答:平均值容易受极端数据影响,此时中值更能反映数据集的水平。

常用算术函数

函数 解释
sum() 求和函数
prod() 求积函数
cumsum() 累加和函数
cumprod() 累乘积函数

设\(U=(u_1,u_2,u_3,\cdots,u_n)\)是一个向量,V、W是与U等长的另外两个向量,并且

\[V=(\sum_{i=1}^1u_i,\sum_{i=1}^2u_i,\sum_{i=1}^3u_i,\cdots,\sum_{i=1}^nu_i) \quad W=(\prod_{i=1}^1u_i,\prod_{i=1}^2u_i,\prod_{i=1}^3u_i,\cdots,\prod_{i=1}^nu_i) \]

则分别称V、W为U的累加和向量和累乘积向量。

求标准差与相关系数

标准差用于计算数据偏离平均数的距离的平均值,其计算公式为
样本标准差

\[S_1=\sqrt{\cfrac{1}{N-1}\sum_{i=1}^N(x_i-\overline{x})^2} \]

总体标准差

\[S_2=\sqrt{\cfrac{1}{N}\sum_{i=1}^N(x_i-\overline{x})^2} \]

MATLAB中计算标准差的函数为std(),其调用格式为:

  • std(X):计算向量X的标准差。
  • std(A):计算矩阵A的各列的标准差。
  • std(A,flag,dim): flag取0或1,当flag=0时,按S1所列公式计算样本标准方差;当flag=1时,按S2所列公式计算总体标准方差。在默认情况下,flag=0,dim=1。

相关系数能够反映两组数据序列之间相互关系,其计算公式为

\[r=\cfrac{\sum (x_i-\overline{x})(y_i-\overline{y})}{\sqrt{\sum (x_i-\overline{x})^2\sum (y_i-\overline{y})^2}} \quad [-1,+1] \]

在MATLAB中,计算相关系数的函数为corrcoef(),其调用格式为:

  • corrcoef(A):返回由矩阵A所形成的一个相关系数矩阵,其中,第i行第j列的元素表示原矩阵A中第i列和第j列的相关系数。
  • corrcoef(X,Y):在这里,X,Y是向量,它们与corrcoef([X,Y])的作用一样,用于求X、Y向量之间的相关系数。

排序

在MATLAB中,排序函数为sort(),其调用格式为:

  • sort(X):对向量X按升序排列。
  • [Y,I]=sort(A,dim,mode),其中dim指明对A的列还是行进行排序。mode指明按升序还是降序排序,若取“ascend”,则按升序;若取“descend”,则按降序,默认为升序。输出参数中,Y是排序后的矩阵,而I记录Y中的元素在A中位置。

5.2 多项式计算

多项式的表示

\[p(x)=a_nx^n+a_{n-1}x^{n-1}+a_{n-2}x^{n-2}+\cdots+a_1x+a_0 \]

\[[a_n,a_{n-1},a_{n-2},\cdots,a_1,a_0] \]

多项式的四则运算

四则运算 函数 参数说明
多项式加减 相应向量相加减 同次项才能进行加减,可高次项添0扩展至等长
多项式乘法 conv(P1,P2) P1、P2是两个多项式系数向量
多项式除法 [Q,r]=deconv(P1,P2) Q返回多项式P1除以P2的商式,r返回P1除以P2的余式

说明:deconv是conv的逆函数,因此P1=conv(Q,P2)+r成立。

多项式的求导

在MATLAB中,多项式求导函数为polyder(),其调用格式为:

  • p=polyder(P):求多项式P的导函数。
  • p=polyder(P,Q):求P×Q的导函数。
  • [p,q]=polyder(P,Q):求P/Q的导函数,导函数的分子存入p,分母存入q。

思考:对于[p,q]=polyder(a,b),如果换成先求商再求导,结果一样吗?
答:不一样,两者的计算方式不同,输出也不同。

多项式的求值

  • polyval(p,x):代数多项式求值,其中,p为多项式系数向量,x可以是标量、向量或矩阵。若x为标量,则求多项式在该点的值;若x为向量或矩阵,则对向量或矩阵中的每个元素求多项式的值。
  • polyvalm(p,x):矩阵多项式求值,其调用格式与polyval相同,但含义不同。polyvalm函数要求x为方阵,以方阵为自变量求多项式的值。

多项式的求根

  • 在MATLAB中,多项式求根函数为roots(p),其中p为多项式的系数向量。
  • 若已知多项式的全部根,则可以用poly函数建立起该多项式,其调用格式为p=poly(x)

5.3 数据插值

在MATLAB中,一维插值函数为interp1(),其调用格式为:
Y1=interp1(X,Y,X1,method)
该语句将根据X、Y的值,计算函数在X1处的值。其中,X、Y是两个等长的已知向量,分别表示采样点和采样值。X1是一个向量或标量,表示要插值的点。

method参数用于指定插值方法,常用的取值有以下四种:

  • linear:线性插值,默认方法。将与插值点靠近的两个数据点用直线连接,然后在直线上选取对应插值点的数据。
  • nearest:最近点插值。选择最近样本点的值作为插值数据。
  • pchip:分段3次埃尔米特插值。采用分段三次多项式,除满足插值条件,还需满足在若干节点处相邻段插值函数的一阶导数相等,使得曲线光滑的同时,还具有保形性。
  • spline:3次样条插值。每个分段内构造一个三次多项式,使其插值函数除满足插值条件外,还要求在各节点处具有连续的一阶和二阶导数。

思考:为什么这两种插值方法都用3次多项式而不用更高次的?
答:多项式次数并非越高越好。次数越高,越容易产生震荡而偏离原函数,这种现象称为龙格(Runge)现象。

四种方法的比较

  • 线性插值和最近点插值方法比较简单。其中线性插值方法的计算量与样本点n无关。n越大,误差越小。
  • 3次埃尔米特插值和3次样条插值都能保证曲线的光滑性。相比较而言,3次埃尔米特插值具有保形性;而3次样条插值要求其二阶导数也连续,所以插值函数的性态更好。

MATLAB中的二维插值函数为interp2(),其调用格式为:
Z1=interp2(X,Y,Z,X1,Y1,method)
其中,X、Y是两个向量,表示两个参数的采样点,Z是采样点对应的函数值。X1、Y1是两个标量或向量,表示要插值的点。二维插值所采用的方法与一维插值基本相同,但不支持pchip方法。

MATLAB中的等高线绘制函数contour(),其调用格式为:
contour(X,Y,Z,n)
其中,Z表示距X-Y平面的高度,n指定了等高线的条数。

5.4 曲线拟合

MATLAB中的多项式拟合函数为polyfit(),其功能为求得最小二乘拟合多项式系数,其调用格式为:

  • P=polyfit(X,Y,m)
  • [P,S]=polyfit(X,Y,m)
  • [P,S,mu]=polyfit(X,Y,m):根据样本数据X和Y,产生一个m次多项式P及其在采样点的误差数据S,mu是一个二元向量,mu(1)是mean(X),而mu(2)是std(X)。

友链

详细版笔记请跳转爆豆的博客

【Matlab学习1.1】操作界面、搜索路径

标签:数据分析,函数,插值,多项式,矩阵,matlab,向量,MATLAB
From: https://www.cnblogs.com/YuukiAsuna/p/17149475.html

相关文章

  • m基于改进PSO粒子群优化的RBF神经网络解耦控制算法matlab仿真
    1.算法描述智能控制的思想最早来自傅京孙教授[,他通过人机控制器和机器人方面的研究,首先把人工智能的自觉推理方法用于学习控制系统,将智能控制概括为自动控制和人工智能的结......
  • m基于matlab的GPS卫星信号捕获和数据解析仿真
    1.算法描述       全球定位系统(gps)是一种全天候、全球覆盖、高精度、自动化的卫星导航定位系统,该系统向有适当接收设备的全球范围用户提供精确、连续的三维位置......
  • m基于改进PSO粒子群优化的RBF神经网络解耦控制算法matlab仿真
    1.算法描述        智能控制的思想最早来自傅京孙教授[,他通过人机控制器和机器人方面的研究,首先把人工智能的自觉推理方法用于学习控制系统,将智能控制概括为自动......
  • m基于matlab的GPS卫星信号捕获和数据解析仿真
    1.算法描述全球定位系统(gps)是一种全天候、全球覆盖、高精度、自动化的卫星导航定位系统,该系统向有适当接收设备的全球范围用户提供精确、连续的三维位置和速度信息。gps......
  • Python数据分析
    数据分析01_abnormal_checkCode1#-*-coding:utf-8-*-23#代码3-1使用describe()方法即可查看数据的基本情况4importpandasaspd5caterin......
  • matlab 矩阵乘法与点乘
    一,*和.*的联系和区别。1,在进行数值运行和数值乘矩阵,这两种没有区别,例如:a*b=a.*b;a*B=a.*B;B*a=B.*a(其中小写字母表示数值,大写字母表示矩阵,下同)。2,在处理矩阵乘......
  • 「matlab学习笔记」MATLAB绘图
    中国大学MOOC科学计算与MATLAB语言(点击此处跳转)MATLAB官方文档(点击此处跳转)4.1二维曲线plot函数(1)plot(x)当x为实数向量时,则分别以该向量元素的下标和数值为横、......
  • R数据分析:跨层中介的原理和做法,实例操练
    之前有同学问过我211模型,没听过这个词,感觉怎么有这么不严肃的名字,偷偷去查了查,211模型,其实就是嵌套数据的中介的情形之一。根本上讲还是属于多水平模型的路径分析(用多水平......
  • 如何在多项式时间内解决最大团问题
    如何在多项式时间内解决最大团问题本篇文章将会教你如何随机化硬草NP-Hard。SolutionA最大团问题有一个非常直观、简洁、但是错误的贪心做法:每次贪心地往当前最大团内......
  • Matlab 2016b 中文破解版软件包下载及图文安装教程​
    MATLAB是美国MathWorks公司出品的商业数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语......