Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MATLAB中对二维阵列进行插值_Matlab_Interpolation - Fatal编程技术网

如何在MATLAB中对二维阵列进行插值

如何在MATLAB中对二维阵列进行插值,matlab,interpolation,Matlab,Interpolation,如何生成一个包含2个变量的函数,并且给定一个2D数组,它将返回一个插值 我有nxm数组A,我需要对它进行插值,然后以某种方式获得该曲面的函数,这样我就可以在非整数参数上选取值。 我需要使用插值作为两个变量的函数 例如: A[N,M] //my array // here is the method I'm looking for. Returns function interpolatedA interpolatedA(3.14,344.1) //That function returns in

如何生成一个包含2个变量的函数,并且给定一个2D数组,它将返回一个插值

我有nxm数组A,我需要对它进行插值,然后以某种方式获得该曲面的函数,这样我就可以在非整数参数上选取值。 我需要使用插值作为两个变量的函数

例如:

A[N,M] //my array
// here is the method I'm looking for. Returns function interpolatedA
interpolatedA(3.14,344.1) //That function returns interpolated value
你看到interp2的功能了吗

来自MatLab文档:


Zi= In x x,y,z,Xi,i返回矩阵席席含有元素,对应于Xi和Yi的元素,并通过矩阵x,y所指定的二维函数内插确定,并且x,y必须是单调的,并且具有相同的格子格子,就像它们是由MeHGrand产生的。矩阵X和Y指定给定数据Z的点。超出范围的值返回为NaN。

对于常规网格上的数据,请使用。如果您的数据分散,请使用。您可以围绕这些调用创建一个简化的包装器

M = 10;
N = 5;
A = rand(M,N);
interpolatedA = @(y,x) interp2(1:N,1:M,A,x,y);
%interpolatedA = @(y,x) griddata(1:N,1:M,A,x,y); % alternative
interpolatedA(3.3,8.2)

ans =
      0.53955
下面是一个示例,使用:

请注意,可以在任意点计算插值对象:

>> F(3.14,3.41)
ans =
     0.036288
上面的示例使用矢量化调用在栅格的所有点进行插值

使用样条线命令,如下所示:

% A contains N rows and 2 columns
pp = spline(A(:,1), A(:,2));
ppval(pp,3.44)

ans =

    0.4454

谢谢,但我想那不是我需要的。据我所见,使用这些函数,我只能创建另一个具有曲面值的数组。但我需要使用数组的插值作为函数。我已经编辑了问题谢谢,但我想那不是我需要的。据我所见,使用这些函数,我只能创建另一个具有曲面值的数组。但我需要使用数组的插值作为函数。我编辑了这本书question@Max可以使用这些函数插值任意数量的点。您可以在所需的特定[x,y]处获得一个值。谢谢!这很简单,我应该自己猜的。我还是个新手,抱歉:请注意:x和y值对应于列和行,而不是相反。因此插值3.3,8.2返回A8区域内的值,3@geometrikal谢谢我更新了匿名函数,使输入按y、x排序,就像数组索引一样。搜索三次样条曲线的帮助,或使用spline命令。
% A contains N rows and 2 columns
pp = spline(A(:,1), A(:,2));
ppval(pp,3.44)

ans =

    0.4454