8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 94 95 96 97 98 99 100 ... 365

приближаются ступенчатой функцией, а само приближение называется интерполяцией по соседним точкам. Линейная интерполяция основана на соединении соседних точек отрезками прямых — табличные данные приближаются ломаной линией (сплайн первого порядка дефекта единица). Для получения более гладкой функции следует применять интерполяцию кубическими сплайнами. Все эти способы реализованы в функции interpi, для использования которой следует задать координаты абсцисс промежуточных точек, в которых вычисляются значения интерполянта, и способ интерполирования:

□ nearest — приближение по соседним элементам;

□linear — линейная интерполяция (применяется по умолчанию, если способ интерполирования не задан);

□spline —интерполяция кубическими сплайнами;

□1 pchip — интерполяция кубическими эрмитовыми сплайнами.

При использовании pchip вторая производная сплайна может быть разрывна (в этом случае говорят, что сплайн имеет дефект два) в отличие от spline. Однако кубический эрмитовый сплайн сохраняет участки монотонности исходных данных.

Выходным аргументом interpi является вектор значений интерполянта в промежуточных точках. Текст файл-программы interpidem для сравнения различных способов интерполирования приведен в листинге 6.11.

; Листинг 6.11. Файл-программа interpidem

I........................................................................... ппмш.

% заполнение массивов для табличной функции

у. = [0.1 0.2 0.4 0.5 0.6 0.8 1.2];

у = [-3.5 -4.8 -2.1 0.2 0.9 2.3 3.7];

11 вывод графика табличной функции маркерами

plot(x, у, "ко")

% задание промежуточных точек для интерполирования xi = [x(l):0.01:x(length(x))b

% вычисление ступенчатой функции в промежуточных точках ynear = interpi(х, у, xi, nearest);

% вычисление кусочно-линейной функции в промежуточных точках yline = interpl(x, у, xi, linear); % можно не указывать linear I вычисление кубического сплайна в промежуточных точках ysplme = interpi (х, у, xi, spline); hold on


I построение графиков интерполянтов

plot(xi, ynear, к, xi, yline, k:, xi, yspline, k-.) title{"Различные спбсобы интерполяции функций) xlabel(Utx) ylabel(\ity)

legend(табличная функция", по соседним элементам (nearest), ... линейная (linear), кубические сплайны (spline),4)

Выполнение interpidem приводит к появлению графика, изображенного на рис. 6.5, который наглядно демонстрирует способы интерполяции. Добавьте самостоятельно график кубического эрмитова сплайна, указав pchip в качестве четвертого аргумента функции interpl.

Различные способы интерполяции функций

5-,--1-,-.--

э

2 1

D

•1 •2

э

-4

О табличная функция

-по соседним элементам (nearest)

......линейная (linear)

----кубические сплайны (spline)

D

0.2

0.4

0.6 0.В х

1

1.2

Рис. 6.5. Различные способы аппроксимации функций (interpl)

MATLAB позволяет интерполировать не только одномерные, но также двумерные и многомерные данные.

Интерполяция двумерных и многомерных данных

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


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

□nearest — интерполяция по соседним элементам;

□bilinear или linear1 — билинейная интерполяция (применяется по умолчанию, если способ интерполирования не задан);

□bicubic или cubic—интерполяция бикубическими сплайнами;

□* spline— интерполяция кубическими сплайнами.

Примечание

Для ускорения вычислений в случае равноотстоящих точек с монотонно изменяющимися координатами, соответствующих табличным данным, используются, соответственно, аргументы *nearest, *linear, *cubic или *spline\

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

I Листинг 6.12. Файл-программа interp2dem

% генерирование значений табличной функции [X, Y] = meshgrid.O:0.2:1);

Z = sin(3*pi*X).*sin(3*pi*Y).*ехр(-Х."2 - Y.~2); % визуализация табличной функции subplot [2, 2, 1] surf(X, Y, Z)

t i tle(табличная функция)

% создание сетки для промежуточных значений

[Xi, Yi] = meshgrid(0:0.02:1);

% интерполяция по соседним значениям

ZiHear = interp2(X, Y, Z, Xi, Yi, nearest);

% билинейная интерполяция (можно не указывать bilinear)

ZiBiLin = interp2(X, Y, Z, Xi, Yi, bilinear);

% бикубическая интерполяция

ZiBiCub = interp2(X, Y, Z, Xi, Yi, bicubic);



0 ... 94 95 96 97 98 99 100 ... 365