matlab中的2D插值

时间:2015-05-27 09:13:59

标签: matlab 2d interpolation

我有一个360 * 3矩阵,第1列的纬度值第2列具有经度值,第3列具有重力值。

问题在于,当我使用meshgrid创建纬度和经度网格时,网格间距不是常量,这会产生问题。

我尝试创建一个新的等间距网格360 * 360,最小最大值与最初提供的纬度和经度相同。现在我需要在新形成的网格中插入重力值。

请帮忙。我正在使用interp2,但它显示错误。

dt1
x = D(:,1);
y = D(:,2);
g = D(:,3);
xg = linspace(min(x),max(x),360);
yg = linspace(min(x),max(x),360);
[X,Y] = meshgrid(xg,yg);
[xx,yy] = meshgrid(x,y,);
G = interp2(xx,yy,g,X,Y);`

请帮忙

1 个答案:

答案 0 :(得分:0)

有关您的代码的一些事项:

  • g似乎是假大小,即它应该是x / y大小的矩阵。
  • yg = linspace(min(x),max(x),360); - > yg = linspace(min(y),max(y),360);
  • 你的代码中有一个拼写错误[xx,yy] = meshgrid(x,y,);, meshgrid函数中的第二个逗号产生错误

然后,我尝试了以下内容,它似乎完美无缺

x=sort(rand(10,1));
y=sort(rand(10,1));
[xx,yy] = meshgrid(x,y);
g=peaks(xx,yy); % the gravity values have to be matrix form
xg=linspace(min(x), max(x), 360);
yg=linspace(min(y), max(y), 360);
[X,Y]=meshgrid(xg,yg);
G=interp2(xx,yy,g,X,Y);
figure
mesh(G)
figure
mesh(g)

提供D(..)中的数据以获得更多帮助。