Интерполяция данных в сетке

Сетчатые данные состоят из значений или измерений в регулярно разнесенных точках, которые образуют сетку. Данные с сеткой возникают во многих областях, таких как метеорология, обследование и медицинская визуализация. В этих областях обычно проводят измерения с регулярными пространственными интервалами, возможно, с течением времени. Эти упорядоченные сетки данных могут варьироваться от 1-D (для простых временных рядов) до 4-D (для измерения объемов с течением времени) или выше. Некоторые примеры данных с сеткой:

  • 1-D: Цены акций с течением времени

  • 2-D: Температура поверхности

  • 3-D: МРТ- изображение головного мозга

  • 4-D: Измерения океана в объеме воды с течением времени

Во всех этих приложениях основанная на сетке интерполяция эффективно распространяет полезность данных на точки, где не было проведено измерений. Для примера, если у вас есть почасовые данные цены для запаса, можно использовать интерполяцию, чтобы аппроксимировать цену каждые 15 минуты.

Функции

Интерполяции с координатной сеткой MATLAB

MATLAB® предоставляет несколько инструментов для интерполяции на основе сетки:

Функции создания сетки

meshgrid и ndgrid функции создают сетки различной размерности. meshgrid может создавать 2-D или 3-D сетки, в то время как ndgrid может создавать сетки с любым количеством размерностей. Эти функции возвращают сетки с различными форматами выхода. Преобразовать между этими форматами сетки можно используя pagetranspose (начиная с R2020b) или permute функции для замены первых двух размерностей сетки.

Функции интерполяции

The interp семейство функций включает interp1, interp2, interp3, и interpn. Каждая функция предназначена для интерполяции данных с определенным количеством размерностей. interp2 и interp3 использовать сетки в meshgrid формат, в то время как interpn использует сетки в ndgrid формат.

Объекты интерполяции

griddedInterpolant объекты поддерживают интерполяцию в любом количестве размерностей для данных в ndgrid формат. Эти объекты также поддерживают многозначную интерполяцию (начиная с R2021a), где каждая точка сетки может иметь несколько значений, связанных с ней.

Существуют преимущества памяти и эффективности при использовании griddedInterpolant объекты по interp функций. griddedInterpolant предлагает существенные улучшения эффективности для повторных запросов интерполяционного объекта, в то время как interp функции выполняют новое вычисление каждый раз, когда они вызываются. Кроме того, griddedInterpolant сохраняет точки выборки в эффективном для памяти формате (как компактную сетку) и многопоточно, чтобы использовать преимущества многоядерного компьютера процессоров.

Представления сетки

MATLAB позволяет представлять сетку в одном из трех представлений: полной сетки, компактной сетки или сетки по умолчанию. Сетка по умолчанию и компактная сетка используются в основном для удобства и повышения эффективности, соответственно.

Полная сетка

full grid является такой, в которой все точки определены явно. Выходные выходы ndgrid и meshgrid задайте полную сетку. Можно создать полные uniform сетки, в которых точки в каждой размерности имеют равные интервалы, или nonuniform, в которых интервалы изменяются в одних или нескольких размерностях. Равномерные сетки могут иметь различные интервалы в каждой размерности, пока интервалы постоянны в каждой размерности.

УниформаУниформаНеоднородный

Grid with uniformly-spaced points in each direction.

Grid with uniformly-spaced points, but the spacing differs in each dimension.

Grid with nonuniformly-spaced points in each dimension.

Примером однородной полной сетки является:

[X,Y] = meshgrid([1 2 3],[3 6 9 12])
X =

     1     2     3
     1     2     3
     1     2     3
     1     2     3


Y =

     3     3     3
     6     6     6
     9     9     9
    12    12    12

Компактная сетка

Явное определение каждой точки в сетке может потреблять много памяти, когда вы имеете дело с большими сетками. Представление compact grid является способом обойтись без служебных данных памяти полной сетки. Компактное представление сетки сохраняет только grid vectors (по одному для каждой размерности) вместо полной сетки. Вместе векторы сетки неявно определяют сетку. Фактически, входы для meshgrid и ndgrid являются векторами сетки, и эти функции реплицируют векторы сетки, формируя полную сетку. Компактное представление сетки позволяет вам обойти создание сетки и предоставить векторы сетки непосредственно в функцию интерполяции.

Для примера рассмотрим два вектора, x1 = 1:3 и x2 = 1:5. Можно думать об этих векторах как о наборе координат в x1 направление и набор координат в x2 направление, как так:

One grid vector is arranged horizontally and the other vertically.

Каждая стрела указывает на местоположение. Можно использовать эти два вектора, чтобы задать набор точек сетки, где один набор координат задается x1 а другой набор координат задается x2. Когда векторы сетки реплицируются, они образуют два массива координат, которые составляют полную сетку:

With one grid vector arranged horizontally and the other vertically, the points in the vectors define a grid of points.

Ваши входные векторы сетки могут быть monotonic или nonmonotonic. Монотонные векторы содержат значения, которые либо увеличиваются в этой размерности, либо уменьшаются в этой размерности. И наоборот, немонотонные векторы содержат значения, которые колеблются. Если входной вектор сетки немонотонен, например [2 4 6 3 1], затем [X1,X2] = ndgrid([2 4 6 3 1]) выводит немонотонную сетку. Ваши векторы сетки должны быть монотонными, если вы намерены передать сетку другим функциям MATLAB. sort функция полезна для обеспечения монотонности.

Сетка по умолчанию

