Рефераты. Система математических расчетов MATLAB

[b2, a2] = residue(r, p, k)

                                              

                                                           b2 =

-4      8

                                                           a2 =

1   6   8


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

В случае кратных корней процедура несколько усложняется, но остается разрешимой.



 

 

Интерполяция

 

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



Обзор функций интерполяции

Функции

Описание

 griddata

Двумерная интерполяция на неравномерной сетке.

 griddata3

Трехмерная интерполяция на неравномерной сетке.

 griddatan

Многомерная интерполяция (n >= 3).

 interp1

Одномерная табличная интерполяция.

 interp2

Двухмерная табличная интерполяция.

 interp3

Трехмерная табличная интерполяция.

 interpft

Одномерная интерполяция с использованием быстрого преобразования Фурье.

 interpn

Многомерная табличная интерполяция.

 pchip

Кубическая интерполяция при помощи полинома Эрмита.

 spline

Интерполяция кубическим сплайном.

 

 

 

Одномерная интерполяция

 

Двумя основными типами одномерной интерполяции в MATLAB-е являются полиномиаль-ная интерполяция и интерполяция на основе быстрого преобразования Фурье.


1. Полиномиальная интерполяция

Функция interp1 осуществляет одномерную интерполяцию – важную операцию в области анализа данных и аппроксимации кривых. Эта функция использует полиномиальные методы, аппроксимируя имеющийся массив данных полиномиальными функциями и вычисляя соот-ветствующие функции на заданных (желаемых) точках. В наиболее общей форме эта функ-ция имеет вид

yi = interp1(x, y, xi, method)

где y есть вектор, содержащий значения функции; x – вектор такой же длины, содержащий те точки (значения аргумента), в которых заданы значения y;  вектор xi содержит те точки, в ко-торых мы хотим найти значения вектора y путем интерполяции;  method – дополнительная строка, задающая метод интерполяции. Имеются следующие возможности для выбора мето-да:

 • Ступенчатая интерполяция (method = 'nearest'). Этот метод приравнивает значение функ-ции в интерполируемой точке к ее значению в ближайшей существующей точке имеющихся данных.

 • Линейная интерполяция (method = 'linear'). Этот метод аппроксимирует функцию между любыми двумя существующими соседними значениями как линейную функцию, и возвр-ащает соответствующее значение для точки в xi (метод используется по умолчанию).

 • Интерполяция кубическими сплайнами (method = 'spline'). Этот метод аппроксимирует ин-терполируемую функцию между любыми двумя соседними значениями при помощи куби-ческих функций, и использует сплайны для осуществления интерполяции.

 • Кубическая интерполяция (method = 'pchip'  или  'cubic'). Эти методы идентичны. Они ис-пользуют  кусочную кубическую Эрмитову аппроксимацию и сохраняют монотонность и  форму данных.

Если какой-либо из элементов вектора xi находится вне интервала, заданного вектором x, то выбранный метод интерполяции используется также и для экстраполяции. Как альтернатива,

функция yi = interp1(x, y, xi, method, extrapval) заменяет экстраполированные значения теми, которые заданы вектором extrapval. Для последнего часто используется нечисловое значение NaN.

Все методы работают на неравномерной сетке значений вектора x .

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

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

 • Линейная интерполяция использует больше памяти чем ступенчатая и требует несколько большего времени исполнения. В отличие от ступенчатой аппроксимации, результирующая функция является непрерывной, но ее наклон меняется в значениях исходной сетки (исход-ных данных).

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

 • Кубическая интерполяция требует большей памяти и времени исполнения чем ступенчатая или линейная. Однако в данном случае как интерполируемые данные, так и их производные являются непрерывными.

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

2. Интерполяция на основе быстрого преобразования Фурье _

 

Функция interpft осуществляет одномерную интерполяцию с использованием быстрого пре-образование Фурье (FFT). Этот метод вычисляет преобразование Фурье от вектора, который содержит значения периодической функции. Затем вычисляется обратное преобразование Фурье с использованием большего числа точек. Функция записывается в форме


y = interpft(x, n)


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



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

 

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


ZI = interp2(X, Y, Z, XI, YI, method)

 

где Z есть прямоугольный массив, содержащий значения двумерной функции; X и Y являют-ся массивами одинаковых размеров, содержащие точки в которых заданы значения двумер-ной функции; XI  и YI есть матрицы, содержащие точки интерполяции (то есть промежуточ-ные точки, в которых нужно вычислить значения функции); method – строка, определяющая метод интерполяции. В случае двумерной интерполяции возможны три различных метода:

 • Ступенчатая интерполяция (method = 'nearest'). Этот метод дает кусочно-постоянную  поверхность на области значений. Значение функции в интерполируемой точке равно значе-нию функции в ближайшей заданной точке.

 • Билинейная интерполяция (method = 'linear'). Метод обеспечивает аппроксимацию данных при помощи билинейной поверхности (плоскости) на множестве заданных значений двумер-ной функции. Значение в точке интерполяции является комбинацией значений четырех бли-жайших точек. Данный метод можно считать «кусочно-билинейным»; он быстрее и требует меньше памяти, чем бикубическая интерполяция.

 • Бикубическая интерполяция (method = 'cubic'). Данный метод аппроксимирует поверх-ность при помощи  бикубических поверхностей. Значение в точке интерполяции является комбинацией значений в шестнадцати ближайших точках. Метод обеспечивает значительно более гладкую поверхность по сравнению с билинейной интерполяцией. Это может быть ключевым преимуществом в приложениях типа обработки изображений. Особенно эффек-тивным данный метод является в ситуациях, когда требуется непрерывность как интерполи-руемых данных, так и их производных.

Все эти методы требуют, чтобы X и Y были монотонными, то есть или всегда возрастающи-ми или всегда убывающими от точки к точке. Эти матрицы следует сформировать с исполь-зованием функции meshgrid, или же, в противном случае, нужно убедиться, что «схема» то-чек имитирует сетку, полученную функцией meshgrid. Перед интерполяцией, каждый из указанных методов автоматически отображает входные данные в равномерно распреде-ленную сетку.  Если  X и Y уже распределены равномерно, вы можете ускорить вычисления добавляя звездочку к строке метода, например, '*cubic'.



Сравнение методов интерполяции

Приведенный ниже пример сравнивает методы двумерной интерполяции в случае матрицы данных размера 7х7.

  1. Сформируем функцию peaks на «грубой» сетке (с единичным шагом).

[x, y] = meshgrid(-3 : 1 : 3);

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.