Материал: MATLAB. Довідник для користувача

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Графический интерфейс подгонки кривых

MATLAB дает возможность осуществлять аппроксимацию данных наблюдений при помощи специального графического Интерфейса Подгонки Кривых (ИПК) (в английском оригинале - Basic Fitting interface). Используя данный интерфейс, вы можете легко и быстро решить множество задач подгонки кривых, получая при этом самую разнообразную информацию о результатах вашей подгонки. ИПК предоставляет следующие возможности:

·Аппроксимирует данные используя сплайновый интерполянт, эрмитовый интерполянт, или же полиномиальный интерполянт до 10 порядка включительно.

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

·Строит графики невязок (ошибок подгонки).

·Анализирует численные результаты подгонки.

·Осуществляет интерполяцию или экстраполяцию данных подгонки.

·Аннотирует графики численными результатами подгонки и нормами ошибок аппроксимации.

·Запоминает результаты подгонки и вычислений в рабочет пространстве MATLAB-а. Основываясь на ваших конкретных задачах и приложениях, вы можете использовать ИПК, возможности, предоставляемыми командным окном, или же комбинировать эти две возможности. Отметим, что ИПК предназначен только для работы с одномерными и двумерными данными.

Рассмотрение основных свойств ИПК

Общий вид ИПК показан ниже.

61

Для его вызова в подобном виде, нужно выполнить следующие три шага:

1.Построить какой либо график данных.

2.Выбрать опцию Basic Fitting из меню Tools вашего графического окна.

3.Нажать дважды на кнопку More в нижней части ИПК. В результате откроется окно c тремя панелями (см. рисунок), а сама надпись заменится на Less.

Рассмотрим основные опции ИПК.

Select data (Выбор данных) – В данном окне расположен список всех переменных, построенных на активном графике, с которым связан ИПК (на графике может быть построено несколько кривых). Используйте данный список для выбора требуемого(текущего) набора данных. Под текущим подразумевается тот набор данных, для которого вы хотите осуществить подгонку. За один раз вы можете осуществлять действия только с одним набором данных. С другой стороны, вы можете произвести различные подгонки для текущего набора данных за счет изменения названия этих данных. С этой целью можно воспользоваться так называемым Редактором Графиков (Plot Editor), который будет рассмотрен в дальнейшем.

Center and scale X data (Центрирование и масштабирование данных X) – Если данная опция выбрана, то данные центрируются (нуль переносится в среднее значение данных) и масштабируются к единичному стандартному отклонению (делятся на исходное стандартное отклонение). Это может потребоваться для повышения точности последующих математических вычислений. Если подгонка приводит к результатам, которые могут быть неточными, соответствующее предупреждение выводится на экран.

Plot fits (Подгонка кривых) – Эта панель позволяет визуально просмотреть результаты одной или более подгонок текущего набора данных.

·Check to display fits on figure (Отметьте методы для вывода на график) – Выберите методы подгонок, которые вы хотели бы использовать ивывести на график. Здесь имеются две основные возможности– выбор интерполянтов и выбор полиномов. Сплайновый интерполянт использует для аппроксимации сплайны, тогда как эрмитовый интерполянт использует специальную функцию pchip (Piecewise Cubic Hermite Interpolating Polynomial - Кусочно-кубический Эрмитовый Интерполяционный Полином). Полиномиальная подгонка использует функциюpolyfit. Вы можете одновременно выбрать любые методы подгонки для аппроксимации ваших данных. Если ваш набор данных содержит N точек, вам следует использовать для аппроксимации полиномы с не более чемN коэффициентами. В противном случае, ИПК автоматически приравнивает избыточное число коэффициентов нулю, что приводит к недоопределенности системы. Укажем, что при этом на дисплей выдается соответствующее сообщение.

·Show equations (Показать уравнения) – При выборе данной опции, уравнение подгонки выводится на ваш график.

·Significant digits (Значащие разряды) – Выберите число значащих разрядов для вывода на дисплей.

·Plot residuals (Построить графики разностей (невязок)) – При выборе данной опции, на график выводятся разности подгонок. Под разностью подгонки понимается разность между исходными данными и результатами подгонки для каждого значения аргумента исходных данных. Вы можете построить графики невязок как столбчатую диаграмму (bar plot), как график рассеяния (scatter plot), или же как линейный график. Построения можно осуществлять как в том же графическом окне, так и в отдельном.

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

·Show norm of residuals (Показать норму разностей) – При выборе опции, на график выводятся также значения норм разностей. Норма разности является мерой качества

62

подгонки, где меньшее значение нормы соответствует лучшему качеству. Норма рассчитывается при помощи функции norm(V,2), где V есть вектор невязок.

