matlab代码
[x,y]=meshgrid(-3:1:3);
z=peaks(x,y)
[xi,yi]=meshgrid(-3:0.25:3);
figure(1)
surfc(x,y,z)
title('原始数据')
zi1=interp2(x,y,z,xi,yi,'spline')
zi2=interp2(x,y,z,xi,yi,'linear')
zi3=interp2(x,y,z,xi,yi,'nearest')
zi4=interp2(x,y,z,xi,yi,'cubic')
figure(2)subplot(2,2,1);surf(xi,yi,zi1);subplot(2,2,2);surf(xi,yi,zi2);subplot(2,2,3);surf(xi,yi,zi3);subplot(2,2,4);surf(xi,yi,zi4);
有棱有角
分别为:spline linear nearest cubic
cubic:
图像处理
比较不同的差值方法(图像处理方面)
最邻近元法The nearest
计算量较小,但可能会造成插值生成的图像灰度上的不连续,在灰度变化的地方可能出现明显的锯齿状。
双线性内插法Bilinear Interpolation
的计算比最邻近点法复杂,计算量较大,但没有灰度不连续的缺点,结果基本令人满意。它具有低通滤波性质,使高频分量受损,图像轮廓可能会有一点模糊。
三次内插法Cubic interpolation
:该方法利用三次多项式S(x)求逼近理论上最佳插值函数sin(x)/x, 其数学表达式为:
待求像素(x, y)的灰度值由其周围16个灰度值加权内插得到
“Inverse Distance to a Power(反距离加权插值法)”、
“Kriging(克里金插值法)”、
“Minimum Curvature(最小曲率)”、
“Modified Shepard’s Method(改进谢别德法)”、
“Natural Neighbor(自然邻点插值法)”、
“Nearest Neighbor(最近邻点插值法)”、
“Polynomial Regression(多元回归法)”、
“Radial Basis Function(径向基函数法)”、
“Triangulation with Linear Interpolation(线性插值三角网法)”、
“Moving Average(移动平均法)”、
“Local Polynomial(局部多项式法)”
空间分析
优点比较
1)OK 插值法:以空间统计学作为理论基础,可以克服内插中误差难以分析的问题,能够对误差作为这逐点的理论估计,不会产生回归分析的边界效应,插值精度较高,唯一性很强,外推能力较强。
2)TS 插值法:不需要对空间结构进行预先估计和作统计假设,只进行局部区块的拟合,用以补充或修改局部区块的空间变量分布曲面,而不用处理不涉及局部区块修改的其他部分的数据,当表面很平滑时,也不牺牲精度。
3)IDW 插值法:计算开销少,具有普适性,不需要根据数据的特点对方法加以调整,当样本数据的密度足够大时,几何方法一般能达到满意的精度。
缺点比较
1)OK 插值法:作为一种统计学方法,复杂,计算量大,运算速度慢,变异函数需要根据经验人为选定。
2)TS 插值法:作为一种函数方法,难以满足对于利用有限的观测数据进行缺值预测和内插格网的精度要求,也难以对误差进行估计,样本点稀疏时插值效果不好。
3)IDW 插值法作为一种几何方法,插值结果受 r 值的影响很大,根据不同 r 值估算的同一未知点的值会有很大的差别。当任何一个 dri=0(1≤i≤n,1≤r≤n)dri=0(1≤i≤n,1≤r≤n)dri=0(1≤i≤n,1≤r≤n)时,该点权值为无穷大,导致该点的输出数据不连续,计算时会得到其实际测量值,在进行外插值时,IDW会不恰当地将这些估计值回归为观测数据的平均值;当选用的插值距离的次数为偶数时,dir 为非负数,插值结果Z总是满足:Zmin<Z<Zmax[5]Zmin<Z<Zmax[5]Zmin<Z<Zmax[5]。因此,在山峰、山谷及数据点以外的区域,IDW 的插值常常产生一些与我们直觉相矛盾的结果。IDW 权值的大小直接影响了标准差的大小,决定了插值的整体精度情况,对插值结果造成重大的影响。
3 种方法的适用范围比较
1)OK 插值法适用性较广,普遍用于局部的、区域较小的范围,需满足内蕴假设,其区域化变量的平均值是未知的常数[6]。
2)TS 插值法适合于非常平滑的表面,一般要求有连续的一阶和二阶导数,适用于密度较大的点内插求等值线,对整体的、点的数量较多的数据有很好的插值效果。
3)IDW 插值法适用于整体的样本点的密度较大且样本点的分布比较均匀的数据。
matlab代码的解释:
meshgrid
[X,Y] = meshgrid(x,y) 基于向量 x 和 y 中包含的坐标返回二维网格坐标。X 是一个矩阵,每一行是 x 的一个副本;Y 也是一个矩阵,每一列是 y 的一个副本。坐标 X 和 Y 表示的网格有 length(y) 个行和 length(x) 个列。
示例
[X,Y] = meshgrid(x) 与 [X,Y] = meshgrid(x,x) 相同,并返回网格大小为 length(x)×length(x) 的方形网格坐标。
示例
[X,Y,Z] = meshgrid(x,y,z) 返回由向量 x、y 和 z 定义的三维网格坐标。X、Y 和 Z 表示的网格的大小为 length(y)×length(x)×length(z)。
示例
[X,Y,Z] = meshgrid(x) 与 [X,Y,Z] = meshgrid(x,x,x) 相同,并返回网格大小为 length(x)×length(x)×length(x) 的三维网格坐标。
surfc
surfc(X,Y,Z) 使用 Z 来代表颜色数据和曲面高度。X 和 Y 是用于定义曲面的 x 和 y 分量的向量或矩阵。如果 X 和 Y 为向量,length(X) = n 且 length(Y) = m,其中 [m,n] = size(Z)。在这种情况下,曲面顶点是 (X(j), Y(i), Z(i,j)) 三元组。要创建任意域的 X 和 Y 矩阵,请使用 meshgrid 函数。
[X,Y,Z] = peaks(30);
figure
surfc(X,Y,Z)
peaks
peaks 是从高斯分布
转换和缩放得来的包含两个变量的函数,在演示 mesh、surf、pcolor、contour 等函数中很有用。
Z = peaks; 返回一个 49×49 矩阵。
Z = peaks(n); 返回一个 n×n 矩阵。
Z = peaks(V); 返回一个 n×n 矩阵,其中 n = length(V)。
Z = peaks(X,Y); 在给定的 X 和 Y(必须大小相同)处计算 peaks 并返回大小相同的矩阵。
peaks(…)(无输出参数)使用 surf 绘制 peaks 函数。使用先前语法中的任意输入参数组合。
[X,Y,Z] = peaks(…); 返回另外两个矩阵 X 和 Y 用于参数绘图,例如 surf(X,Y,Z,del2(Z))。如未作为输入参数给出,基础矩阵 X 和 Y 是
[X,Y] = meshgrid(V,V)
其中 V 是给定向量,或者 V 是长度为 n 的向量,其元素从 -3 到 3 均匀间隔。如果未给出输入参数,默认的 n 是 49。
n增大,peak(n)提高来采样率
interp2
Interpolation — increase sample rate by integer factor
提高采样率的整数倍
Syntax
y = interp(x,r)
y = interp(x,r,n,alpha)
[y,b] = interp(x,r,n,alpha)
Description
y = interp(x,r) increases the sample rate of x, the input signal, by a factor of r.
y = interp(x,r,n,alpha) specifies two additional values:
n is half the number of original sample values used to interpolate the expanded signal. n是用于插值扩展信号的原始样本值的一半。
alpha is the normalized cutoff frequency of the input signal, specified as a fraction of the Nyquist frequency. alpha是输入信号的归一化截止频率,指定为奈奎斯特频率的一部分。
[y,b] = interp(x,r,n,alpha) also returns a vector, b, with the filter coefficients used for the interpolation.返回一个向量b,带有用于插值的滤波系数。
z是怎么来的:
z=peaks(x,y)
7*7的矩阵
z =0.0001 0.0034 -0.0299 -0.2450 -0.1100 -0.0043 -0.00000.0007 0.0468 -0.5921 -4.7596 -2.1024 -0.0616 0.0004-0.0088 -0.1301 1.8559 -0.7239 -0.2729 0.4996 0.0130-0.0365 -1.3327 -1.6523 0.9810 2.9369 1.4122 0.0331-0.0137 -0.4808 0.2289 3.6886 2.4338 0.5805 0.01250.0000 0.0797 2.0967 5.8591 2.2099 0.1328 0.00130.0000 0.0053 0.1099 0.2999 0.1107 0.0057 0.0000
引用自 刘光孟 空间分析中几种插值方法的比较