引入:所谓2维插值,即因变量有两个(x1,x2)。
功能:建立(x1,x2):y的任意映射
实现:
插值一个点interp2(mesh_x,mesh_y,z’,cha_x,cha_y)
插值更高精度的点,扩展表
interp2(mesh_x,mesh_y,z’,mesh_cha_x,mesh_cha_y)
实例1:IQmixer校准
即通过实验建立
1维插值:interp1(x,y,cha_x,‘method’,’’)引入:对1对变量(x,y),我们没有他们的解析表达式,但可以通过实验得到一张(x:y)映射表。那么对于任意的x值,都可以通过插值来获得y输出。插值的本质:按照插值方式将表无限拓展。功能:如上。建立(x:y)的任意映射。实现方式:interp1(x,y,cha_x,‘method’,’’)插值方式线性插值要求:cha_x必须是在x的区间范围内,若超出x的区间,插值结果为naninterp1默认插值方法为线性插值实例1:演
此函数用内插值或相邻值替换一维数组中的 NaN 值。 插值方案假设数据是均匀分布的。 此函数不进行外推。
句法x = repnan(x); x = repnan(x,method);
描述x = repnan(x) 返回 x 无 NaN。
x = repnan(x,method) 指定替换原始 x 的 NaN 的方法。 方法可以是
'linear'(默认)对 x 中的缺失值执行线性插值, 'nearest' 执行最近邻插值, 'spline' 使用 not-a-knot 结束条件执行样条插值, 'pchip' 是保形分段三次插值, 'cubic' 与 'pchip' 相同, 'v5cubic' 三次卷积通过 Matlab v5 算法'next' 用 x 中的下一个非 NaN 值替换 x 中的 NaN 值, 'previous' 用 x 中先前的非 NaN 值替换 x 中的 NaN
该算法的灵感来自于 John D'Errico 的工作https://www.mathworks.com/matlabcentral/fileexchange/4551-inpaint_nans
但是,我确实注意到,与 griddata 相比,John D'Ericco 给出的 inpaint_nans 算法提供了更高的梯度。 因此,该算法提供了另一种解决方案,有些人可能会觉得它很有帮助。
可以借助matlab自带的一个函数isnan来检查。如果涉及到计算机视觉图像矩阵处理方面,很可能是归一化的时候出现分母为0的情况。在分步调试的时候,最好在每一个可能出现NaN的地方使用isnan来做测试,例如
if isnan(FeatureMap)
disp('BYFeature is a NaN!')
break;
end这是我的教训!
拉格朗日插值是一种常见的插值方法,在MATLAB中也可以使用。它通过一个多项式来逼近已知数据点,从而实现对未知数据点的估计。
在MATLAB中,可以使用`polyfit`函数来进行拉格朗日插值。`polyfit`函数可以拟合一个多项式,并返回多项式的系数。
下面是一个使用拉格朗日插值进行数据拟合的示例:
```MATLAB
% 已知数据点
x = [1 2 4 7];
y = [3 5 2 6];
% 使用拉格朗日插值进行拟合
n = length(x); % 数据点个数
p = zeros(1, n); % 插值多项式的系数
for i = 1:n
% 计算拉格朗日基函数的系数
l = ones(1, n);
for j = 1:n
if j ~= i
l = conv(l, [1, -x(j)]) / (x(i) - x(j));
% 添加到多项式中
p = p + y(i) * l;
% 绘制拟合曲线
xx = linspace(min(x), max(x), 100);
yy = polyval(p, xx);
figure;
scatter(x, y, 'ro'); % 绘制原始数据点
hold on;
plot(xx, yy, 'b-'); % 绘制拟合曲线
xlabel('x');
ylabel('y');
legend('Data Points', 'Interpolated Curve');
在上述示例中,`x`和`y`分别表示已知数据点的横纵坐标。通过计算拉格朗日基函数的系数,并将其与对应的纵坐标相乘,可以得到插值多项式的系数。然后使用`polyval`函数来计算拟合曲线在给定横坐标处的纵坐标。
最后,使用`scatter`函数绘制原始数据点,使用`plot`函数绘制拟合曲线。
error: command C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe
34227