Интерполяция данных кубического сплайна
Использовать spline для интерполяции синусоидальной кривой по неравномерно разнесенным точкам выборки.
x = [0 1 2.5 3.6 5 7 8.1 10];
y = sin(x);
xx = 0:.25:10;
yy = spline(x,y,xx);
plot(x,y,'o',xx,yy)
Используйте привязанную или полную интерполяцию сплайна, если откосы конечных точек известны. Для этого можно задать вектор значений с двумя дополнительными элементами, один в начале и один в конце, чтобы определить откосы конечных точек.
Создайте вектор данных и другой вектор с координатами x данных.
x = -4:4; y = [0 .15 1.12 2.36 2.36 1.46 .49 .06 0];
Интерполяция данных с помощью spline и постройте график результатов. Укажите второй вход с двумя дополнительными значениями [0 y 0] для обозначения того, что откосы конечных точек равны нулю. Использовать ppval для оценки посадки сплайна по 101 точке в интервале интерполяции.
cs = spline(x,[0 y 0]); xx = linspace(-4,4,101); plot(x,y,'o',xx,ppval(cs,xx),'-');

Экстраполировать набор данных для прогнозирования роста населения.
Создайте два вектора для представления переписных лет с 1900 по 1990 год (t) и соответствующее население Соединенных Штатов в миллионах человек (p).
t = 1900:10:1990;
p = [ 75.995 91.972 105.711 123.203 131.669 ...
150.697 179.323 203.212 226.505 249.633 ];Экстраполировать и прогнозировать популяцию в 2000 году с использованием кубического сплайна.
spline(t,p,2000)
ans = 270.6060
Создание графика окружности с пятью точками данных y(:,2),...,y(:,6) помечен как o's. Матрица y содержит на два столбца больше, чем x. Поэтому spline использование y(:,1) и y(:,end) в качестве конечных откосов. Круг начинается и заканчивается в точке (1,0), поэтому эта точка выводится на печать дважды.
x = pi*[0:.5:2];
y = [0 1 0 -1 0 1 0;
1 0 1 0 -1 0 1];
pp = spline(x,y);
yy = ppval(pp, linspace(0,2*pi,101));
plot(yy(1,:),yy(2,:),'-b',y(1,2:5),y(2,2:5),'or')
axis equal
Используйте сплайн для выборки функции по более тонкой сетке.
Создайте синусоидальные и косинусные кривые для нескольких значений от 0 до 1. Используйте интерполяцию сплайнов для выборки функций по более тонкой сетке.
x = 0:.25:1; Y = [sin(x); cos(x)]; xx = 0:.1:1; YY = spline(x,Y,xx); plot(x,Y(1,:),'o',xx,YY(1,:),'-') hold on plot(x,Y(2,:),'o',xx,YY(2,:),':') hold off

spline, pchip, и makimaСравнение результатов интерполяции, полученных spline, pchip, и makima для двух различных наборов данных. Все эти функции выполняют различные формы кусочно-кубической эрмитовой интерполяции. Каждая функция отличается тем, как она вычисляет наклоны интерполятора, что приводит к различным поведениям, когда нижележащие данные имеют плоские области или волнистости.
Сравните результаты интерполяции с данными выборки, соединяющими плоские области. Создание векторов x значения, значения функций в этих точках yи точки запроса xq. Вычисление интерполяций в точках запроса с помощью spline, pchip, и makima. Постройте график интерполированных значений функций в точках запроса для сравнения.
x = -3:3; y = [-1 -1 -1 0 1 1 1]; xq1 = -3:.01:3; p = pchip(x,y,xq1); s = spline(x,y,xq1); m = makima(x,y,xq1); plot(x,y,'o',xq1,p,'-',xq1,s,'-.',xq1,m,'--') legend('Sample Points','pchip','spline','makima','Location','SouthEast')

В этом случае pchip и makima имеют аналогичное поведение, так как они позволяют избежать переполнений и могут точно соединять плоские области.
Выполните второе сравнение с использованием функции колебательного образца.
x = 0:15; y = besselj(1,x); xq2 = 0:0.01:15; p = pchip(x,y,xq2); s = spline(x,y,xq2); m = makima(x,y,xq2); plot(x,y,'o',xq2,p,'-',xq2,s,'-.',xq2,m,'--') legend('Sample Points','pchip','spline','makima')

