Как интерполировать и экстраполировать немонотонный векторный набор данных в Matlab - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть географически распределенный набор данных с координатой X, координатой Y и соответствующим целевым значением, представляющим интерес D. То есть мой набор данных состоит из трех векторов: X, Y, D .

Теперь я хотел бы интерполировать и экстраполировать целевую переменную D по координатной сетке, представляющей интерес.Функция griddata в Matlab, кажется, может помочь мне в этой проблеме, но она выполняет только интерполяцию по выпуклой оболочке, определенной моим набором данных.

Я хотел бы также экстраполировать данные D на любую интересующую прямоугольную координатную сетку, например:

enter image description here

Я пытался использовать такие функции, как interp2 и griddedInterpolant, но эти функции, по-видимому, требуют, чтобы я предоставил известные данные в виде монотонных матриц (используя, например, meshgrid).То есть, если я правильно понял, я должен предоставить X, Y, D как 2D-сетки.Но они не являются сетками, они не являются монотонными векторами.

Так как я могу продолжить?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Я нашел один способ, используя scatteredInterpolant:

xy = -2.5 + 5*gallery('uniformdata',[200 2],0);
x = xy(:,1);
y = xy(:,2);
v = x.*exp(-x.^2-y.^2);
F1 = scatteredInterpolant(x,y,v, 'natural');
[xq,yq] = ndgrid(-5:.1:5) % Make the grid
vq1 = F1(xq,yq); % Evaluate function values at grid of interest
surf(xq,yq,vq1)
hold on
plot3(x,y,v, 'ro', 'MarkerFaceColor', 'red')
xlabel('X')
ylabel('Y')
zlabel('V')
title('Interpolation and exrapolation based on scattered data')

enter image description here

Проблема в том, что вы можете выполнить экстраполяцию только тремя способами:'linear', 'nearest', 'natural'.

0 голосов
/ 13 декабря 2018

Вы можете использовать griddata с опцией 'v4', которая использует бигармоническую сплайн-интерполяцию.

В отличие от других методов, эта интерполяция не основана на триангуляции.

Другая опция использует scatteredInterpolant .Вы можете выбрать любой из 'linear' или 'nearest' методов для экстраполяции

...