Описание функций MatLab

DEFUZZ
Дефаззификация нечеткого множества

Синтаксис:

crisp = defuzz (x, mf, method)

Описание:

Выполняет операцию дефаззификации, т. е. преобразование нечеткого множества в четкое число. Функция defuzz имеет три входных аргумента:

1. x – универсальное множество, на котором задано нечеткое множество, подлежащее дефаззификации;

2. mf – вектор степеней принадлежности элементов множества x нечеткому множеству, подлежащему дефаззификации;

3. method – метод дефаззификации. Допустимые значения:

‘centroid’ – центр тяжести;
‘bisector’ – медиана;
‘mom’ – центр максимумов;
‘som’ - наименьший из максимумов;
‘lom’ - наибольший из максимумов.

Более подробно методы дефаззфикации описаны в разделе 1. Если метод дефаззификации отличается от вышеуказанных, тогда он должен быть представлен в виде m-функции. В этом случае значения аргументов x и mf будут переданы этой функции для выполнения дефаззификации.

Пример.

Проводится дефаззификация нечеткого множества с трапециевидной функцией принадлежности с параметрами [0, 2, 4, 10]);, заданного на универсальном множестве {0, 0.1, 0.2,…,10}.

x=0:0.1:10’;
mf=trapmf(x, [0, 2, 4, 10]);

FUZARITH
Выполнение нечетких арифметических операций

Синтаксис:

c = fuzarith(x, a, b, operator)

Описание:

Выполняет арифметические операции сложения, вычитания, умножения и деления над нечеткими числами.

Функция fuzarith имеет четыре входных аргумента:

1. x – универсальное множество, на котором заданны нечеткие числа;

2. a – вектор, задающий первый операнд. Представляет собой вектор степеней принадлежности элементов универсального множества первому нечеткому множеству. Другими словами, аргументы x и a образует первое нечеткое число;

3. b – вектор, задающий второй операнд. Представляет собой вектор степеней принадлежности элементов универсального множества второму нечеткому множеству, т.о. аргументы x и b образует второе нечеткое число;

4. operator – арифметическая операция:
‘sum’ – сложение;
‘sub’ – вычитание;
‘prod’ – умножение;
‘div’ – деление.

Выходной переменной функции fuzarith является вектор степеней принадлежности элементов универсального множества x результату выполнения нечеткой арифметической операции. Размерности векторов x, a, b и c должны быть одинаковыми.

В функции fuzarith нечеткие арифметические выполняются по следующему алгоритму:

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

Функция fuzarith использует стандартные процедуры интерполяции для выполнения указанных выше преобразований. Количество -уровней равно 101.

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

При выполнении арифметически операций над нечеткими числами, как правило, носитель результирующего нечеткого числа отличен от носителей нечетких операндов. Функция fuzarith выводит степени принадлежности результата только для универсального множества нечетких операндов, т.е. для множества x. Для вывода всего результирующего нечеткого числа необходима простая модификация функции fuzarith – вывод результата в виде нечеткого множества в -уровневом разложении. Результирующее нечеткое число в виде разложений по -уровням представлено в функции fuzarith переменной intervalC.

Пример:

Рассчитывается нечеткое число c как произведение нечетких чисел a и b с гауссовскими функциями принадлежности, заданных на универсальном множестве {0, 0.01, …, 1}. Графики функций принадлежности показаны ниже на рисунке.

x=0:0.01:1;
a=gaussmf(x, [0.1 0.3]);
b=gaussmf(x, [0.2 0.6]);
c=fuzarith(x, a, b, 'prod');
plot(x, a, x, b, x, c)
legend('a', 'b', 'c=a*b')

EVALMF
Вычисление значений произвольной функции принадлежности

Синтаксис:

y = evalmf (x, params, type)

Описание:

Позволяет вычислить значения произвольной функции принадлежности Функция evalmf иметь три входных аргумента:

