Интерполяция данных Matlab из неструктурированной 2D-сетки в грубую структурированную 2D-сетку - PullRequest
0 голосов
/ 22 февраля 2019

Я работаю с Matlab, и у меня есть двумерная мелкая неструктурированная сетка (x, y - 900000 x 1, 900000 x1) с одномерным массивом значений (температуры) (900000 x 1) для каждого узла неструктурированной сетки!

Я создал грубую структурированную 2D-сетку и пытаюсь найти способ интерполировать мои данные в эту новую сетку.Пожалуйста, кто-нибудь знает или может предложить способ сделать это?

любое предложение / помощь более чем приветствуются!

Спасибо,

G.

1 Ответ

0 голосов
/ 22 февраля 2019

Скажем, у вас есть набор точек, определенных координатами в x и y и соответствующими значениями температуры в t, так что температура в (x(i), y(i)) равна t(i).Для каждой точки нет структуры для местоположений.

Вы хотите найти температуры в новых местоположениях, заданные как xq, yq.Они могут или сформировать сетку или быть неструктурированными.Давайте определим сетку:

[xq, yq] = meshgrid(linspace(0,1,100), linspace(-0.5,0.5,100));

В этом примере сетки у нас есть 100 выборок в диапазоне от 0 до 1 по оси x и 100 выборок в диапазоне от -0,5 до 0,5 по оси y, что в общей сложностииз 10 тыс. точек.

Функция griddata будет интерполировать входные данные в новых местоположениях:

tq = griddata(x,y,t, xq,yq);

tq теперь имеет ту же форму, что иxq и yq, то есть это матрица 100x100.Чтобы превратить это в новый список, такой как оригинал, просто измените его на вектор.tq = tq(:) делает это.Кроме того, перед вызовом griddata:

xq = xq(:);
yq = yq(:);
tq = griddata(x,y,t, xq,yq);

измените форму массивов местоположения запроса. Теперь tq - это вектор-столбец.

...