Разное

Spline matlab: Cubic spline data interpolation — MATLAB spline

Сплайны

Curve Fitting Toolbox и MATLAB Splines — MATLAB & Simulink

Сплайны Curve Fitting Toolbox

Функции сплайна Curve Fitting Toolbox™ содержат версии основные программы MATLAB ® пакета B-spline (расширенный для обработки также векторных -значных сплайнов), как описано в Практическое руководство по сплайнам, (Applied Math. наук Том. 27, Springer Verlag, Нью-Йорк (1978), xxiv + 392 стр.; пересмотренный издание (2001 г.), xviii+346p), далее именуемое ПГС . Набор инструментов упрощает создание и работу с кусочно-полиномиальными функциями.

Типичное использование, предусмотренное для этого набора инструментов, включает строительство и последующее использование кусочно-полиномиальной аппроксимации. Эта конструкция будет включать подгонку данных, но существует широкий спектр возможных данные, которые могут подойти. В простейшей ситуации дают баллы ( t i ,y i) и ищет кусочно-полиномиальная функция f , удовлетворяющая

ф ( т я) = y i, все i , более или менее. Ан точная подгонка будет включать интерполяцию , приблизительную подгонка может включать приближений по методу наименьших квадратов или сглаживающий сплайн . Но функция, которая будет аппроксимированный также может быть описан более неявно, например, как решение дифференциального или интегральное уравнение. В таком случае данные будут иметь вид ( Af )( t i), с А некоторый дифференциальный или интегральный оператор. С другой стороны, можно построить сплайн кривую , точное местоположение менее важно, чем его общая форма. Окончательно, во всем этом можно было бы искать функции более чем одного переменная, такая как сплайнов тензорного произведения .

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

Достаточно знать, что каждая функция created — это еще одна переменная, которую можно свободно использовать в качестве входных данных. (при необходимости) ко многим командам, включая все команды начиная с fn , что означает , функция . Иногда также может быть полезно знать, что внутри набора инструментов сплайны хранятся в разных формах, при этом доступна команда fn2fm для преобразования между формами.

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

Практическое руководство по сплайнам .

Но с годами функции сплайна Curve Fitting Toolbox вышли за рамки программ Практическое руководство по сплайнам . Набор инструментов теперь поддерживает форму «рассеянных переводов», или stform, чтобы справиться с конструкцией и использованием двумерных тонколистовых сплайны, а также два способа представления рациональных сплайнов, rBform и rpform для обработки NURBS.

Сплайны могут быть очень эффективными для подбора данных, поскольку линейные системы, которые нужно решить для этого, полосовые, поэтому работа, необходимая для их решение, сделанное правильно, растет только линейно с числом точек данных. В частности, средства разреженных матриц MATLAB используются в функциях сплайна Curve Fitting Toolbox, когда это более эффективен, чем собственный решатель уравнений из набора инструментов,

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

Все полиномиальные Команды построения сплайнов позволяют создавать двумерные (или даже многомерные) кусочно-полиномиальные функции как тензорные произведения используемых здесь одномерных функций и различных команд fn. .. также работают для этих многомерных функций.

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

Сплайны

Рассмотрим множество

S:=Πξ,kµ

всех (скалярнозначных) кусочно-многочленов порядка

k с перерывы ξ 1  < ... <  ξ л  + 1 что, для i  = 2… l , может иметь скачок через ξ i в его μ i -я производная, но без скачка там в любой производной меньшего порядка. Это множество является линейным пространством в том смысле, что любое скалярное кратное функции в S снова в S , как сумма любых двух функции в S .

Соответственно, S содержит базис (фактически бесконечно много оснований), то есть последовательность ф 1 ,…, ф н так что каждый f в S может быть записан однозначно

в виде

f(x)=∑j=1nfj(x)aj,

для подходящих коэффициентов a j . Номер n здесь есть измерение линейного пространства S . коэффициенты a j часто называют координаты из f относительно этого основа.

В частности, согласно теореме Карри-Шенберга, наше пространство S имеет базис состоящая из B-сплайнов, а именно последовательность всех B-сплайнов вида B(·|tj,…,tj+k), j  = 1… n , причем последовательность узлов t , полученная из последовательности разрывов ξ и последовательность µ следующими условия:

  • Имеют оба ξ 1 и ξ л  + 1 встречаются в

    t ровно k раз

  • Для каждого i  = 2: l , имеем ξ i встречаются в т точно к  –  мк i раз

  • Убедитесь, что последовательность неубывающая и содержит только элементы из ξ