1. x – вектор, для координат которого необходимо рассчитать степени принадлежности;

2. params – вектор параметров функции принадлежности, порядок задания которых определяется ее типом;

3. type – тип функции принадлежности. Значение типа функции принадлежности может быть задано в виде строчки символов или числом:
1 - 'trimf';
2 - 'trapmf';
3 - 'gaussmf';
4 – ‘gauss2mf';
5 - 'sigmf';
6 - 'dsigmf';
7 - 'psigmf';
8 - 'gbellmf';
9 - 'smf';
10 - 'zmf';
11 - 'pimf'.
При задании другого типа функции принадлежности предполагается, что она определена пользователем и задана соответствующим m-файлом.

Функция evalmf возвращает выходной аргумент y, содержащий степени принадлежности координат вектора x.

Пример:

x = 0: 0.1: 10;y = evalmf (x, [0 3 9], 1);plot (x, y)title (‘Triangular membership function with parameters [0 3 9]')

===================================================================

Построение графика треугольной функции принадлежности с параметрами [0 3 9] на интервале [0, 10].

EVALMMF
Вычисление степеней принадлежностей для нескольких функций принадлежностей

Синтаксис:

y = evalmmf (x, params, types)

Описание:

Позволяет вычислить значения нескольких функции принадлежности нечетких множеств, заданных на одном и том же универсальном множестве. Функция evalmmf иметь три входных аргумента:

1. x – вектор, для координат которого необходимо рассчитать степени принадлежности;

2. params – матрица параметров функции принадлежности. Первая строка матрицы определяет параметры первой функции принадлежности, вторая строка – параметры второй функции принадлежности и т.д.;

3. types – матрица типов функции принадлежности. Первая строка матрицы задает тип первой функции принадлежности, вторая строка – тип второй функции принадлежности и т.д. Значение типа функции принадлежности может быть задано в виде строчки символов или числом: 1 - 'trimf'; 2 - 'trapmf'; 3 - 'gaussmf'; 4 – ‘gauss2mf'; 5 - 'sigmf'; 6 - 'dsigmf'; 7 - 'psigmf'; 8 - 'gbellmf'; 9 - 'smf'; 10 - 'zmf'; 11 - 'pimf'. При задании другого типа функции принадлежности предполагается, что она определена пользователем и задана соответствующим m-файлом.

Функция evalmmf возвращает матрицу y, содержащую степени принадлежности координат вектора x. Первая строка матрицы содержит значения первой функции принадлежности, вторая строка – значения второй функции принадлежности и т.д.

Пример:

x = 0:0.2:10;para = [-1 2 3 4; 3 4 5 7; 5 7 8 0; 2 9 0 0];type = str2mat('pimf', 'trapmf', 'trimf', 'sigmf');mf = evalmmf(x, para, type);
plot(x', mf');
ylim([0 1.05])
legend('pimf', 'trapmf', 'trimf', 'sigmf');

===================================================================

Построение графиков пи-подобной, трапециевидной, треугольной и сигмоидной функций принадлежности на интервале [0, 10].

PROBOR
Вероятностная реализация логической операции ИЛИ

Синтаксис:

y = probor (x)

Описание:

Вероятностная реализация логической операции ИЛИ задается формулой y = a + b – ab. Входной аргумент x представляет собой матрицу степеней принадлежности. Логическая операция ИЛИ выполняется над степенями принадлежностями, записанными в одном столбце матрицы x. Функция probor возвращает вектор y, содержащий результат выполнения логической операции ИЛИ.

Пример:

x = (0:0.1:10);
a = gaussmf(x, [2 4]);
b = gaussmf(x, [1.8 6]);
y = probor([a; b]);
plot (x,[a; b; y])
legend ('a', 'b', 'y=a OR b')
title ('Probabilistic OR')

===================================================================

Выполнение операции “вероятностное ИЛИ” над двумя гауссовскими функциями принадлежности с параметрами [2 4] и [1.8 6].


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: