Я использую 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 координат.
Так что в основном то, что я ищу, является обратным разбросаннымInterpolant. Эта функция принимает случайные точки данных и вы интерполируете значения на meshgrid. Но теперь у меня есть регулярная сетка, и я хочу интерполяцию на случайных точках.
http://www.mathworks.com/help/matlab/ref/griddedinterpolant-class.html? –
@AshishUthama Спасибо – Terranees
Рад, что помог, не успел выработать полный ответ. –