两条曲线之间的插值(matlab)

Nik*_*kko 3 matlab interpolation

好,朋友们.我有以下问题:

我有以下情节的数据. 在此输入图像描述

因此该图的数据文件包含三列.第二和第三个是x,y点.第一个是这些点所属的系统.在这种情况下,红色的是20年的系统.蓝色的30年.

我想要找到的是25年的曲线.因此,如果我绘制它应该在红色和蓝色曲线之间.

我不知道如何插入数据以获得我想要的东西.实际上我想要21,22,... 29年,我想如果我们能在这两者之间找到它,那么该方法应该适用于20到30之间的任何时间.

PS:我猜每条曲线的插值(在这种情况下是红色或蓝色曲线)非常简单.只使用interp1(x,y,xx)就行了.但是其他"维度"(M)发生了什么

数据.

20.0000    3.4076         0
20.0000    3.4226   99.5405
20.0000    3.4701  196.3360
20.0000    3.5592  287.0781
20.0000    3.6248  328.8516
20.0000    3.6643  348.3373
20.0000    3.7091  367.2823
20.0000    3.7591  385.4784
20.0000    3.8077  402.7170
20.0000    3.8957  437.5221
20.0000    4.0314  506.9907
30.0000    3.6335         0
30.0000    3.6373   49.8884
30.0000    3.6488   99.5405
30.0000    3.6685  148.5936
30.0000    3.7363  243.2204
30.0000    3.7876  287.7398
30.0000    3.8537  329.6097
30.0000    3.8935  349.9452
30.0000    3.9384  368.9776
30.0000    3.9892  387.2576
30.0000    4.0410  404.5759
30.0000    4.1350  439.5416
30.0000    4.2153  474.2420
30.0000    4.2813  509.3309
Run Code Online (Sandbox Code Playgroud)

Hok*_*oki 6

实际上,通过查看Matlab文档,我发现了一种更简单的方法.您可以使用griddata函数.(matlab帮助中的doc显示了可视化示例).对公共网格进行重采样并将插值嵌入到函数中.

%// First separate (and name your column to identify them better)
t = d(:,1) ;
x = d(:,2) ;
y = d(:,3) ;

%// use the function 'griddata'
[TI,YI] = meshgrid( 20:30 , 0:20:500 ) ; %// change these values to change the grid limits
XI = griddata(t,y,x,TI,YI) ;

%// show result in 3D ... but could be projected in X-Y plane if necessary
plot3(TI,YI,XI , 'Marker','o' )
xlabel('Time') ; ylabel('Y') ; zlabel('X')
Run Code Online (Sandbox Code Playgroud)

代码的最后一行显示了这个图: 数字

所有插值数据都在XI矩阵中.检索它们的方法取决于您最终如何组织它们.


编辑:要将所有插值数据放在InterpData与原始表格相同的单个表格中,请使用以下命令:

nLine = numel(XI) ;
InterpData = [ reshape(TI,nLine,[]) reshape(XI,nLine,[]) reshape(YI,nLine,[]) ] ;
Run Code Online (Sandbox Code Playgroud)


关于NaNs.每次你要求在最初已知的值之外进行插值时,它们都会打扰你.
例如,如果您在原始数据中的时间是[20到30]间隔,matlab将很乐意在该间隔内插入任何内容,但是NaN如果您要求返回time = 19的值,则会返回.同样Y,内插的网格必须在初始范围内.(在本实现中,我们使用由Time (第1列)Y(第3 列)形成的基础网格来插入X列.