Интерполяция большого двумерного замаскированного массива - PullRequest
3 голосов
/ 10 марта 2012

У меня есть матовая матрица.И хотел сделать интерполяцию в замаскированных регионах.Я попробовал RectBivariateSpline, но он не распознал замаскированные области как замаскированные и использовал эти точки также для интерполяции.Я также попробовал bisplrep после создания векторов X, Y, Z 1d.Каждый из них имел длину 45900. Потребовалось много времени для расчета Bsplines.И наконец дал ошибку Сегментации при запуске бисплев.2d матрица имеет размер 270x170.

Есть ли способ заставить RectBivariateSpline не включать маскированные области в интерполяцию?Или есть другой способ?bisplrep был слишком медленным.

Благодарю вас, indiajoe

ОБНОВЛЕНИЕ: Когда сетка мала, scipy.interpolate.Rbf с функцией 'linear' делает разумную работу.Но он выдает ошибку, когда массив большой.

Есть ли какая-либо другая функция, которая позволит мне интерполировать и сглаживать мою матрицу?

Я также сделал следующий вывод.Исправьте меня, если я ошибаюсь.

1) RectBivariateSpline требует идеально заполненной матрицы и, следовательно, маскированные матрицы использовать нельзя.

1 Ответ

1 голос
/ 09 августа 2012

Очень поздно, но ...

У меня есть проблема, похожая на вашу, и я получаю ошибку сегментации с бисплайнами, а также ошибку памяти с rbf (в которой функция "thin_plate" отлично работает дляменя.

Поскольку мои данные неструктурированы, но созданы структурированным образом, я использую понижающую дискретизацию до половины или одной трети плотности точек данных, чтобы я мог использовать Rbf. Что я советую вам сделать, так это(очень неэффективно, но все же лучше, чем вообще не делать) разделить матрицу на множество перекрывающихся областей, затем создать rbf-интерполяторы для каждого региона, затем при интерполяции одной точки вы выбираете соответствующий интерполятор.

Кроме того, если у вас есть замаскированный массив, вы все равно можете выполнить интерполяцию в немаскированном массиве, а затем применить маску к результату. (ну, на самом деле нет, см. Комментарии)

Надеюсь, это кому-нибудь поможет

...