我有一个标量Q(r, theta)
,我想在极坐标中插值。问题是 theta 从 0 运行到 2π。因此,在 0 和 2π 界面处存在不连续性,从而产生了问题。
我的原始数据位于非结构化网格上,因此我在 MATLAB 中使用 griddata。
我有一个标量Q(r, theta)
,我想在极坐标中插值。问题是 theta 从 0 运行到 2π。因此,在 0 和 2π 界面处存在不连续性,从而产生了问题。
我的原始数据位于非结构化网格上,因此我在 MATLAB 中使用 griddata。
我会对域进行三角测量,基本上转换为笛卡尔坐标。三角测量当然会换行,因为它不再关心不连续性。现在,三角剖分内的插值将是微不足道的,它将正确使用位于该周期性边界上的信息。(TriScatteredInterp
一旦转换为笛卡尔坐标,就足以解决这个问题。)
使用从 0 到 2π 的数据。我将它们从 -π 扩展为 3π,其中包含 [0, 2π] 的部分,因此数据变得连续。然后我使用扩展数据对位于 [0, 2π] 的网格进行插值。假设周期为 2π。
要知道不连续现象是因为插值函数认为0和2π是数据的边缘,但实际上它们不是极坐标的。
[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');