【发布时间】:2015-09-28 01:11:57
【问题描述】:
我正在使用 Matlab 读取包含有关磁场信息的大型 (NetCDF) 数据集。数据集是一个 318x562x554 的三维数组,我可以检索到具有每个坐标轴值的三个一维数组(318x1、562x1 和 554x1)。我想知道不适合数据集网格的点上的磁场值。在这种情况下,这些点是放置在二维数组中的航天器的轨迹坐标(3xn,n 取决于您拥有的坐标数)。
x = ncread(file,'X_axis');
y = ncread(file,'Y_axis');
z = ncread(file,'Z_axis');
Bx = ncread(file,'Bx');
[x2,y2,z2] = meshgrid(y,x,z);
length = numel(interval_ET_5000);
Bx_intp = zeros(1,length);
for i = 1:length
[xi,yi,zi] = meshgrid(position_MEX_Mars_5000(1,i),...
position_MEX_Mars_5000(2,i),...
position_MEX_Mars_5000(3,i));
F = interp3(x2,y2,z2,Bx,xi,yi,zi);
Bx_intp(i) = F;
end
我已经尝试了很多甚至都不起作用的东西。这“有效”但不正确,因为 Bx_intp 中的值太高了。也因为在 for 循环中一次做一个坐标使得它非常慢,正常运行大约是 3500 个坐标。
所以基本上我正在寻找的是一个反向散射插值。此函数接受随机数据点,并在网格网格上插入值。但现在我有一个规则网格,我想在随机点上插值。
【问题讨论】:
-
@AshishUthama 谢谢
-
很高兴有帮助,没有时间敲定完整的答案。
标签: matlab coordinates interpolation netcdf large-data