Кто-нибудь знает, как сделать двумерную интерполяцию?
26.01.04 12:03: Перенесено модератором из 'C/C++' — ПК
Два раза применить обычную. Например, у нас есть значения в целых узлах. Нам нужно узнать в (1.76, 2.13). Делаем так:
интерполируем отрезок (1,2)-(2,2), получаем значение в (1.76,2). Аналогично получаем значение в (1.76, 3). Затем на отрезке (1.76,2)-(1.76,3) интерполируем по вертикали.
Posted via RSDN NNTP Server 1.8 beta
"spectre" <21150@news.rsdn.ru> writes:
> Кто-нибудь знает, как сделать двумерную интерполяцию?
А характер данных какой ? И какую гладкость нужно получить ?
Posted via RSDN NNTP Server 1.8 beta
"spectre" <21150@news.rsdn.ru> writes:
> C>А характер данных какой ? И какую гладкость нужно получить ?
> данные — матрица, представляющая собой двумерное распределение
> вероятности — рисунок. Он получается не гладкий, нужно получить
> достаточно гладкий рисунок, чтоб неровности не были заметным глазом -
> т.е. увеличить размерность матрицы и соответственно уменьшить размер
> однной ячейки раз в 5.
Как я понял, данные расположены произвольно, иначе можно было бы
использовать, скажем, бикубическую интерполяцию. Данные же
расположенные произвольно относительно просто можно интерполировать с
помощью т.н. радиальных функций (RBF, radial based functions)
различного вида, thin-plate, Gaussian, multiquadric. Этот метод
относиться к т.н. безсеточным, т.е. не нужно проводить разбивку
исходной области на КЭ. Гугл знает где статьи найти, а если вдруг нет,
то могу несколькими поделиться.
Posted via RSDN NNTP Server 1.8 beta