Обратите внимание на соответствие между кратностью узла и гладкостью сплайн через этот узел. В частности, на простом узле, то есть на узле, который появляется ровно один раз в узле последовательности, только ( k  – 1)-я производная может быть прерывистый.

Сплайны MATLAB

Среда технических вычислений MATLAB обеспечивает аппроксимацию сплайнов с помощью команда

сплайн . Если вызывать в виде cs= сплайн (x,y) , это возвращает форму кубического сплайна с последовательностью разрывов x , которая принимает значение y(i) при x(i) , все i и удовлетворяет условию отсутствия узла. В других слова, команда cs = spline(x,y) дает то же самое результат как команда cs = csapi (x,y) доступный в функциях сплайна Curve Fitting Toolbox. Но только последний также работает, когда x , y описывают многомерные данные с координатной сеткой. В MATLAB, интерполяция кубическим сплайном для многомерных данных с координатной сеткой. командой
interpn
(x1,...,xd,v,y1,...,yd,'spline') который возвращает значения кубического сплайна интерполяционного тензорного произведения на сетке указано y1 ,…, yd .

Кроме того, любая из команд Curve Fitting Toolbox spline fn... может быть применена к выходным данным MATLAB spline(x,y) команда, с простыми версиями сплайновых команд Curve Fitting Toolbox fnval , ppmak , fnbrk доступны непосредственно в MATLAB, как команды ppval , mkpp , unmkpp соответственно.

Ожидаемый фон

Сплайн-функции Curve Fitting Toolbox начинались как расширение среды MATLAB, представляющее интерес для специалистов по аппроксимации сплайнов, чтобы помочь их в построении и апробации новых методов сплайновой аппроксимации. Такой человек усвоят материал за

Практическое руководство по Сплайны .

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

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

Поддержка типа векторных данных

Сплайн-функции Curve Fitting Toolbox могут обрабатывать векторов с значениями сплайны, т. е. сплайны, значения которых лежат в R d . Поскольку MATLAB начинался только с одного типа переменных, матрица, даже сейчас есть некоторая неуверенность в том, как поступить с векторы, т. е. списки чисел. MATLAB иногда хранит такие список в матрице только с одной строкой, а в других случаях в матрице всего с одной колонкой. В первом случае такое 1-строчная матрица вызывается вектор-строка; во втором случае такая матрица с одним столбцом называется вектором-столбцом. Или Кстати, это просто разные способы для хранения векторов, не разные видов векторов.

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

Точка в R d , т. е. d-вектор, всегда сохраняется как вектор-столбец. В частности, если вы хотите поставить н -список of d -векторы одной из команд, вас ожидают предоставить этот список как n столбцов матрицы размера [d,n] .

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

Соглашения об именах функций сплайна

Большинство команд сплайна в этом наборе инструментов имеют имена, следуйте одному из следующих шаблонов:

cs... команды строят кубические сплайны (в ppform)

sp... команды создают сплайны в B-форме

fn... команды работают со сплайн-функциями

..2... команды преобразуют что-либо

0..4api команды построить аппроксимацию по интерполяции

..aps команды строят аппроксимацию путем сглаживания

. .ap2 команд построить метод наименьших квадратов приближение

...knt команды построить (часть) определенного последовательность узлов

...dem команды являются примерами.

Аргументы для функций сплайна Curve Fitting Toolbox

Для простоты использования большинство функций сплайна Curve Fitting Toolbox имеют аргументы по умолчанию. В справочной записи в разделе «Синтаксис» мы обычно сначала перечислите функцию со всеми необходимыми входными данными аргументы, а затем со всеми возможными входными аргументами. Когда имеется более одного необязательного аргумента, то иногда, но не всегда, их точный порядок не имеет значения. Когда их порядок важно, вы должны указать каждый необязательный аргумент, предшествующий интересующие вас. В этом случае вы можете указать значение по умолчанию для необязательного аргумента с использованием [] ( пустая матрица) в качестве входных данных для него. Описание в ссылке страница сообщает вам значение по умолчанию для каждого необязательного входного аргумента.

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

Благодарности

MathWorks ® выражает благодарность за вклад Carl de Boor к сплайну Curve Fitting Toolbox функции. Профессор де Бур создал Spline Toolbox™ из его первый выпуск до версии 3.3.4 (2008 г.).

Профессор де Бур получил премию Джона фон Неймана в 1996 г. и Национальная медаль науки в 2003 году. Он является членом обеих Американская академия искусств и наук и Национальная академия наук. Он является автором Практического руководства по сплайнам (Springer, 2001).

Некоторые соглашения об именах функций сплайна являются результатом дискуссии с Йоргом Петерсом, в то время аспирантом Информатики в Университете Висконсин-Мэдисон.

