使用interp2使点数更小

时间:2017-07-04 01:32:21

标签: matlab interpolation

这就是我的代码现在的样子

b=load('filenamehere');
b=b(46:285,51:170);

x=1:size(b,1);
y=1:size(b,2);

xq=1:size(b,1)/4;
yq=1:size(b,2)/4;

B=interp2(x,y,b,xq,yq);

b是240x120矩阵,我试图让它成为60x30矩阵,这样我的计算机就可以处理我必须进行的后续计算。不知道我要做些什么来使它工作,我也尝试使用[X,Y]=meshgrid(x,y)和xq,yq相同。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我在你的代码中看到了几个问题。

b=load('filenamehere');

将返回结构,而不是矩阵。我们现在暂时忽略它,并假设您的矩阵 b 的大小为240x120。

您的 xq yq 占据 b 的前1/4。我想你想从每四个中拿一分。如果是这样,你可以做

B = b(1:4:end, 1:4:end);

如果您有信号处理工具箱,请使用下采样

B = downsample(b, 4);

如果你真的需要插值,xq和yq,如果它们是矢量,应该有不同的方向:

B = interp2(b, 1:4:120, (1:4:240).');