具有4个已知值的Matlab矩阵插值

时间:2016-07-27 10:38:23

标签: matlab matrix interpolation

我有4个矩阵的已知(角点)值:

grid = [2 5
        5 8];

这个值是我的角落,我想在它们之间插值,我得到一个非平方矩阵,例如350x250矩阵。

我搜索了一些熟悉的问题,但我找不到解决方案,或者无法将其转移到我的问题中。我找到了interp2函数,但没有告诉我如何判断我只有4个角值?

我做了一个简单的例子来说明我需要什么,什么不起作用(或者我做错了什么):

test = [2 0 0 0 8
        0 0 0 0 0
        6 0 0 0 12 ];

[X, Y] = meshgrid(1:5,1:3);

M = interp2(X,Y,test,X,Y);

结果矩阵与输入矩阵test完全相同。如何插入零?一般来说,我的输入只是这个:

grid = [2 8; 6 12];

1 个答案:

答案 0 :(得分:0)

经过长时间的思考,我找到了解决方案:

x = 350;
y = 250;

V = [2 8
     6 12];

[X, Y] = meshgrid(1:2,1:2);

a = linspace(1,2,x);
Xq = a(ones(1,y),:); % oder repmat([1 n], y);

b = linspace(1,2,y)';
Yq = b(:,ones(1,x));

M = interp2(X,Y,V,Xq,Yq);

我希望它可以帮助任何有同样问题的人,我不明白最终尺寸只是在最后两个参数中。