插值与拟合
插值与拟合
插值
1 | % 分段三次埃尔米特插值 |
拟合
1 | clear;clc |
前置知识
1 | % (1)randi : 产生均匀分布的随机整数(i = int) |
1 | clear;clc |
CSDN博客搬运
一维插值
1 | hours = 1:12; |
interp1
是 MATLAB
中用于一维插值的函数。它可以用于在给定数据点上进行线性或其他类型的插值。在例子中,已经定义了时间点hours
和对应的温度数据点temps
,然后使用interp1
来插值在一些新的时间点上的温度值。
code
1 | hours = 1:12; % 时间点 temps = [5,7,9,16,24,28,31,29,22,25,27,24]; % 对应的温度数据点 % 在新的时间点上进行线性插值 new_hours = [3.5, 6.3, 7.2]; % 新的时间点 interpolated_temps = interp1(hours, temps, new_hours, 'linear'); disp(interpolated_temps); |
在这个例子中,interp1
的语法是:
code
1 | Vq = interp1(X, V, Xq, method); |
其中:
X
是原始数据点的横坐标(这里是hours
)。V
是原始数据点的纵坐标(这里是temps
)。Xq
是要在其上进行插值的新横坐标(这里是new_hours
)。method
是插值方法,这里使用线性插值,可以选择其他方法,如'spline'
等。
在这个例子中,interpolated_temps
是在新时间点上通过线性插值得到的温度值。
运行结果
1 | >> test1 |
三次样条插值
1 | years = 1900:10:2010; % 年份数据点 |
在 MATLAB 中,pchip
是三次样条插值方法(Piecewise Cubic
Hermite Interpolating
Polynomial)的一种。三次样条插值是一种用于在给定数据点之间进行平滑插值的技术。pchip
插值使用分段三次 Hermite 曲线,确保插值曲线在原始数据点上是光滑的。
在例子中,使用了interp1
函数来进行三次样条插值,代码如下:
code
1 | years = 1900:10:2010; % 年份数据点 production = [75.995,91.972,105.711,123.203,131.699,150.697,179.323,203.212,226.505,249.633,256.344,267.893]; % 对应的产量数据点 % 在 1995 年进行三次样条插值 p1995 = interp1(years, production, 1995, 'pchip'); % 由于版本问题,这里的三次样条命令为'phip' plot(years, production, '-*'); |
这里的'pchip'
表示使用三次样条插值方法,确保在插值曲线上保持平滑。interp1
函数将在给定的年份数据点上插值得到
1995
年的产量值,并将结果存储在变量p1995
中。在plot
命令中,你可以看到原始数据点的图形以及插值曲线。
运行结果
1 | >> test2 |
二维插值
1 | x = 1:5; |
1 | x = 1:5; |
1 | x = [0.5,1.0,1.5,2.0,2.5,3.0]; |
这段 MATLAB 代码用于进行多项式拟合和绘制拟合曲线。下面是对每一句的解释:
x = [0.5,1.0,1.5,2.0,2.5,3.0];
定义了横坐标的数据点。y = [1.75,2.45,3.81,4.80,7.00,8.60];
定义了纵坐标的数据点。p = polyfit(x, y, 2);
使用polyfit
函数进行二次多项式拟合。这将返回一个包含多项式系数的向量p
,使得polyval(p, x)
可以计算拟合曲线在给定x
值上的纵坐标值。x1 = 0.5:0.05:3.0;
定义了一系列更密集的横坐标值,用于在拟合曲线上绘制平滑的曲线。y1 = polyval(p, x1);
使用polyval
函数计算拟合曲线在新的横坐标值x1
上的纵坐标值。plot(x, y, '-*r', x1, y1, '-b')
使用plot
函数绘制图形。'-*r'
表示绘制原始数据点,使用红色星号标记;'-b'
表示绘制拟合曲线,使用蓝色实线。
综合起来,这段代码进行了二次多项式拟合,并将原始数据点和拟合曲线绘制在同一张图上,以便进行可视化比较。
在 MATLAB
中,polyfit
函数用于进行多项式拟合。其中的参数2
表示拟合的多项式的次数。具体来说,polyfit(x, y, 2)
表示对给定的数据点x
和y
进行二次多项式拟合。
数据预处理
数据不一致性,如单位。
噪声数据,错误的数据,异常的数据,偏离期望值或常理。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Totoroの旅!
评论