csaps

Кубический сплайн сглаживания

Описание

Примечание

Для более простого, но менее гибкого метода, чтобы сгенерировать сплайны сглаживания, попробуйте приложение Curve Fitting или fit функция.

pp = csaps(x,y) возвращает кубическую интерполяцию сплайна сглаживания в определенные данные (x,y) в ppform. Значение сплайна f на сайте данных x(j) аппроксимирует значение данных y(:,j) для j = 1:length(x).

Сплайн сглаживания f минимизирует

pj=1nwj|yjf(xj)|2ошибочная мера+(1p)λ(t)|D2f(t)|2dt мера по шероховатости

Здесь, n является количеством записей x и интеграл на самом маленьком интервале, содержащем все записи x. y j и x j отсылает к j th записи y и x, соответственно. D 2f обозначает вторую производную функционального f.

Значения по умолчанию для ошибочных весов меры w j равняются 1. Значением по умолчанию для кусочной постоянной функции веса λ в мере по шероховатости является постоянная функция 1. По умолчанию, csaps выбирает значение для параметра сглаживания p на основе сайтов определенных данных x.

Чтобы оценить сглаживание шлицуют вне его основного интервала, необходимо сначала экстраполировать его. Используйте команду pp = fnxtr(pp) гарантировать, что вторая производная является нулем вне интервала, заполненного по условию сайты.

пример

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

пример

pp = csaps(x,y,p,[],w) также задает веса w в ошибочной мере.

пример

values = csaps(x,y,p,xx) использует параметр сглаживания p и возвращает значения сплайна сглаживания, оцененного в точках xx. Этот синтаксис совпадает с fnval(csaps(x,y,p),xx).

values = csaps(x,y,p,xx,w) использует параметр сглаживания p и ошибка измеряет веса w, и возвращает значения сплайна сглаживания, оцененного в точках xx. Этот синтаксис совпадает с fnval(csaps(x,y,p,[],w),xx)

[___] = csaps({x1,...,xm},y,___) обеспечивает ppform m- сглаживание продукта тензора варьируемой величины шлицует к данным по прямоугольной сетке, описанной {x1,...,xm}. Можно использовать этот синтаксис с любым из аргументов в предыдущих синтаксисах.

пример

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

Примеры

свернуть все

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

Загрузите набор данных титана.

[x, y] = titanium();

Когда p = 0, s0 подгонка прямой линии наименьших квадратов к данным. Когда p = 1S1 вариационный, или естественный, кубический сплайн interpolant.

Для 0 < p < 1, sp сплайн сглаживания, который является компромиссом между этими двумя экстремальными значениями: более сглаженный, чем interpolant s1 и ближе к данным, чем прямая линия s0.

p = 0.00009;

s0 = csaps(x,y,0);
sp = csaps(x,y,p);
s1 = csaps(x,y,1);
figure
fnplt(s0);
hold on
fnplt(sp);
fnplt(s1);
plot(x,y,'ko');
hold off
title('Smoothing splines with different values for p');
legend('p = 0', ['p = ' num2str( p )], 'p = 1', 'Location', 'northwest')

Figure contains an axes. The axes with title Smoothing splines with different values for p contains 4 objects of type line. These objects represent p = 0, p = 9e-05, p = 1.

Настройте параметр сглаживания, ошибочные веса меры и веса меры по шероховатости.

Создайте синусоиду с шумом.

x = linspace(0,2*pi,21); y = sin(x)+(rand(1,21)-.5)*.3;

Соответствуйте сплайну сглаживания к данным. Задайте параметр сглаживания p = 0.4 и ошибка измеряет веса w это варьируется через данные.

pp = csaps(x,y,0.4,[],[ones(1,10),repmat(5,1,10), 0]);

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

Теперь соответствуйте сплайну сглаживания с помощью тех же данных, сглаживая параметр и ошибочные веса меры, но с настроенными весами меры по шероховатости.

pp1 = csaps(x,y, [.4,ones(1,10),repmat(.2,1,10)], [], ...
                    [ones(1,10), repmat(5,1,10), 0]);

Вес меры по шероховатости - только 0,2 в правильной половине интервала. Соответственно, подгонка более груба, но ближе на правой стороне данных (за исключением последней точки данных, которая проигнорирована).

Постройте оба соответствуют сравнению.

figure
hold on
fnplt(pp, 'b'); 
fnplt(pp1,'r--')
plot(x,y,'ok')
hold off
ylim([-1.5 1.5])
title(['Cubic smoothing spline, with right half treated ',...
          'differently'])
legend('Larger error weight', 'Larger error and smaller roughness weight')

Figure contains an axes. The axes with title Cubic smoothing spline, with right half treated differently contains 3 objects of type line. These objects represent Larger error weight, Larger error and smaller roughness weight.

Соответствуйте сплайну сглаживания к двумерным данным, сгенерированным peaks функция с добавленным универсальным шумом. Используйте csaps получить новые, сглаживавшие точки данных и параметры сглаживания csaps определяет для подгонки.

Создайте сетку. В данном примере сетка является 51 61 регулярной координатной сеткой.

x = {linspace(-2,3,51),linspace(-3,3,61)};
[xx,yy] = ndgrid(x{1},x{2}); 

Сгенерируйте зашумленные данные с помощью peaks функциональные и случайные числа в интервале [-12,12].

y = peaks(xx, yy);
noisy = y + (rand(size(y)) - 0.5);
figure
surf(xx,yy,noisy)
axis off

Соответствуйте данным. Используйте csaps получить сглаживавшие значения данных оценило по сетке x и параметр сглаживания значения по умолчанию используется в подгонке.

[sval,p] = csaps(x,noisy,[],x);

График подгонки показывает, что некоторая шероховатость остается. Обратите внимание на то, что необходимо транспонировать массив sval.

figure
surf(x{1},x{2},sval.')
axis off

Для несколько более сглаженного приближения задайте значение для p это немного меньше, чем csaps значение по умолчанию.

ssval = csaps(x,noisy,.996,x);
figure
surf(x{1},x{2},ssval.')
axis off

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

свернуть все

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

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

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

Значения данных, чтобы соответствовать во время создания сплайна в виде вектора, матрицы или массива. Значения данных 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

Ошибочные веса меры w по ошибке измеряются в виде вектора из неотрицательных записей одного размера с x.

Значение по умолчанию для вектора веса w по ошибке мерой является ones(size(x)).

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

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

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

свернуть все

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

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

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

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

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

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

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

Оцененный сплайн, возвращенный как вектор или как матрица или массив для многомерных данных. Сплайн оценен в данных точках оценки xx.

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

Алгоритмы

csaps реализация стандартной программы Фортрана SMOOTH из PGS.

Вычисление сплайна сглаживания требует решения линейной системы, матрица коэффициентов которой имеет форму p*A + (1-p)*B, с матрицами A и B в зависимости от сайтов данных x. Значение по умолчанию p делает p*trace(A) равный (1-p)*trace(B).

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

| |

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