Интерполяция на нерегулярном наборе точек

программирование математика обучение алгоритмы

Задано мноество точек на плоскости. Каждой точке соответствует некий вес. При этом положение точек произвольно, т. е. они не лежат в узлах неравномерной сетки. Это легко представить матрицей, например:
6 N 9 N
N N N N
2 N 4 N
1 N 2 N
Где N - отстутствующие данные (в реализыции - это -1)
Нужно готовую функцию на C-подобном языке, которя:
Из нерегулярного набора делает регулярный, т.е. матрицу:
6 8 9 8
4 5 7 7
2 4 4 3
1 2 2 2
Как бы восполняя промежутки...
По английски понятнее:
"Generate a regular mesh from irregular data using interpolation."
Требуется, чтобы в указанных точках значения оставались неизменными.

Есть две самописных реализации, но их работа не устраивает меня.
Может есть у кого готвые реализации? Очень нужно для сравнения производительности + хотя бы идею реализации, чтобы код был понятнее...

Или просто рабочий код, какой-нибудь...


Примечание:
Артёмка, просто Ваши знания в математике слегка мутные.
Взгляните хоть что такое интерполяция. Восполните пробелы в знаниях.

Если интерполяция - это, грубо говоря, способ получения промежуточных значений, то случайными они точно не будут.

Примечание:
Всем спасибо!
Imageman, Ваши ссылки не по теме, нужен был иррегулярный набор точек.
Думаете я поиском пользоваться не умею... Вдобавок, если искать, то хотя бы не на русском "2D Interpolation of Irregular Grid Data"

а то получается, что для большинства otvety.google.ru - это "copy-paste google search results". Обидно...

Blood, спасибо... но её я уже реализовал...

Меня интересовали именно уникальные(!) алгоритмы...
Сам я написал B-сплайновые вейвлеты и то что уже сказано -
триангуляцию Делоне, а затем любой другой метод для регулярного набора.

Оригинальностью отличился Anton Valter, за что ему большое спасибо.
Ответы:
А заполнить недостающие элементы матрицы случайными числами - чем тебе не интерполяция?
Какая-то у тебя постановка задачи мутная.
На сколько гладко решение должно быть?
Если гладкость важна - смотрим в сторону сплайнов, наверно.
Если нет - линейно соединяем точки сперва по горизонтали, затем по вертикали. Если одну и ту-же точку устанавливаем дважды - берём среднее значение. (это решение на коленке. надо-б по хорошему книжку полистать)
Матрица - это равномерная сетка, если рассматривать строки и столбцы как координаты (соответственно, значения - как вес).
Если в матрице не задана часть элементов, это не значит что положение заданных произвольно - ты ведь не можешь задать элемент с дробными строкой и столбцом.
Объясни точнее, матрица там или просто два множество точек - с известными и неизвестными весами.
А по решению +1 к Anton Valter, вес отсутствующих точек будет зависеть от метода интерполяции.
Вам нужно читать о Триангуляция Делоне
Пусть задано множество A точек на плоскости
Для каждой точки определена высота f(p)
Как наиболее естественно аппроксимировать высоты точек не из A ?


16 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.