В некоторых приложениях важны только значения в точках сетки, а не расстояния между точками сетки. Для примера большинство МРТ сканов собирать данные, которые равномерно распределены во всех направлениях. В подобных случаях можно разрешить функции интерполяции автоматически генерировать представление default grid для использования с данными. Для этого оставьте входные входы сетки в функции интерполяции. Когда вы исключаете входы сетки, функция автоматически рассматривает данные как находящиеся на сетке с единичными интервалами. Функция создает сетку с единичными интервалами во время ее выполнения, спасая вас от проблемы создания сетки самостоятельно.

Пример: Температурная интерполяция на 2-D-сетке

Рассмотрим данные о температуре, собранные на поверхности с регулярными интервалами 5 см, простирающимися на 20 см в каждом направлении. Использовать meshgrid для создания полной сетки.

[X,Y] = meshgrid(0:5:20)
X =

     0     5    10    15    20
     0     5    10    15    20
     0     5    10    15    20
     0     5    10    15    20
     0     5    10    15    20


Y =

     0     0     0     0     0
     5     5     5     5     5
    10    10    10    10    10
    15    15    15    15    15
    20    20    20    20    20

Координаты (x, y) каждой точки сетки представлены как соответствующие элементы в X и Y матрицы. Первая точка сетки задается как [X(1) Y(1)], что [0 0]следующая точка сетки определяется [X(2) Y(2)], что [0 5]и так далее.

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

T = [1   1   10   1   1; 
     1   10  10   10  10;  
     100 100 1000 100 100; 
     10  10  10   10  1;
     1   1   10   1   1];
surf(X,Y,T)
view(2)

Surface plot of gridded temperature data.

Хотя температура в центральной точке сетки большая, ее расположение и влияние на окружающие точки сетки не очевидны из необработанных данных.

Чтобы улучшить разрешение данных в 10 раз, используйте interp2 чтобы интерполировать данные о температуре в более мелкую сетку, которая использует интервалы 0,5 см. Использовать meshgrid снова, чтобы создать более мелкую сетку, представленную матрицами Xq и Yq. Затем используйте interp2 с исходной сеткой, данными о температуре и новыми точками сетки и постройте график получившихся данных. По умолчанию, interp2 использует линейную интерполяцию в каждой размерности.

[Xq,Yq] = meshgrid(0:0.5:20);
Tq = interp2(X,Y,T,Xq,Yq);
surf(Xq,Yq,Tq)
view(2)

Surface plot of interpolated temperature data.

Интерполяция данных о температуре добавляет детализацию изображению и значительно улучшает полезность данных в области измерений.

Интерполяция с координатной сеткой методы

Основанные на сетке функции интерполяции и объекты в MATLAB предлагают несколько различных методов интерполяции. При выборе метода интерполяции имейте в виду, что некоторым требуется больше памяти или больше времени расчетов, чем другим. Вы, возможно, должны будете обменяться этими ресурсами, чтобы достичь желаемой плавности в результате. В следующей таблице дается предварительный просмотр каждого метода интерполяции, применяемого к одним и тем же 1-D данным, а также дается обзор преимуществ, компромиссов и требований для каждого метода.

МетодОписание

Nearest neighbor interpolation.

Интерполированное значение в точке запроса является значением в ближайшей точке сетки расчета.

  • Прерывистый

  • Скромные требования к памяти

  • Самое быстрое время расчета

  • Требуется 2 точки сетки в каждой размерности

Next neighbor interpolation.

Интерполированное значение в точке запроса является значением в следующей точке сетки расчета.

  • Прерывистый

  • Те же требования к памяти и времени расчета, что и у ближайшего соседа

  • Доступен только для 1-D интерполяции

  • Требуется по крайней мере 2 точки сетки

Previous neighbor interpolation.

Интерполированное значение в точке запроса является значением в предыдущей точке сетки образца.

  • Прерывистый

  • Те же требования к памяти и времени расчета, что и у ближайшего соседа

  • Доступен только для 1-D интерполяции

  • Требуется по крайней мере 2 точки сетки

Linear interpolation.

Интерполированное значение в точке запроса основано на линейной интерполяции значений в соседних точках сетки в каждой соответствующей размерности.

  • C0 непрерывный

  • Требуется больше памяти и времени расчета, чем у ближайшего соседа

  • Требуется по крайней мере 2 точки сетки в каждой размерности

Piece-wise cubic interpolation.

Интерполированное значение в точке запроса основано на сохраняющей форму кусочно-кубической интерполяции значений в соседних точках сетки.

  • C1 непрерывный

  • Требуется больше памяти и времени расчета, чем линейное

  • Доступен только для 1-D интерполяции

  • Требуется не менее 4 точек сетки

Cubic interpolation.

Интерполированное значение в точке запроса основано на кубической интерполяции значений в соседних точках сетки в каждой соответствующей размерности.

  • C1 непрерывный

  • Требуется больше памяти и времени расчета, чем линейное

  • Сетка должна иметь равномерные интервалы, хотя интервалы в каждой размерности не должны быть одинаковыми

  • Требуется не менее 4 точек в каждой размерности

Modified Akima interpolation.

Интерполированное значение в точке запроса основано на кусочно-линейной функции полиномов со степенью не более трех, оцененных с использованием значений соседних точек сетки в каждой соответствующей размерности. Формула Акимы изменена, чтобы избежать перерегулирования.

  • C1 непрерывный

  • Аналогичные требования к памяти как сплайн

  • Требуется больше времени расчета, чем кубического, но обычно меньше, чем сплайн

  • Требуется по крайней мере 2 точки сетки в каждой размерности

Spline interpolation.

Интерполированное значение в точке запроса основано на кубической интерполяции значений в соседних точках сетки в каждой соответствующей размерности.

  • C2 непрерывный

  • Требуется больше памяти и времени расчета, чем кубический

  • Требуется не менее 4 точек в каждой размерности

См. также

| | | |

Похожие темы