Matlab 如何插值矩阵以获得特定值

Matlab 如何插值矩阵以获得特定值,matlab,matrix,interpolation,Matlab,Matrix,Interpolation,我在MATLAB中有一个矩阵: x=[NaN-2-1012; 1 0.21 0.15 0.34 0.11 0.32; 2 0.14 0.10 0.16 0.31 0.11]; 第一行表示X坐标后的值的位置。 我将第一行移动-0.63,因此x变为: New_x=[NaN-2.63-1.63-0.630.371.37; 1 0.21 0.15 0.34 0.11 0.32; 2 0.14 0.10 0.16 0.31 0.11]; 如何使用插值来获得x矩阵中新的x矩阵的特定坐标处的值?(

我在MATLAB中有一个矩阵:

x=[NaN-2-1012;
1  0.21 0.15 0.34 0.11 0.32;
2  0.14 0.10 0.16 0.31 0.11];
第一行表示X坐标后的值的位置。 我将第一行移动-0.63,因此x变为:

New_x=[NaN-2.63-1.63-0.630.371.37;
1  0.21 0.15 0.34 0.11 0.32;
2  0.14 0.10 0.16 0.31 0.11];
如何使用插值来获得x矩阵中新的x矩阵的特定坐标处的值?(
[-2-1012]
点数)

New_xInterp=[NaN-2.63..-2..-1.63..-1..-0.63..0.37..1..1.37..2;
1   0.21 ..  ? ..  0.15 ..  ? ..  0.34 .. ? .. 0.11 .. ? .. 0.32 .. ?;
2   0.14 ..  ? ..  0.10 ..  ? ..  0.16 .. ? .. 0.31 .. ? .. 0.11 .. ?];
我想得到“?”值。我尝试使用interp2函数,但我不知道为了得到像-2、-1、0、1、2这样的点,坐标值之间必须有哪一步或2^k-1插值点


谢谢

也许你可以试试下面的
interp1
+
arrayfun

r = sort([x(1,2:end),New_x(1,2:end)]);
New_xInterp = [New_x(:,1),cell2mat(arrayfun(@(k) interp1(New_x(1,2:end),New_x(k,2:end),r),1:size(New_x,1),'UniformOutput',false).')];

New_xInterp =

       NaN  -2.63000  -2.00000  -1.63000  -1.00000  -0.63000   0.00000   0.37000   1.00000   1.37000        NA
   1.00000   0.21000   0.17220   0.15000   0.26970   0.34000   0.19510   0.11000   0.24230   0.32000        NA
   2.00000   0.14000   0.11480   0.10000   0.13780   0.16000   0.25450   0.31000   0.18400   0.11000        NA

上面的代码使用线性插值。如果需要其他选项,可以键入
help interp1
查看更多信息。

由于没有二维数据,只能在一维上插值,因此只需要该函数

如有必要,此函数可用于向量或矩阵,但它需要稍微重新组织数据

%% Input
M = [NaN  -2   -1  0    1    2;
      1  0.21 0.15 0.34 0.11 0.32;
      2  0.14 0.10 0.16 0.31 0.11];

%% Demultiplex inputs
x = M(1,2:end).' ;        % extract X values, reorder in column
y = M(2:end,2:end).' ;    % extract Y values, reorder in columns

%% Interpolate
xn = sort( [x-0.63 ; x] ) ;                         % Generate the new_x target values
yn = interp1( x-0.63 , y , xn ,'linear','extrap') ; % Interpolate the full matrix in one go
此时,列中有新的
xn
yn
值:

xn=         yn= 
-2.63       0.21    0.14
-2          0.1722  0.1148
-1.63       0.15    0.1
-1          0.2697  0.1378
-0.63       0.34    0.16
0           0.1951  0.2545
0.37        0.11    0.31
1           0.2423  0.184
1.37        0.32    0.11
2           0.4523  -0.016
如果你以后有更多的手术要做的话,我会把它们保留下来。但是,如果您希望将其恢复到最初的格式,我们可以简单地重建新的完整矩阵:

%% Rebuild global matrix
Mout = [ M(:,1) , [xn.' ; yn.'] ] 

Mout =
NaN -2.63   -2      -1.63   -1      -0.63   0       0.37    1       1.37    2
1   0.21    0.1722  0.15    0.2697  0.34    0.1951  0.11    0.2423  0.32    0.4523
2   0.14    0.1148  0.1     0.1378  0.16    0.2545  0.31    0.184   0.11    -0.016