Вы щелкнули ссылку, соответствующую этой команде MATLAB:

Запустите команду, введя ее в командном окне MATLAB. Веб-браузеры не поддерживают команды MATLAB.

Выберите веб-сайт

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

Вы также можете выбрать веб-сайт из следующего списка:

Европа

Обратитесь в местный офис

scipy.interpolate.interp1d — SciPy v1.10.1 Manual

class scipy.interpolate.interp1d( x , y , kind='linear' , axis=-1 , copy=True , 7_9007 bounds_0error=None значение=нан , accept_sorted = False ) [источник]

Интерполировать одномерную функцию.

x и y — это массивы значений, используемые для аппроксимации некоторой функции f: у = f(x) . Этот класс возвращает функцию, метод вызова которой использует интерполяция, чтобы найти значение новых точек.

Параметры:
x (N,) array_like

Одномерный массив действительных значений.

y (…,N,…) array_like

N-D массив действительных значений. Длина y по интерполяции длина оси должна быть равна x .

вид str или int, необязательный

Указывает тип интерполяции в виде строки или целого числа указание порядка использования интерполятора сплайна. Строка должна быть одной из «линейных», «ближайших», «ближайших вверх», «нулевых» и т. д. «линейный», «квадратичный», «кубический», «предыдущий» или «следующий». 'нуль', «линейный», «квадратичный» и «кубический» относятся к сплайн-интерполяции нулевой, первый, второй или третий порядок; «предыдущий» и «следующий» просто вернуть предыдущее или следующее значение точки; «ближайший» и «ближайшие» отличаются при интерполяции полуцелых чисел (например, 0,5, 1,5) в том, что «ближайшее» округляется вверх, а «ближайшее» округляется вниз. По умолчанию является «линейным».

ось целое число, опционально

Определяет ось y , вдоль которой выполняется интерполяция. Интерполяция по умолчанию на последнюю ось y .

копия bool, необязательный

Если True, класс создает внутренние копии x и y. Если False, используются ссылки на x и y . По умолчанию копируется.

bounds_error bool, необязательный

Если True, при каждой попытке интерполяции возникает ошибка ValueError. значение вне диапазона x (где экстраполяция необходимый). Если False, значения за пределами присваиваются значение_заполнения . По умолчанию возникает ошибка, если только fill_value="extrapolate" .

fill_value массив-подобный или (массив-подобный, array_like) или «экстраполировать», необязательный запрошенные точки вне диапазона данных. Если не предусмотрено, то по умолчанию NaN. Подобное массиву должно правильно транслироваться на размеры неинтерполяционных осей.

  • Если кортеж состоит из двух элементов, то первый элемент используется как значение заполнения для x_new < x[0] , а второй элемент используется для x_new > x[-1] . Все, что не является двухэлементным кортежем (например, list или ndarray, независимо от формы) считается одним массивоподобный аргумент, предназначенный для использования для обеих границ как внизу, вверху = значение_заполнения, значение_заполнения . Использование двухэлементного кортежа или ndarray требует bounds_error=False .

    Новое в версии 0.17.0.

  • Если «экстраполировать», то точки вне диапазона данных будут экстраполированный.

    Новое в версии 0.17.0.

  • accept_sorted bool, необязательный

    Если False, значения x могут быть в любом порядке и сортируются первыми. Если True, x должны быть массивом монотонно возрастающих значений.

    См. также

    сплреп , сплев

    Сплайн-интерполяция/сглаживание на основе FITPACK.

    UnivariateSpline

    Объектно-ориентированная оболочка подпрограмм FITPACK.

    interp2d

    Двумерная интерполяция

    Примечания

    Вызов interp1d с NaN, присутствующими во входных значениях, приводит к неопределенное поведение.

    Входные значения x и y должны быть преобразованы в плавающие значения, такие как int или float .

    Если значения в x не уникальны, результирующее поведение неопределенный и специфичный для выбора вида , т. е. изменение вид изменит поведение дубликатов.

    Примеры

     >>> импортировать numpy как np
    >>> импортировать matplotlib.pyplot как plt
    >>> из импорта scipy интерполировать
    >>> х = np.arange (0, 10)
    >>> y = np.exp(-x/3.0)
    >>> f = интерполировать.interp1d(x, y)
     
     >>> xnew = np.arange(0, 9, 0.1)
    >>> ynew = f(xnew) # использовать функцию интерполяции, возвращаемую `interp1d`
    >>> plt.plot(x, y, 'o', xnew, ynew, '-')
    >>> plt.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *