win7本地连接受限制或无连接怎么办-cpu风扇声音很大
2023年4月6日发(作者:欧拉角)
matlab二维插值--interp2与griddata
from:
matlab功能强大,以至于不知道他不能做什么,只是怨自己没有找到相应的函数。
二者均是常用的二维差值方法,两者的区别是,interp2的插值数据必须是矩形域,即已知
数据点(x,y)组成规则的矩阵,或称之为栅格,可使用meshgid生成。而griddata函数的已
知数据点(X,Y)不要求规则排列,特别是对试验中随机没有规律采取的数据进行插值具
有很好的效果。griddata(X,Y,XI,YI,'v4')v4是一种插值算法,没有具体的名字,原文称为
“MATLAB4griddatamethod”,是一种很圆滑的差值算法,效果很好。X和Y提供的已知
数据点,XI和YI是需要插值的数据点,一般使用meshgrid生成,当然也可以其他数据,
但是那样绘图的时候就比较麻烦,不能使用mesh等,只能使用trimesh。
示例如下:
a=[
331.5300
3270.4210
5170.5980
990.5900
13250.4470
15151
1750.3830
21210.3100
25130.2830
2730.2820
27270.1200
];
x=a(:,1);
y=a(:,2);
z=a(:,3);
xtemp=linspace(min(x),max(x),100);
ytemp=linspace(min(y),max(y),100);
[X,Y]=meshgrid(xtemp,ytemp);
Z=griddata(x,y,z,X,Y,'v4');
surf(X,Y,Z)
shadinginterp
为了方便理解,先考虑一维情况下的线性插值
对于一个数列c,我们假设c[a]到c[a+1]之间是线性变化的
这个好理解吧?
把这种插值方式扩展到二维情况
对于一个二维数组c,我们假设对于任意一个浮点数i,c(a,i)到c(a+1,i)之间
是线性变化的,c(i,b)到c(i,b+1)之间也是线性变化的(a,b都是整数)
c(x,b)和c(x,b+1):
c(x,b)=c[a+1][b]*(x-a)+c[a][b]*(1+a-x);
c(x,b+1)=c[a+1][b+1]*(x-a)+c[a][b+1]*(1+a-x);
好,现在已经知道c(x,b)和c(x,b+1)了,而根据假设c(x,b)到c(x,b+1)也是线
性变化的,所以:
c(x,y)=c(x,b+1)*(y-b)+c(x,b)*(1+b-y)
这就是双线性插值,不知道我这么讲是否将明白了
我不太明白画板取值是什么意思
如果直接理解成亮度值的话就这么写:
//返回x,y的像素值,c[a][b]表示(a,b)的像素值
intgetColor(doublex,doubley,int[][]c){
inta=(int)x;
intb=(int)y;
doubledx=x-a;
doubledy=y-b;
return
(int)((c[a][b]*(1-dx)+c[a+1][b]*dx)*(1-dy)+(c[a][b+1]*(1-dx)+c[a+1][b
+1]*dx)*dy);
}
我觉得这样的代码好像写不了注释
Matlab一维,二维及多维插值
插值就是已知一组离散的数据点集,在集合内部某两个点之间预测函数值的方
法。
一、一维插值
插值运算是根据数据的分布规律,找到一个函数表达式可以连接已知的
各点,并用此函数表达式预测两点之间任意位置上的函数值。
插值运算在信号处理和图像处理领域应用十分广泛。
1.一维插值函数的使用
若已知的数据集是平面上的一组离散点集(x,y),则其相应的插值就是一
维插值。MATLAB中一维插值函数是interp1。
y=interp([x,]y,xi,[method],['extrap'],[extrapval]),[]代表可选。
method:'nearest','linear','spline','pchip','cubic','v5cubic'。
此m文件运行结果:
放大π/2处:
2.内插运算与外插运算
(1)只对已知数据点集内部的点进行的插值运算称为内插,可比较准确
的估测插值点上的函数值。
(2)当插值点落在已知数据集的外部时的插值称为外插,要估计外插函
数值很难。
MATLAB对已知数据集外部点上函数值的预测都返回NaN,但可通过为
interp1函数添加'extrap'参数指明也用于外插。
MATLAB的外插结果偏差较大。
二、二维插值
已知点集在三维空间中的点的插值就二维插值问题,在图像处理中有广
泛的应用。
二维插值函数是interp2,用法与一维插值函数interp1类似。
ZI=interp2(X,Y,Z,XI,YI,method,extrapval):在已知的(X,Y,Z)
三维栅格点数据上,在(XI,YI)这些点上用method指定的方法估计函数值,外
插使用'extrapval'。
二维插值中已知数据点集(X,Y)必须是栅格格式,一般用meshgrid函数
产生。interp2要求(X,Y)必须是严格单调的并且是等间距的,如果(X,Y)不是
等间距的,会将且变换为等间距形式,如果已知是等间距的,可在method参数
前加星号,如果:'*cubic'。
运行结果:
三、多维插值
1.interp3
三维插值,VI=interp3(X,Y,Z,V,XI,YI,ZI,method),用法同二维
插值interp2。
2.n维插值
VI=interpn(X1,X2,X3…,V,Y1,Y2,Y3,…,method),用法同二维
插值interp2。
3.ndgrid
产生n维空间上的栅格。
[X1,X2,X3,…]=ndgrid(x1,x2,x3,…)
四、疑问
在图像处理上有怎样的应用呢?尺寸放大吗?
能否在图像压缩中应用插值呢?
更多推荐
griddata
发布评论