Когда основная функция является колебательной, spline и makima зафиксировать перемещение между точками лучше, чем pchip, которая агрессивно уплощена вблизи местных крайностей.
x - x-координатыx-координаты, заданные как вектор. Вектор x указывает точки, в которых данные y дается. Элементы x должен быть уникальным.
Типы данных: single | double
y - Значения функций в координатах xЗначения функций в координатах x, заданные как числовой вектор, матрица или массив. x и y обычно имеют одинаковую длину, но y также может иметь ровно на два элемента больше, чем x для задания концевых откосов.
Если y является матрицей или массивом, то значения в последнем измерении, y(:,...,:,j), принимаются в качестве значений, соответствующих x. В этом случае последнее измерение y должна быть той же длины, что и x или имеют ровно ещё два элемента.
Конечные уклоны кубического сплайна соответствуют следующим правилам:
Если x и y являются векторами одинакового размера, то используются условия не-а-узлового конца.
Если x или y является скаляром, затем он расширяется, чтобы иметь ту же длину, что и другой, и используются условия конца без узла.
Если y - вектор, содержащий на два значения больше, чем x имеет записи, то spline использует первое и последнее значения в y в качестве конечных откосов для кубического сплайна. Например, если y является вектором, то:
y(2:end-1) дает значения функций в каждой точке в x
y(1) дает наклон в начале интервала, расположенного в min(x)
y(end) дает наклон в конце интервала, расположенного в max(x)
Аналогично, если y является матрицей или N-мерный массив с size(y,N) равно length(x)+2, то:
y(:,...,:,j+1) дает значения функций в каждой точке в x для j = 1:length(x)
y(:,:,...:,1) дает откосы в начале интервалов, расположенных в min(x)
y(:,:,...:,end) дает откосы в конце интервалов, расположенных в max(x)
Типы данных: single | double
xq - Точки запросаТочки запроса, заданные как скаляр, вектор, матрица или массив. Точки, указанные в xq - координаты X для интерполированных значений функций yq вычислено по spline.
Типы данных: single | double
s - Интерполированные значения в точках запросаИнтерполированные значения в точках запроса, возвращаемые как скаляр, вектор, матрица или массив.
Размер s связано с размерами y и xq:
Если y является вектором, то s имеет тот же размер, что и xq.
Если y является массивом размера Ny = size(y), тогда применяются следующие условия:
Если xq является скаляром или вектором, то size(s) прибыль [Ny(1:end-1) length(xq)].
Если xq является массивом, то size(s) прибыль [Ny(1:end-1) size(xq)].
pp - Кусочный многочленКусочный многочлен, возвращенный как структура. Используйте эту структуру с ppval функция для вычисления кусочного многочлена в одной или нескольких точках запроса. Структура имеет эти поля.
| Область | Описание |
|---|---|
form |
|
breaks | Вектор длины |
coefs |
|
pieces | Количество штук, |
order | Порядок многочленов |
dim | Размерность цели |
Так как полиномиальные коэффициенты в coefs являются локальными коэффициентами для каждого интервала, необходимо вычесть нижнюю конечную точку соответствующего узлового интервала, чтобы использовать коэффициенты в обычном полиномиальном уравнении. Другими словами, для коэффициентов [a,b,c,d] на интервале [x1,x2], соответствующий многочлен
2 + c (x − x1) + d.
Можно также выполнить интерполяцию сплайна с помощью interp1 функция с командой interp1(x,y,xq,'spline'). В то время как spline выполняет интерполяцию по строкам входной матрицы, interp1 выполняет интерполяцию по столбцам входной матрицы.
Тридиагональная линейная система (возможно, с несколькими правыми сторонами) решается для информации, необходимой для описания коэффициентов различных кубических многочленов, составляющих интерполирующий сплайн. spline использует функции ppval, mkpp, и unmkpp. Эти подпрограммы образуют небольшой набор функций для работы с кусочными многочленами. Дополнительные сведения см. в разделе interp1 или функции «Фитинг кривой» Toolbox™ «Сплайн».
[1] де Бур, Карл. Практическое руководство по сплайнам. Спрингер-Верлаг, Нью-Йорк: 1978.
Примечания и ограничения по использованию:
Вход x должно строго увеличиваться.
Создание кода не удаляется y записи с NaN значения.
Создание кода не сообщает об ошибке для бесконечных конечных откосов в y.
При создании кода для pp = spline(x,y) синтаксис, то вы не можете ввести pp в ppval функция в MATLAB ®. Создание MATLABpp структура из pp структура, созданная генератором кода:
При создании кода используйте unmkpp для возврата кусочно-полиномиальных деталей в MATLAB.
В MATLAB используйте mkpp для создания pp структура.
Если вы поставляете xq, и если y имеет переменный размер и не является вектором переменной длины, тогда ориентация векторных выходов в сгенерированном коде может не соответствовать ориентации в MATLAB.
Примечания и ограничения по использованию:
Входной аргумент y не должен быть разреженным.
Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.