我正在尝试对 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.15
和 0.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你的输入和输出。您还只需要 B
和 New_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/