<>比较两条曲线的相似度

给了两个近似成比例的函数(点族 x s 1 , y s 1 , x s 2 , y s 2
\boldsymbol{x}_{\mathrm{s}1},\boldsymbol{y}_{\mathrm{s}1},\boldsymbol{x}_{\mathrm{s}2},\boldsymbol{y}_{\mathrm{s}2}
xs1​,ys1​,xs2​,ys2​表示)
f 2 ( x ) ≈ k f 1 ( x ) f_2\left( x \right) \approx kf_1\left( x \right) f2​(x
)≈kf1​(x)
现评估 k k k的最优取值以及对相似度的定量评价

<>线性插值

由于给定的函数曲线是由点族表示的,使用线性插值将函数构造出来。在自变量取值范围内取 n n n个间距的节点,它们的横坐标构成一个向量 x
\boldsymbol{x}x。通过线性插值方法得到 x \boldsymbol{x} x对应的 y 1 \boldsymbol{y}_1 y1​和 y 2
\boldsymbol{y}_2y2​
y i , 1 = f 1 ( x i ) y i , 2 = f 2 ( x i ) i = 1 , 2 ⋯ n y_{i,1}=f_1\left(
x_{i} \right) \\ y_{i,2}=f_2\left( x_{i} \right) \\ i=1,2\cdots nyi,1​=f1​(xi​)y
i,2​=f2​(xi​)i=1,2⋯n式中 x i , 1 x_{i,1} xi,1​表示 x \boldsymbol{x} x的第 i i i
个元素,其余以此类推。

<>线性回归

在获得向量 y 1 \boldsymbol{y}_1 y1​和 y 2 \boldsymbol{y}_2 y2​后,使用最小二乘法求解 k k k
的近似值,列写最小二乘法的法方程
y 1 k = y 2 \boldsymbol{y}_1k=\boldsymbol{y}_2 y1​k=y2​该方程组包含一个未知数 k k k和 n n
n个方程,一般情况下无解。但是可以使用广义逆或最小二乘法求其残差最小的解,即 k = ( y 1 T y 1 ) − 1 y 1 T y 2 k=\left(
{\boldsymbol{y}_1}^{\mathrm{T}}\boldsymbol{y}_1 \right)
^{-1}{\boldsymbol{y}_1}^{\mathrm{T}}\boldsymbol{y}_2k=(y1​Ty1​)−1y1​Ty2​

<>相似度计算

相似度可以使用决定系数 R 2 R^2 R2评估,其定义式为
R 2 = 1 − ∑ i = 1 n ( y i , 2 − k y i , 1 ) 2 ∑ i = 1 n ( y i , 2 − y ˉ ) 2
R^2=1-\frac{\sum_{i=1}^n{\left( y_{i,2}-ky_{i,1} \right)
^2}}{\sum_{i=1}^n{\left( y_{i,2}-\boldsymbol{\bar{y}} \right) ^2}}R2=1−∑i=1n​(yi
,2​−yˉ​)2∑i=1n​(yi,2​−kyi,1​)2​

<>MATLAB代码

线性插值函数
function [out_x,out_y1,out_y2] = linearInterpolation(x1,y1,x2,y2,n) %
LINEARINTERPOLATION 将两条独立非负曲线的点族(x1,y1)(x2,y2)插值成为点对(x,y1,y2) xmax1=x1(end);
xmax2=x2(end); xmax=max(xmax1,xmax2); out_x=linspace(0,xmax,n); out_y1=interp1(
x1,y1, out_x,'linear','extrap'); out_y1=0.5*(out_y1+abs(out_y1)); out_y2=interp1
(x2,y2, out_x,'linear','extrap'); out_y2=0.5*(out_y2+abs(out_y2)); end
线性回归函数
function [r2,k] = linearRegression(y1,y2) %LINEARREGRESSION 对点族(y1,y2)
进行无截距的线性回归,返回决定系数r2(coefficient of determination)和斜率 k=y1'\y2'; r2=1-sum((y2-k*
y1).^2)/((length(y2)-1) * var(y2)); end

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信