Say I've got n scattered data points defined in spherical coordinates,
n=36;az=random('unif',0,2*pi,n,1);ele=random('unif',-pi/2,pi/2,n,1);r=random('unif',3,7,n,1);
I want to interpolate to get a finer sampling of r. I've tried doing this using the TriScatteredInterp() function,
F = TriScatteredInterp(az,ele,r);n_i=50;az_i=linspace(0,2*pi,n_i); ele_i=linspace(-pi/2,pi/2,n_i);[AZ_i ELE_i]=meshgrid(az_i,ele_i);R_i=F(AZ_i,ELE_i);[X Y Z]=sph2cart(AZ_i,ELE_i,R_i);surf(X,Y,Z)
As the code is above, I get serious problems near az=0, and ele=pi/2. I believe this is because the data doesn't "wrap around" as it should in spherical coordinates. Thus the interpolation near az=0 is off and I get nan's at these locations. I tried to fix this by wrapping the data as follows.
n=10;az=random('unif',0,2*pi,n,1); az=[az-2*pi; az; az+2*pi]; %wrap az
ele=random('unif',-pi/2,pi/2,n,1); ele=repmat(ele,[3 1]);%copy ele
r=random('unif',3,7,n,1); r=repmat(r,[3 1]); %copy r
F = TriScatteredInterp(az,ele,r);n_i=50;az_i=linspace(0,2*pi,n_i); ele_i=linspace(-pi/2,pi/2,n_i);[AZ_i ELE_i]=meshgrid(az_i,ele_i);R_i=F(AZ_i,ELE_i);[X Y Z]=sph2cart(AZ_i,ELE_i,R_i);surf(X,Y,Z)
All I've done above is copied the data and changed the ele values on the copied version to go from -2*pi-0 and 2*pi04*pi. This improves the interpolation drastically however I still get nan's near the z-axis (i.e., where ele=pi/2). Basically, this puts a big hole in my data. Has anyone run into a similar problem. Is there a better "wrapping" technique I should use? Thanks in advance for any insight.
Justin
Best Answer