如何在matlab中进行极坐标插值

时间:2013-05-30 21:06:06

标签: matlab interpolation polar-coordinates

我有一个标量Q(r, theta)我想在极坐标中插值。问题是θ从0到2π运行。因此,在0和2π接口处存在不连续性,这就产生了问题。

我的原始数据位于非结构化网格上,因此我在MATLAB中使用griddata。

2 个答案:

答案 0 :(得分:1)

使用0到2π之间的数据。我将它们从-π扩展到3π,其中包含[0,2π]的部分,因此数据变得连续。然后,我使用扩展的数据对位于[0,2π]的网格进行插值。有一个假设是周期为2π。

您必须知道不连续现象是因为插值函数认为0和2π是数据的,但实际上它们不是极坐标的。

the code which I used

[newele,newazi,newmp1]=expandData(ele,azi,mp1); 
elegrid = linspace(0,90,20); % Elevation of gridPoints 
azigrid = linspace(0,360,30); % Azimuth of gridPoints 
[X,Y] = meshgrid(elegrid,azigrid); 
Z = griddata(newele,newazi,newmp1,X,Y,'nearest');

答案 1 :(得分:0)

我会对域进行三角测量,主要是转换为笛卡尔坐标。三角测量当然会包装,因为它不再关心不连续性。现在,三角测量中的插值将是微不足道的,并且它将使用位于该周期边界上的正确信息。一旦转换为笛卡尔坐标,(TriScatteredInterp就足以解决这个问题了。)