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

3

我有一个标量量 Q(r, theta),我希望能在极坐标系下进行插值。问题在于 theta 的取值范围为 0 到 2π,在 0 和 2π 的交界处出现了间断点,这导致了问题的产生。

我的原始数据是在非结构化网格上的,因此我正在使用 MATLAB 中的 griddata 进行插值。


从问题中并不清楚出现了什么问题。你能添加一些代码或者更详细地解释一下吗?为什么会有不连续性?毕竟,0=2*pi起初就是成立的。 - bla
2个回答

0

使用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');

[newele,newazi,newmp1]=expandData(ele,azi,mp1); elegrid = linspace(0,90,20); % 网格点的仰角 azigrid = linspace(0,360,30); % 网格点的方位角 [X,Y] = meshgrid(elegrid,azigrid);
Z = griddata(newele,newazi,newmp1,X,Y,'nearest');
- RanQishun

0

我会对该域进行三角剖分,从而将其转换为笛卡尔坐标。由于三角剖分不再关心不连续性,因此它将自然地包含起来。现在,在三角剖分内部进行插值将变得非常简单,并且它将正确使用跨越周期边界的信息。(一旦您转换为笛卡尔坐标,TriScatteredInterp 就足以解决这个问题。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接