我有一个标量量 Q(r, theta)
,我希望能在极坐标系下进行插值。问题在于 theta 的取值范围为 0 到 2π,在 0 和 2π 的交界处出现了间断点,这导致了问题的产生。
我的原始数据是在非结构化网格上的,因此我正在使用 MATLAB 中的 griddata 进行插值。
我有一个标量量 Q(r, theta)
,我希望能在极坐标系下进行插值。问题在于 theta 的取值范围为 0 到 2π,在 0 和 2π 的交界处出现了间断点,这导致了问题的产生。
我的原始数据是在非结构化网格上的,因此我正在使用 MATLAB 中的 griddata 进行插值。
使用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');
我会对该域进行三角剖分,从而将其转换为笛卡尔坐标。由于三角剖分不再关心不连续性,因此它将自然地包含起来。现在,在三角剖分内部进行插值将变得非常简单,并且它将正确使用跨越周期边界的信息。(一旦您转换为笛卡尔坐标,TriScatteredInterp
就足以解决这个问题。)