win7本地连接受限制或无连接怎么办-cpu风扇声音很大

griddata
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]之间是线性变化的

那么对于浮点数x(a<=x

这个好理解吧?

把这种插值方式扩展到二维情况

对于一个二维数组c,我们假设对于任意一个浮点数i,c(a,i)到c(a+1,i)之间

是线性变化的,c(i,b)到c(i,b+1)之间也是线性变化的(a,b都是整数)

那么对于浮点数的坐标(x,y)满足(a<=x

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