Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
09 семестр / Разное / Homework / Домашнее задание.doc
Источник:
Скачиваний:
117
Добавлен:
04.03.2014
Размер:
10.56 Mб
Скачать

3.2 Постановка задачи

Известны вектора признаков слов-эталонов и вектор признаков распознаваемого слова. Необходимо определить, к какому из слов-эталонов распознаваемое слово наиболее близко. Для решения этой задачи используется аппарат нечеткой логики, реализованный в Fuzzy Logic Toolbox системы Matlab.

3.3 Построение нечетко-логической модели

Нечетко-логическая модель в Fuzzy Logic Toolbox представляет из себя множество входных переменных, которые соответствуют компонентам вектора признаков распознаваемого слова, множество выходных переменных, которые соответствуют словам-эталонам, и множество правил, согласно которым определяется принадлежность распознаваемого слова к одному из эталонных классов. Рассмотрим этапы построения нечетко-логической модели в Matlab.

  1. Инициализация структуры, соответствующей нечетко-логической модели, производится функцией newfis. Синтаксис функции следующий:

FIS = newfis(FISNAME);

где FIS – имя переменной, FISNAME – название модели.

  1. Создание входных и выходных переменных. Функция addvar. Синтаксис функции:

fuzzyStruct = addvar(fuzzyStruct, varType, varName, varBounds);

здесь fuzzyStruct – структура, соответствующая нечетко-логической модели, varType – тип переменной (‘input’ – входная, ‘output’ – выходная), varName – имя переменной, varBounds – вектор, описывающий область определения переменной.

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

  1. Определение функций принадлежности. Функция addmf. Синтаксис функции:

fuzzyStruct = addmf(fuzzyStruct, varType, varIndex, mfName, mfType, mfParams);

где fuzzyStruct – структура, соответствующая нечетко-логической модели, varType –тип переменной, к которой будет добавлена функция принадлежности (‘input’ – входная, ‘output’ – выходная), varIndex – индекс переменной, к которой будет добавлена функция принадлежности, mfName – имя функции принадлежности, mfType – тип функции принадлежности, mfParams – вектор, который определяет значения функции принадлежности в ключевых точках.

Функции принадлежности входных переменных соответствуют соответствующим компонентам векторов признаков слов-эталонов и являются функциями треугольного типа (mfType = 'trimf'). Но возможно, что это не оптимальный выбор с точки зрения точности распознания.

  1. Определение правил. Функция addrule. Синтаксис функции:

fuzzyStruct = addrule(fuzzyStruct, ruleList);

где fuzzyStruct – структура, соответствующая нечетко-логической модели, ruleList – матрица правил.

Матрица правил имеет размерность n x (m + n + 2), где n – число выходных переменных, m – число входных переменных. Матрица имеет следующий вид:

1 1 … 1 1 0 0 … 0 1 1

2 2 … 2 0 1 0 … 0 1 1

… … …

n n … n 0 0 0 … 1 1 1

Строка i является правилом, выявляющим i-ое слово-эталон.

Подробнее о синтаксисе и работе каждой функции можно узнать из справочной системы Matlab.

3.4 Распознавание слова

Для распознавания слова по заданному вектору признаков необходимо воспользоваться FIS Editor (команда Matlab – fuzzy). С помощью него можно просмотреть созданную нечетко-логическую модель (команда File -> Import -> From Workspace… имя структуры, соответствующей нечетко-логической модели - в программе она названа MODEL) и ее работу (команда View->Rules). Заглавные буквы в слове MODEL – принципиальны!

Соседние файлы в папке Homework