spap2

Наименьшие квадраты шлицуют приближение

Описание

пример

spline = spap2(knots,k,x,y) возвращает B-форму сплайна f порядка k с данной последовательностью узла knots для которого

(*)   y(:,j) = f(x(j)), all j 

во взвешенном среднеквадратическом смысле, означая, что сумма

jw(j)|y(:,j)f(x(j))|2

минимизирован, с весами по умолчанию, равными 1. Значения данных y(:,j) могут быть скаляры, векторы, матрицы, или массивы ND и |z |2 сумма квадратов всех записей z. Точки данных с тем же сайтом заменяются их средним значением.

Если сайты x удовлетворите условиям Шенберга-Уитни

          узлы(j)<x(j)<узлы(j+k)(**)                                j=1,...,длина(x)=длина (узлы)k

затем существует уникальный сплайн данного распоряжения и удовлетворения последовательности узла (*) точно. Никакой сплайн не возвращен, если (**) не удовлетворен для некоторой подпоследовательности x.

spap2(l,k,x,y) , с l положительное целое число, возвращает B-форму, наименьшие квадраты шлицуют аппроксимирующая функция, но с последовательностью узла, выбранной для вас. Последовательность узла получена путем применения aptknt к соответствующей подпоследовательности x. Получившийся кусочный полином состоит из l полиномиальные части и имеют k-2 непрерывные производные. Если вы чувствуете, что различное распределение внутренних узлов может сделать лучшее задание, развить это с

sp1 = spap2(newknt(spline),k,x,y));

spline = spap2(...,x,y,w) позволяет вам задать веса w в ошибочной мере (данный выше). w должен быть вектор одного размера с x, с неотрицательными записями. Все веса, соответствующие точкам данных с тем же сайтом, суммированы, когда те точки данных заменяются их средним значением.

spap2({knorl1,...,knorlm},k,{x1,...,xm},y) обеспечивает, наименьшие квадраты шлицуют приближение к данным с координатной сеткой. Здесь, каждый knorli или последовательность узла или положительное целое число. Далее, k должен быть m- вектор и y должен быть (r+m) - размерный массив, с y(:,i1,...,im) данная величина, которая будет адаптирована в site [x{1}(i1),...,x{m}(im)], весь i1\Im. Однако, если сплайн должен быть со скалярным знаком, то, в отличие от одномерного случая, y разрешен быть m- размерный массив, в этом случае y(i1,...,im) данная величина должна быть адаптирована в site [x{1}(i1),...,x{m}(im)], весь i1\Im.

spap2({knorl1,...,knorlm},k,{x1,...,xm},y,w) также позволяет вам задать веса. В этом m- случай варьируемой величины, w должен быть массив ячеек с m записи, с w{i} неотрицательный вектор одного размера с xi, или иначе w{i} должно быть пустым, в этом случае веса по умолчанию используются в iпеременная th.

Примеры

свернуть все

В этом примере показано, как вычислить приближение наименьших квадратов к данным xY, кубическими сплайнами с двумя непрерывными производными, основной интервал [aB], и внутренняя часть повреждает xi, если xi имеет все его записи в (a..b) и условиям (**) удовлетворяют.

sp = spap2(augknt([a,xi,b],4),4,x,y)

В этом случае приближение состоит из length(xi)+1 полиномиальные части. Если вы только хотите получить кубическое приближение сплайна, состоящее из l полиномиальные части, используйте вместо этого

sp = spap2(l,4,x,y); 

Если получившееся приближение не является удовлетворительным, попытайтесь использовать больший l. Еще используйте

sp = spap2(newknt(sp),4,x,y);

для лучшего распределения последовательности узла. Повторите этот процесс многократно, чтобы увеличить точность распределения.

Как другой пример, spap2(1,2,x,y); предоставляет наименьшим квадратам прямолинейную подгонку к данным xYв то время как

w = ones(size(x)); 
w([1 end]) = 100; 
spap2(1,2,x,y,w); 

силы, которые соответствуют, чтобы очень близко подойти к точке First Data и к последнему.

В этом примере показано, как создать двумерную функцию, и вычислить и построить ее приближение наименьшего квадрата.

Сгенерируйте данные для приближения и двумерной функции.

x = -2:.2:2; 
y=-1:.25:1; 
[xx, yy] = ndgrid(x,y); 
z = exp(-(xx.^2+yy.^2)); 

Вычислите приближение наименьшего квадрата и постройте его.

sp = spap2({augknt([-2:2],3),2},[3 4],{x,y},z);
fnplt(sp)

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

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

свернуть все

Свяжите последовательность узлом сплайна в виде не уменьшающегося вектора.

Порядок сплайна f в виде скаляра.

Количество полиномиальных частей получившегося кусочного полинома в виде положительного целого числа.

Веса по ошибке измеряются в виде неотрицательного вектора одного размера с x.

Сайты данных значений данных 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

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

свернуть все

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

Форма сплайна, возвращенного как B-B- указывает, что это дано в B-форме.

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

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

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

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

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

Алгоритмы

spcol обращен с просьбой обеспечить почти диагональную блоком матрицу словосочетания (Bj, k (xi)), и slvblk решает линейную систему (*) во (взвешенном) смысле наименьших квадратов, с помощью QR-факторизации блока.

Данные с координатной сеткой адаптированы, способом продукта тензора, одна переменная за один раз, использовав в своих интересах то, что одномерная подгонка метода взвешенных наименьших квадратов зависит линейно от адаптируемых значений.

Смотрите также

| |

Представлено до R2006a