1 – список сглаживаемых кривых. В этом списке могут быть как зашумленные кривые, так и сглаженные зашумлённые кривые
2 – список методов сглаживания. В данной программе реализовано 5 методов сглаживания.
3 – кнопка позволяющая произвести сглаживание выбранной в списке 1 кривой по методу выбранному в списке 2 с параметрами в пол(е/ях) 4 и/или 5
4,5 – поля для ввода параметров методов сглаживания
6 – список сглаженных кривых
7 – кнопка, открывающая форму в которой проводится анализ точности сглаживания
8 – кнопка, позволяющая добавить к списку сглаживаемых кривых (1) сглаженную кривую из списка 6
9 – удаление выбранной в списке 6 сглаженной кривой
10 – область отображения графика сглаженной кривой, выбранной в списке 6
11 – область отображения графика сглаживаемой кривой, выбранной в списке 1
5.6. Оценка точности сглаживания
Для оценки точности сглаживания производится расчет функции ошибки, представляющей из себя массив точек, полученный в результате вычитания из сглаженной характеристики исходной переходной характеристики.
Оценка точности сглаживания проводится по значениям двух параметров:
максимальная абсолютная ошибка (максимальное значение функции ошибки).
среднеквадратическое отклонение (СКО) значений функции ошибки
Процесс нахождения функции ошибки очень похож на процесс наложения шума на переходную характеристику, с той лишь разницей, что мы производим не сложение двух кривых, а их вычитание, поэтому Simulink модель для этой операции выглядит примерно так же.
Для нахождения значения максимальной абсолютной ошибки используются две функции – max(abs(массив_значений)).
Функция max() находит максимальное значения из массива, а функция abs() вычисляет абсолютные значения из массива, возвращая изменённый массив.
При нажатии на кнопку Ошибки в форме из предыдущего раздела, происходит группировка кривых из массива структур sessions.flat.curves по названию, в пределах названия – по названию метода, в пределах названия метода – по настроечным параметрам. Затем происходит заполнение списков соответствующими данными. В результате полученная форма имеет вид:
1 – список с названием кривых, точность которых определяется
2 – список настроечных параметров методов сглаживания
3 – поле, в котором отображается значение СКО для выбранного метода с параметрами из списка 2
4 – область отображения графика ошибки
5 – поле, в котором отображается значение максимальной абсолютной ошибки для метода с параметрами из списка 2
6 – кнопка поиска наилучшего результата сглаживания для кривой выбранной в списке 1
7 – список методов, с помощью которых была сглажена выбранная кривая из списка 1
6. Приложение
6.1. Описание методов сглаживания Curve Fitting Toolbox
Если данные сильно зашумлены, то имеет смысл произвести их сглаживание. Для сглаживания в MATLAB используется специальный пакет Curve Fitting Toolbox. Сглаживание производится по нескольким, расположенным подряд данным, причем их число обычно подбирается экспериментально.
В Curve Fitting Toolbox реализовано три способа сглаживания:
1. скользящее среднее (Moving average filtering)
2. взвешенная локальная регрессия;
3. фильтр Савицкого-Голея.
Метод скользящего среднего
В методе скользящего среднего исходные данные yi сглаживаются по следующему правилу
где 2N + 1 - число точек, выбираемых для сглаживания, т.е. слева и справа от текущей точки выбирается по N точек (ясно, число точек, участвующих в сглаживании, должно быть нечетным). Данные, расположенные в точках, близких к границам отрезка, не сглаживаются, т.к. не хватает точек справа или слева от текущей, в которой в данный момент производится сглаживание. Ниже на рисунках приведены исходные зашумленные данные
x=0:0.002:5;
y=x.*sin(3*x)+2*randn(size(x));
сглаженные с N = 33 точками и сглаженные с N = 191 точкой. Красная линия соответствует незашумленным данным
Левый график - зашумленные данные (синим) и незашумленные (красным)
Средний график - сглаженные с N = 33 (зеленым) и незашумленные (красным)
Правый график - сглаженные с N = 191 (зеленым) и незашумленные (красным)
Взвешенная локальная регрессия (lowess и loess)
При сглаживании при помощи взвешенной локальной регрессии для каждого сглаживаемого значения данных , заданного в точке , выбирается набор из фиксированного числа рядом расположенных точек, каждой из которых назначается вес по следующей формуле
где d(xk) - расстояние от xk до наиболее удаленной точки из набора. Т.е. наибольший вес (равный единице) будет у yk, а наименьший (равный нулю) у данных, расположенных на границах набора. Распределение весов для некоторой точки внутри интервала, где заданы данные, и на краях, показано на следующем графике:
Значения весов для взвешенной локальной регрессии (красными маркерами обозначены точки ), в которых заданы данные
После выбора весов сглаженное значение находится при помощи локальной взвешенной регрессии с определенными выше весами , причем в зависимости от выбора пользователя в раскрывающемся списке Method на вкладке Smooth окна Data делается различная регрессия
для Lowess - линейная регрессия;
для Loess - квадратичная регрессия.
Кроме опций Lowess и Loess в раскрывающемся списке Method на вкладке Smoothing в окне Data есть еще Robust Lowess и Robust Loess. Эти способы менее чувствительны по отношению к выбросам, поскольку выбор весов осуществляется за несколько итераций, на каждой из которых более удаленным от регрессионной кривой (найденной на предыдущей итерации) точкам назначаются меньшие веса, а если точка сильно удалена, то она вовсе исключается при выполнении локальной линейной или квадратичной регрессии на следующей итерации.
На приведенных ниже графиках представлен результат сглаживания данных с использованием 10% от всех точек и 20% от всех точек.
x=0:0.002:5;
y=x.*sin(3*x)+2*randn(size(x));
Красная линия соответствует незашумленным данным
Левый график - зашумленные данные (синим) и незашумленные (красным)
Средний график - сглаженные с 10% от всех точек (черным) и незашумленные (красным)
Правый график - сглаженные с 20% от всех точек(зеленым) и незашумленные (красным)
Фильтр Савицкого-Голея
В фильтре Савицкого-Голея степень полинома, применяемого для локальной регрессии, может быть выше, чем в предыдущем способе сглаживания, при этом выполняется невзвешенная локальная регрессия. Число соседних данных (задаваемое в строке ввода Span) для сглаживания в точке должно быть нечетное, а степень полинома (задаваемая в строке ввода Degree) меньше, чем число соседних данных.
Этот способ фильтрации хорошо подходит для зашумленных сигналов, в которых при сглаживании требуется сохранить высокие частоты. При повышении степени полинома, применяемого в локальной регрессии, лучше воспроизводятся узкие и высокие пики.
6.2.Основы создания приложений в среде GUIDE.
6.2.1. Введение.
GUIDE является встроенным средством MATLAB для разработки программ с графическим интерфейсом, позволяющим использовать функции его вычислительного ядра. Созданные с помощью данного средства программы внешне не отличаются от программ написанных на других высокоуровневых языках программирования. В GUIDE присутствуют наиболее часто встречающиеся графические компоненты (текстовые поля, кнопки, метки, списки и т.д.). Как и в других высокоуровневых языках, все компоненты имеют свои обработчики событий (щелчок по кнопке, выбор элемента списка и т.д.) которые можно описать программно. Все возможности программирования MATLAB (циклы, логические выражения, переменные), а так же взаимодействие с Simulink и встроенными компонентами (CurveFitting и др.) так же используются и в GUIDE.
Программы, написанные с помощью средства GUIDE, не требуют от пользователя ни каких знаний MATLAB. Единственным недостатком является то, что такую программу невозможно будет запустить без MATLAB и GUIDE, так как GUIDE компилирует программу ”на лету” т.е. каждый графический компонент создаётся каждый раз заново при его открытии, а вычислительные функции MATLAB описанные в обработчиках событий этих компонентов обращаются к вычислительному ядру. Другими словами программу нельзя скомпилировать и использовать отдельно.
6.2.2. Создание графических компонентов.
6.2.2.1. Вызов среды визуального программирования GUIDE.
Запустить GUIDE можно 3-я способами:
1) Через главное меню
2) Через ”Панель быстрого запуска” (Только в версиях 7.XX)
3) Вызвать guide из командной строки MATLAB.
6.2.2.2. Создание пустой заготовки окна приложения.
В появившемся диалоговом окне GUIDE Quick Start на вкладке Create New GUI выбрать в списке GUIDE Templates пункт Blank GUI (Defaults) (он должен быть выбран по умолчанию) и нажать кнопку OK. На экране отображается основное окно среды визуального программирования GUIDE MATLAB.
6.2.2.3. Добавление элементов интерфейса на заготовку окна приложения.
В окне среды визуального программирования GUIDE (см. рисунок ниже) слева есть вертикальная панель инструментов, на которой расположены инструменты для нанесения на форму (заготовку окна приложения) различных элементов интерфейса. Сама заготовка окна приложения находится справа (она снабжена сеткой).
Размещенные на форме элементы интерфейса можно передвигать при помощи мыши (или при помощи клавиш со стрелками, предварительно выделив элемент интерфейса щелчком мыши), а также изменять их размеры, протаскивая мышью за квадратные маркеры в углах. Размер заготовки окна приложения так же можно менять, перетаскивая мышью квадратный маркер в нижнем правом углу заготовки.
6.2.2.4. Задание значений свойствам элементов интерфейса
После нанесения на заготовку окна приложения необходимых элементов интерфейса следует установить некоторым их свойствам нужные значения. Задание значений производится в инспекторе свойств, окно которого Property Inspector открывается двойным щелчком мыши по элементу интерфейса на форме (см. рис1). В окне инспектора свойств размещена таблица, левый столбик которой содержит названия свойств выбранного элемента интерфейса, а рядом в правом столбике таблицы устанавливается нужное значение свойствам (вводом или выбором возможных значений из раскрывающегося списка).
рис1.
6.2.2.5. Сохранение приложения с графическим интерфейсом пользователя
Для сохранения нашего приложения достаточно нажать кнопку Save на горизонтальной панели инструментов под строкой меню среды GUIDE и в появившемся диалоговом окне сохранения файла задать имя.
По умолчанию созданное в среде визуального программирования GUIDE приложение с графическим интерфейсом пользователя хранится в двух файлах:
файл с расширением fig (окно приложения вместе с размещенными на нем элементами интерфейса) и
файл с расширением m (основная функция, выводящая окно приложения на экран, вместе с подфункциями обработки различных событий элементов интерфейса), этот файл создается автоматически после сохранения приложения.
Если файл с расширением m не создался, то надо в меню Tools среды GUIDE выбрать пункт GUI Options… и установить флаги и переключатели в появившемся диалоговом окне GUI Options так, как показано на рисунке ниже.
6.2.3. Программирование графических компонентов
6.2.3.1. Программирование событий.
С любым графическим элементом могут происходить какие-либо события (щелчок левой кнопкой, создание, удаление). Для них можно задать соответствующую ”реакцию”, т.е. описать программно действия, которые необходимо выполнить при наступлении этих событий. Для этого необходимо щелкнуть правой кнопкой про интересующему элементу, выбрать из контекстного меню View Callbaks, после чего выбрать интересующее событие. Например, для кнопки реакцией на событие нажатия будет вызов метода Callback.
После выбора нужного события будет автоматически сгенерирован код с пустым обработчиком
Как видно обработчиком является функция с входными аргументами:
hObject – ссылка на текущий графический элемент
eventdata – зарезервированая для будущих версий переменная
handles – список всех ссылок текущего графического окна
handles в частности используется для того, что бы получать или изменять атрибуты других графических элементов (об изменении атрибутов будет рассказано ниже).
6.2.3.2. Доступ к значениям свойств графических объектов
Для задания значений свойствам графических объектов служит функция set, которая в качестве входных аргементов принимает указатель на объект, чьи свойства необходимо изменить, и пары 'НазваниеСвойства' - значение:
set(h, 'НазваниеСвойства', значение)
или от нескольких пар для установки значений ряду свойств:
set(h, 'НазваниеСвойства1', значение1, 'НазваниеСвойства2', значение2, :)
Для чтения свойств какого-либо объекта служит функция get, которая в качестве входных аргументов принимает указатель на объект, чьи свойства необходимо получить и названия данного свойства.
get(h, 'НазваниеСвойства’)
6.2.4. Заключение.
Средство GUIDE является очень полезным инструментом MATLAB, с помощью которого можно создавать профессиональные приложения. В этом разделе описаны лишь основы работы с ним, позволяющие получить общее представление. GUIDE позволяет работать с файловой системой Windows, выполнять различные системные вызовы (запуск других приложений и т.д.).
Более подробную информацию можно найти на http://matlab.exponenta.ru/gui/index.php
|