首页 > 编程知识 正文

matlab spline函数(lagrange插值多项式matlab)

时间:2023-05-04 01:27:54 阅读:67880 作者:4874

MATLAB中griddata和griddatan插值函数简单说明

前言用通俗易懂的语言说明griddata和griddatan的使用方法。 我不会追求严密。 目的是为了尽快理解和使用需要使用这两个插值函数。

一、griddata函数是什么? griddata可以插入二维或三维散点数据

严格来说,griddata不能称为插值,但可以实现插值功能。 griddata有三种格式:

VQ=griddata(x,y,v,xq,yq ) )。

VQ=griddata(x、y、z、v、xq、yq、zq ) )。

VQ=griddata(__,method ) )。

griddata和interp2的区别在于,interp2的插值数据必须是矩形区域,要求xy规则排列。 griddata中的x、y、v是包含方差(非均匀)采样点和数据的向量。

例如,目前我在野外有5x5矩阵共25个采样点,分别涵盖经度121-125度、纬度30-34.5度之间。 采样点正在收集农作物亩产数据。 目前有20x20个经度122-124度、纬度32-34度之间的矩阵。 矩阵表示每一点有多少亩农作物,现在需要要求矩阵范围内的总产量。

以下两幅图分别显示了采样点的分布和绘制的亩产等值线图

问题是,如果25个采样点的数据太稀疏,剪切范围后无法将20x20个矩阵点乘以总产量,则此时必须使用griddata函数。

x、y可视为较大的采样范围,v是亩产、某些污染物浓度等各点的属性。 xq、yq在该采样范围内,是应该剪切的范围。 例如,我在一个省里马上采集了很多样本点,但需要计算省内某个区域的值。 此时,可以对全省的采样数据进行插值,剪切想要的区域,调整xy间隔,构成新的矩阵。

当然,最重要的一点来了。 如果这25个数据不构成5x5矩阵该怎么办? 例如,我只有空间分布的21个数据吗?

上述interp2的内插数据必须是矩形区域,而且gridata可以是方差(非均匀)采样点,因此它仍然适用。

下面的代码用矩阵表示原始经纬度、亩产。 如果原始数据不是矩形字段,则可以以Excel表的形式输入MATLAB进行运算。

x=[34.2、34、34、34、34; 33、33.2、33、33、33; 32、32.7、32.5、32.6和32; 31.5、31、31、31、31; 三十、三十、三十、三十、三十); y=[121、122、123、124、125; 121、122.1、123、124、125; 121.3、122、123、124、125; 121、122、123、124、125; 121.1、122.3、123.6、124、125]; z=[1、2、5、3、4; 4、2、3、5、6; 七、五、三、六、四; 4、2、8、6、4; 7、4、8、6、5; %为清楚起见,原始数据为contourf(y、x、z ) figure ) xrange=34:-0.1:32; yrange=122:0.1:124; [Y,x]=meshgrid(yrange,xrange ); %xrange、yrange被认为是剪切范围,可以插值后变更为20*20的矩阵m=griddata(x、y、z、x、y ); imagesc(m ) 20的新矩阵2,gridatan使用gridatan和gridata的用法相似,但不同的是gridatan可以实现更高维的插值。

例如,我选了一个湖,在湖里选了几十个不同位置的样品,每个样品根据水深采集不同深度的水,计算营养盐的含量。

采样点x、y、z实际上分布在三维空间,分布不均,加上营养盐含量即为四维方差数据。 此时,如果想看到一定经度的断面营养盐分布,gridatan有助于实现全湖营养盐的插值,从而达到目的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。