tpaps

Сплайн сглаживания тонкой пластины

Описание

пример

st = tpaps(x,y) stform тонкой пластины, сглаживающей сплайн f для сайтов определенных данных x(:,j) и значения определенных данных y(:,j). x(:,j) должны быть отличные точки в плоскости, значения могут быть скалярами, векторами, матрицами, даже массивы ND, и должно быть столько же значений, сколько существуют сайты.

Тонкая пластина, сглаживающая сплайн f, является уникальным минимизатором взвешенной суммы

pE(f)+(1p)R(f)

с E (f) ошибочная мера

E(f)=j|y(:,j)f(x(:,j))|2

и R (f) мера по шероховатости

R(f)=(|D1D1f|2+2|D1D2f|2+|D2D2f|2)

Здесь, интеграл взят по всему R 2, |z|2 обозначает сумму квадратов всех записей z, и Dif обозначает частную производную f относительно ее i-th аргумент, следовательно подынтегральное выражение включает вторые частные производные f. Функция выбирает параметр сглаживания p так, чтобы (1-p)/p равняется среднему значению диагональных элементов матричного A, с A + (1-p)/p*eye(n) матрица коэффициентов линейной системы для n коэффициенты сглаживания шлицуют, чтобы быть определенными. Это гарантирует пребывание, промежуточное два экстремальных значения интерполяции (когда p близко к 1 и матрицей коэффициентов является по существу A) и полное сглаживание (когда p близко к 0 и матрица коэффициентов является по существу кратным единичной матрице). Это служит хорошим первым предположением для p.

пример

st = tpaps(x,y,p) также вводит параметр сглаживания, p, номер между 0 и 1. Когда параметр сглаживания варьируется от 0 до 1, сплайн сглаживания варьируется от приближения наименьших квадратов до данных линейным полиномом когда p 0, к тонкой пластине шлицуют interpolant к данным когда p 1.

[...,P] = tpaps(...) также возвращает значение параметра сглаживания, используемого в итоговом результате сплайна, задаете ли вы p. Этот синтаксис полезен для экспериментирования, в котором можно начать с [pp,P] = tpaps(x,y) и получите разумное первое предположение для p.

Примеры

свернуть все

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

rng(23); nxy = 31;
xy = 2*(rand(2,nxy)-.5); vals = sum(xy.^2);
noisyvals = vals + (rand(size(vals))-.5)/5;
st = tpaps(xy,noisyvals); fnplt(st), hold on
avals = fnval(st,xy);
plot3(xy(1,:),xy(2,:),vals,'wo','markerfacecolor','k')
quiver3(xy(1,:),xy(2,:),avals,zeros(1,nxy),zeros(1,nxy), ...
         noisyvals-avals,'r'), hold off

Figure contains an axes. The axes contains 3 objects of type surface, line, quiver.

Следующий код использует сплайн тонкой пластины интерполяции для значений данных с векторным знаком, чтобы создать карту от плоскости до плоскости, которая несет модульный квадрат {x:|x(j)|1,j=1:2} приблизительно на единичный диск {x:x(1)2+x(2)21}.

n = 64; t = linspace(0,2*pi,n+1); t(end) = [];
values = [cos(t); sin(t)];
centers = values./repmat(max(abs(values)),2,1);
st = tpaps(centers, values, 1);
fnplt(st), axis equal

Figure contains an axes. The axes contains an object of type line.

Отметьте выбор 1 для параметра сглаживания здесь, чтобы получить интерполяцию.

Входные параметры

свернуть все

Сайты данных значений данных y быть подходящим в виде вектора или как массив ячеек для многомерных данных. Сплайн f создается с узлами на каждом сайте данных x таким образом, что f (x(j)) = y(:,j) для всех значений j.

Для многомерных, данных с координатной сеткой можно задать x как массив ячеек, который задает сайт данных в каждой переменной размерности: f (x1(i),x2(j),...xn(k)) = y(:,i,j,...,k).