Numerical results (Численные результаты) – Данная панель позволяет изучать численные характеристики каждой отдельной подгонки для текущего набора данных, без построения графиков.

·Fit (Метод подгонки) – Выберите метод подгонки. Соответствующие результаты будут представлены в окне под меню выбора метода. Заметим, что выбор метода в данной панели не оказывает воздействия на панель Plot fits. Поэтому, если вы хотите получить графическое представление, следует выбрать соответствующую опцию в пане-

ли Plot fits.

·Coefficients and norm of residuals (Коэффициенты и норма невязок) – В данном окне выводятся численные выражения для уравнения подгонки, выбранного в Fit. Отметим, что при первом открытии панелиNumerical Results , в рассматриваемом окне выдаются результаты последней подгонки, выбранной вами в панели Plot fits.

·Save to workspace (Запомнить в рабочем пространстве) – Вызывает диалоговое окно, которое позволяет запомнить в рабочем пространстве результаты вашей подгонки.

Find Y = f(X) – Данная панель дает возможность произвести интерполяцию или экстраполяцию текущей подгонки.

·Enter value(s) (Введите данные) – Введите любое выражение, совместимое с системой MATLAB для оценки вашей текущей подгонки в промежуточных или выходящих за пределы заданных аргументов точек. Выражение будет вычислено после нажатия кнопки Evaluate (Вычислить), а результаты в табличной форме будут выведены в соответствующее окно ниже. Метод текущей подгонки при этом указан в ме-

ню Fit.

·Save to workspace (Запомнить в рабочем пространстве) – Вызывает диалоговое окно, которое позволяет запомнить в рабочем пространстве результаты вашей интерполяции.

·Plot results (Построить графики) – При выборе данной опции, результаты интерполявыводятся в графической форме на график данных.

Уравнения в конечных разностях и фильтрация

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

Функция

y = filter(b, a, x)

обрабатывает данные в векторе x посредством фильтра, описываемого векторами a и b, выдавая фильтрованные данные y. Функция filter может рассматриваться как эффективная реализация уравнения в конечных разностях. Структура функции filter является обобщенной структурой фильтра, образованного при помощи линий задержки, который описывается приведенными ниже уравнениями в конечных разностях, где n есть индекс (номер) текущей выборки, na есть порядок полинома, описываемого вектором a , а nb есть порядок полино-

63

ма,описываемого вектором b. Выход y(n) является линейной комбинацией текущего и пре-

дыдущих входов, то есть x(n) x(n-1) ..., и предыдущих выходов y(n-1) y(n-2) ...

a(1) y(n) = b(1) x(n) + b(2) x(n-1) + … + b(nb) x(n-nb+1) – - a(2) y(n-1) - … - a(na) y(n-na+1)

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

y(n) = (1/4) x(n) + (1/4) x(n-1) + (1/4) x(n-2) + (1/4) x(n-3)

Соответствующие векторы равны:

a = 1; b = [1/4 1/4 1/4 1/4];

Воспользуемся данными матрицы count из раздела Анализ данных и статистика. Для нашего примера, обозначим первый столбец матрицы count через вектор x :

x = count(:, 1);

Усредненные за 4 часа данные могут быть легко вычислены при помощи приведенной выше функции y = filter(b, a, x). Сравним исходные и сглаженные данные, построив их на одном графике.

t = 1:length(x) ;

plot(t, x, '-.', t, y, '-'); grid on legend('Original Data','Smoothed Data',2)

Исходные данные наблюдения представлены здесь штрих-пунктирной линией, а сглаженные за 4 часа данные – сплошной линией.

64

Для различных практических приложений, в специальном пакете Signal Processing Toolbox предусмотрены многочисленные функции для анализа сигналов и проектирования дискретных фильтров.

Многомерные Массивы

Многомерные массивы в системеMATLAB являются распространением обычных двумерных матриц. Как известно, матрицы имеют две размерности – строки (row) и столбцы

(column).

Вы можете выделить любой элемент двумерной матрицы при помощи двух индексов, где первый является индексом (номером) строки, а второй – индексом столбца. Многомерные массивы имеют дополнительную индексацию. Например, трехмерные массивы имеют три индекса:

·Первый индекс указывает размерность 1 , то есть строки.

·Второй индекс указывает размерность 2. то есть столбцы.

· Третий индекс указывает на размерность3. В данном пособии используется концепция страницы (page) для представления размерности 3 и выше.

Для обращения, например, к элементу второй строки и третьего столбца на странице 2 нужно воспользоваться индексацией (2,3,2) (см. рисунок ниже).

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

65