csaps

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

Синтаксис

pp = csaps(x,y)
pp = csaps(x,y,p)
pp = csaps(x,y,p,[],w)
values = csaps(x,y,p,xx)
values = csaps(x,y,p,xx,w)
[___] = csaps({x1,...,xm},y,___)
[___,P] = 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. deafult 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 = 1, s1 является вариационным, или естественным, кубическим сплайном 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')

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

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

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')

Соответствуйте сплайну сглаживания к двумерным данным, сгенерированным функцией 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

Для просмотра документации необходимо авторизоваться на сайте