matlab - 沿 2D 矩阵的一维插值

标签 matlab matrix interpolation

我正在尝试对 M*N 矩阵进行插值。例如,矩阵 T 表示温度,矩阵 B 表示位置:

T = [1 3 5; ...
     2 4 6; ...
     1 2 3];
B = [0.1 0.2 0.3; ...
     0.1 0.2 0.3; ...
     0.1 0.2 0.3];

我正在尝试获取位置 0.150.25 处的温度信息。因此,矩阵 B 将类似于:

New_B = [0.1 0.15 0.2 0.25 0.3; ...
         0.1 0.15 0.2 0.25 0.3; ...
         0.1 0.15 0.2 0.25 0.3];

矩阵T的预期结果将是:

T = [1 2 3 4 5; ...
     2 3 4 5 6; ...
     1 1.5 2 2.5 3];

我尝试过:

New_T = interp2(T, B, New_B);

但是它不起作用。我怎样才能进行这种插值?

最佳答案

您可以申请interp1到一个矩阵,在这种情况下它将沿着每一列进行操作。由于您想沿每一行进行插值,因此您必须 transpose你的输入和输出。您还只需要 BNew_B 各一行:

New_T = interp1(B(1, :).', T.', New_B(1, :).').';

New_T =

    1.0000    2.0000    3.0000    4.0000    5.0000
    2.0000    3.0000    4.0000    5.0000    6.0000
    1.0000    1.5000    2.0000    2.5000    3.0000

如果您好奇,您必须指定其他行网格点才能使用 interp2 :

New_T = interp2(B(1, :), (1:size(B, 1)).', T, New_B(1, :), (1:size(New_B, 1)).');

关于matlab - 沿 2D 矩阵的一维插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45934471/

相关文章:

matlab - Matlab 中的 Char(非 ascii)

c# - 将 LINQ 返回值转换为二维数组

variables - freemarker插值可以包含插值吗?

java - 非单调插值方法

matlab - 查找与 matlab 中的向量具有相同顺序的向量的唯一值

Python 和 ControlDesk 交互

c++ - 发生相机变换时场景渲染不稳定

python - scipy.interpolate.interp1d 是否有导致 x 值的十进制值问题?

matlab - 在 Matlab 中显示 Y Cb 和 Cr 分量

c++ - 将矩阵调整为 double 组