Значения данных, чтобы соответствовать во время создания сплайна в виде вектора, матрицы или массива. Значения данных y(:,j) могут быть скаляры, матрицы или n - размерные массивы. Значения данных, данные на том же сайте данных x усреднены.

Типы данных: single | double

Сглаживание параметра в виде скалярного значения между 0 и 1 или как массив ячеек значений для многомерных данных. Можно также задать значения для весов меры по шероховатости λ путем обеспечения p как вектор. Чтобы обеспечить веса меры по шероховатости для многомерных данных, используйте массив ячеек векторов. Если вы обеспечиваете пустой массив, функция выбирает значение по умолчанию для p на основе сайтов данных x и значение по умолчанию 1 поскольку шероховатость измеряет вес λ.

Параметр сглаживания определяет относительный вес, чтобы поместить на противоречащих требованиях наличия f явиться гладким или наличие f быть близко к данным. Для p = 0, f является наименьшими квадратами прямолинейная подгонка к данным. Для p = 1, f является вариационным, или естественным, кубическим сплайном interpolant. Как p перемещения от 0 до 1, сплайн сглаживания изменяется от одного экстремального значения до другого.

Благоприятная область значений для p часто близкий 1 / (1 + h 3/6), где h является средним интервалом сайтов данных. Функция выбирает значение по умолчанию для p в этой области значений. Для однородно расположенных с интервалами данных можно ожидать плотное прилегание с p = 1 (1 + h 3/60) и некоторое удовлетворительное сглаживание с p = 1 / (1 + h 3/0.6). Можно ввести p > 1, но этот выбор приводит к сплайну сглаживания, еще более грубому, чем вариационный кубический сплайн interpolant.

Если вход p отрицательно или пуст, затем функция использует значение по умолчанию для p.

Можно задать веса меры по шероховатости λ вместе с параметром сглаживания путем обеспечения p как вектор. Этот вектор должен быть одного размера с x, с iзапись th значение λ на интервале (x(i-1)...x(i)), для i = 2:length(x). Первая запись входного вектора p требуемое значение параметра гладкости p. Путем обеспечения шероховатости измеряют веса, можно сделать получившийся сплайн сглаживания более сглаженным (с большими значениями веса) или ближе к данным (с меньшими значениями веса) в различных частях интервала. Веса меры по шероховатости должны быть неотрицательными.

Если вы испытываете затруднения при выборе p но имейте некоторых сопереживающих размеру шума в y, рассмотрите использование spaps(x,y,tol) вместо этого. Эта функция выбирает p таким образом, что мера по шероховатости как можно меньше согласно условию, что ошибочная мера не превышает tol. В этом случае ошибочная мера обычно равняется заданному значению для tol.

Типы данных: single | double

Выходные аргументы

свернуть все

Шлицуйте, возвращенные как структура с этими полями.

Форма сплайна, возвращенного как st-tp00, st-tp10, st-tp01, или st-tp.

Последовательность сайтов, возвращенных как матрица или как массив для многомерных данных.

Коэффициенты полиномов для каждой части, возвращенной как матрица или как массив для многомерных данных.

Количество последовательности сайтов.

Количество полиномиальных частей, описывающих сплайн, возвращенный как скаляр или как вектор из количеств частей в каждой переменной для многомерных данных.

Размерность целевой функции, возвращенной как скаляр.

Основной интервал для stform, которая содержит все данные центры, возвратился как массив.

Сглаживание параметра, используемого, чтобы вычислить сплайн, возвратилось как скаляр или как массив ячеек скалярных значений для многомерных данных. P между 0 и 1.

Ограничения

Определение сплайна сглаживания включает решение линейной системы со столькими же неизвестных, сколько существуют точки данных. Поскольку матрица этой линейной системы полна, решение может занять много времени, даже если, как имеет место здесь, итеративная схема используется, когда существует больше чем 728 точек данных. Быстрота сходимости той итерации строго под влиянием p, и медленнее больший p . Так, для больших проблем используйте интерполяцию, т.е. p равняйтесь 1, только если можно выкроить время.

Представленный в R2006b