数据分析与多项式计算
数据统计分析
max():求向量或矩阵元素的最大值。
min():求向量或矩阵元素的最小值。
当参数为向量时:
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 行上的最大值。
求矩阵的最大值:
1 | >> max(max(A)) |
1 | >> max(A(:)) |
mean():求算术平均值。
median():求中值。
sum():求和函数。
prod():求积函数。
cumsum():累加和函数。
cumprod():累乘积函数。
标准差:
std():计算标准差函数。
调用格式:
std(X):计算向量 X 的标准差。
std(A):计算矩阵 A 是各列的标准差。
std(A, flag, dim):flag 取 0 或 1,当 flag = 0 时,按 S1 公式计算样本标准差;当 flag = 1 时,按 S2 公式计算总体标准差。默认情况下,flag = 0,dim = 1。
生成满足正态分布的 50000 * 4 随机矩阵,用不同的形式求其各列之间的标准差。
1 | x = randn(50000, 4); |
相关系数:
corrcoef()
调用格式:
corrcoef(A):返回的相关系数矩阵的第 i 行第 j 列元素表示矩阵 A 中第 i 列和第 j 列的相关系数。
corrcoef(X, Y):这里 X,Y是向量。
排序:
sort()
调用格式:
sort(X):对向量 X 按升序排序。
[Y, I] = sort(A, dim, mode):其中 dim 指明对 A 的列还是行进行排序,mode 指明升序还是降序排序,若取 “ascend”,则按升序;若取 “descend”,则按降序。默认为升序。输出参数中,Y 是排序后的矩阵,I 记录 Y 中元素在 A 中的位置。
多项式计算
多项式乘法
conv(P1, P2):P1,P2是多项式系数向量。
多项式除法
[Q, r] = deconv(P1, P2):Q 返回多项式 P1 除以 P2 的商式,r 返回 P1 除以 P2 的余式。
多项式的求导
polyder()
p = polyder(P):求多项式 P 的导函数。
p = polyder(P, Q):求 P*Q 的导函数。
[p, q] = polyder(P, Q):求 P/Q 的导函数。导函数的分子存入 p,分母存入 q。
多项式的求值
polyval(p, x):代数多项式求值。p 为多项式系数向量,x 可以是标量、向量或矩阵。
polyvalm(p, x):矩阵多项式求值。x 为方阵。
多项式求根
roots(p):p 为多项式系数向量。
若已知多项式的全部根,则可以用 poly 函数建立起该多项式:p = poly(x)。
求多项式 - 38.89 t^2 + 126.11 t - 3.42 的极大值:
1 | p = [-38.89, 126.11, -3.42]; |
数据插值
数据插值可以根据有限个点的取值状况,合理估算出附近其他点的取值,从而节约大量的实验和测试资源。数据插值是一种函数逼近的方法。
interp1():一维插值函数。
Y1 = interp1(X, Y, X1, method)
根据 X,Y 的值,计算函数在 X1 处的值。其中,X,Y是两个等长的已知向量,分别表示采样点和采样值。X1 是一个向量或标量,表示要插值的点。
1 | x = [0,3,5,7,9,11,12,13,14,15]; |
method 用于指定插值方法,常用的取值有以下四种:
linear:线性插值,默认方法。将插值点与靠近的两个数据点用直线连接,然后在直线上选取对应插值点的数据。
nearest:最近插值点。选择最近样本点的值作为插值数据。(如果是中间点,则取后一个数据点的值)
pchip:分段 3 次埃尔米特插值。采用分段三次多项式,除满足插值条件,还需满足在若干节点处相邻段插值函数的一阶导数相等,使得曲线光滑的同时,还具有保形性。
spline:3 次样条插值。每个分段内构造一个三次多项式,使其插值函数除满足插值条件外,还要求在各节点处具有连续的一阶和二阶导数。
为什么这两种插值方法都用 3 次多项式而不用更高次的?
多项式次数并非越高越好。次数越高,越容易产生震荡而偏离原函数,这种现象称为龙格(Runge)现象。
interp2():二维插值函数
Z1 = interp2(X, Y, Z, X1, Y1, method)
其中,X,Y 是两个向量,表示两个参数的采样点,Z 是采样点对应的函数值。X1,Y1 是两个标量或向量,表示要插值的点。
曲线拟合
1 | x = 1790:10:2020; |
与数据插值类似,曲线拟合也是一种函数逼近的方法,但是拟合出的曲线不一定经过所有样本点。
曲线拟合的原理:最小二乘法
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)。
本文作者 : preccrep
原文链接 : https://preccrep.github.io/2020/07/26/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E4%B8%8E%E5%A4%9A%E9%A1%B9%E5%BC%8F%E8%AE%A1%E7%AE%97/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!