Как работает линейная экстраполяция ScatteredInterpolant () в MATLAB?

Для моего проекта я должен написать код C ++, эквивалентный функции ScatteredInterpolant () в Matlab. Мои данные представляют собой разбросанные данные в трех измерениях. Я могу рассчитать тетраэдра Делоне, используя библиотеку TetGen. Я сравнил результаты интерполяции, используя тетраэдры, найденные из TetGen и из собственной функции delaunay () в Matlab, результаты такие же, как если точка запроса находится внутри выпуклой оболочки.

В моем проекте я должен экстраполировать точки вне выпуклой оболочки, используя линейную экстраполяцию. Я просмотрел документацию по Matlab, где написано: «Линейная экстраполяция на основе градиентов границы». Из моего обзора литературы я не смог найти хорошую документацию, как линейная экстраполяция работает с использованием градиентов границы. Я был бы очень признателен, если бы вы предоставили мне представление о том, как работает линейная экстраполяция для scatteredInterpolant ().

Я заглянул на страницу документации по экстраполяции разбросанных данных, на которой написано, что «линейный» метод экстраполяции основан на приближении наименьших квадратов градиента на границе выпуклой оболочки. Значения, которые он возвращает для точек запроса вне Выпуклые корпуса основаны на значениях и градиентах на границе «. Для проверки я написал следующий код (2D данные):

clc;clear;close all;

x = [ -1 1 1 -1 0 ]; y = [ -1 -1 1 1 0 ];

v = x.^2 + y.^2;

tri = delaunay(x, y);

F = scatteredInterpolant(x(:), y(:), v(:), 'linear', 'linear');

[xq, yq] = meshgrid( -2 : 0.1 : 2 );

vq = F(xq, yq);

figure; plot(x, y, 'r*');hold on; tri = delaunay(x, y); triplot(tri, x, y); xlabel('x');ylabel('y'); scatter3(x, y, v, 'r', 'filled');hold on; surf(xq, yq, vq); text(x(1), y(1), '1', 'fontsize', 20); text(x(2), y(2), '2', 'fontsize', 20); text(x(3), y(3), '3', 'fontsize', 20); text(x(4), y(4), '4', 'fontsize', 20); text(x(5), y(5), '5', 'fontsize', 20); box on; xlabel('x');ylabel('y'); set(gca, 'fontsize', 16);

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

Спасибо

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]