Добавление функции членства в нечеткую переменную
добавляет функцию членства с указанными типом и параметрами.fisOut = addMF(fisIn,varName,type,parameters)
настраивает функцию членства, используя один или несколько аргументов пары имя-значение.fisOut = addMF(___,Name,Value)
добавляет функцию членства по умолчанию к нечеткой переменной varOut = addMF(varIn)varIn и возвращает результирующую нечеткую переменную в varOut.
Если varIn не содержит функций членства, этот синтаксис добавляет функцию членства типа 1 по умолчанию. В противном случае тип добавленной функции членства совпадает с типом существующих функций членства в varIn.
добавляет функцию членства с указанными типом и параметрами.varOut = addMF(varIn,type,parameters)
задает имя функции членства с помощью varOut = addMF(___,Name,Value)Name аргумент пары имя-значение.
Чтобы добавить функцию членства типа 2 к нечеткой переменной без существующих функций членства, необходимо указать либо LowerLag или LowerScale аргумент пары имя-значение.
Создайте нечеткую систему Mamdani и добавьте три входные переменные и одну выходную переменную. В этом примере присвойте второй входной переменной и выходной переменной одинаковое имя.
fis = mamfis; fis = addInput(fis,[0 80],"Name","speed"); fis = addInput(fis,[0 100],"Name","throttle"); fis = addInput(fis,[0 10],"Name","distance"); fis = addOutput(fis,[0 100],"Name","throttle");
Добавьте функцию членства к первой входной переменной, указав трапециевидную функцию членства, и задайте параметры функции членства.
fis = addMF(fis,"speed","trapmf",[-5 0 10 30]);
Можно также указать имя участника при добавлении его в нечеткую систему. Добавить функцию членства с именем "high" к первой входной переменной.
fis = addMF(fis,"speed","trapmf",[50 70 80 85],'Name',"high");
Просмотр функций членства для первой входной переменной.
plotmf(fis,"input",1)
Если система имеет входную переменную с тем же именем, что и выходная переменная, при добавлении функции членства необходимо указать тип переменной. Например, добавьте функцию членства в выходную переменную.
fis = addMF(fis,"throttle","trimf",[0 20 40],'VariableType',"output"); plotmf(fis,"output",1)

Можно также добавить функцию членства по умолчанию в нечеткую систему и задать ее параметры с помощью точечной нотации. Например, добавьте и настройте функцию членства для третьей входной переменной.
fis = addMF(fis,"distance"); fis.Inputs(3).MembershipFunctions(1).Type = "trapmf"; fis.Inputs(3).MembershipFunctions(1).Parameters = [-1 0 2 4]; plotmf(fis,"input",3)

Создайте нечеткую систему Sugeno типа 2 и добавьте две входные переменные и одну выходную переменную.
fis = sugfistype2; fis = addInput(fis,[0 80],"Name","speed"); fis = addInput(fis,[0 10],"Name","distance"); fis = addOutput(fis,[0 100],"Name","braking");
Добавьте функцию членства к первой входной переменной, указав трапециевидную функцию членства, и задайте параметры функции членства. Эта функция членства типа 2 использует по умолчанию более низкую задержку функции членства и параметры масштабирования.
fis = addMF(fis,"speed","trapmf",[-5 0 10 30]);
Можно также указать конфигурацию нижнего MF при добавлении функции членства типа 2.
fis = addMF(fis,"speed","trapmf",[10 30 50 70],'LowerScale',0.8,'LowerLag',0.1);
Можно также указать имя функции членства при добавлении ее в нечеткую систему. Добавить функцию членства с именем "high" к первой входной переменной.
fis = addMF(fis,"speed","trapmf",[50 70 80 85],'Name',"high");
Просмотр функций членства для первой входной переменной.
plotmf(fis,"input",1)
Создайте нечеткую переменную с заданным диапазоном.
var = fisvar([0 1]);
Добавьте функцию членства в переменную, указав трапециевидную функцию членства, и задайте параметры функции членства.
var = addMF(var,"trapmf",[-0.5 0 0.2 0.4]);Можно также указать имя участника при добавлении его в нечеткую переменную. Например, добавьте функцию членства с именем "large".
var = addMF(var,"trapmf",[0.6 0.8 1 1.5],'Name',"large");
Просмотр функций членства.
var.MembershipFunctions
ans =
1x2 fismf array with properties:
Type
Parameters
Name
Details:
Name Type Parameters
_______ ________ ____________________________
1 "mf1" "trapmf" -0.5 0 0.2 0.4
2 "large" "trapmf" 0.6 0.8 1 1.5
Можно также добавить функцию членства по умолчанию к нечеткой переменной и задать ее параметры с помощью точечной нотации.
var = fisvar([0 1]);
var = addMF(var);
var.MembershipFunctions(1).Type = "trapmf";
var.MembershipFunctions(1).Parameters = [-0.5 0 0.2 0.4];Создайте нечеткую переменную с заданным диапазоном. По умолчанию эта переменная не имеет функций членства.
var = fisvar([0 9]);
Чтобы добавить функцию членства типа 2 к переменной без существующих функций членства, укажите либо LowerLag или LowerScale значение для функции членства. Например, укажите меньшее значение масштаба.
var = addMF(var,"trimf",[0 3 6],'LowerScale',1);
Как только переменная содержит функцию членства типа 2, можно добавить дополнительные функции членства типа 2 без указания одного из этих параметров.
var = addMF(var,"trimf",[3 6 9]);Просмотр функций членства.
var.MembershipFunctions
ans =
1x2 fismftype2 array with properties:
Type
UpperParameters
LowerScale
LowerLag
Name
Details:
Name Type Upper Parameters Lower Scale Lower Lag
_____ _______ ________________ ___________ __________
1 "mf1" "trimf" 0 3 6 1 0.2 0.2
2 "mf2" "trimf" 3 6 9 1 0.2 0.2
fisIn - Система нечеткого выводаmamfis объект | sugfis объект | mamfistype2 объект | sugfistype2 объектСистема нечеткого вывода, заданная как одна из следующих:
mamfis объект - система нечеткого вывода Мамдани
sugfis object - система нечеткого вывода Sugeno
mamfistype2 объект - Type-2 система нечеткого вывода Мамдани
sugfistype2 object - Type-2 система нечеткого вывода Sugeno
varName - Имя переменнойИмя переменной, указанное как строковый или символьный вектор. В FIS можно указать имя входной или выходной переменной. Если система имеет входную переменную с тем же именем, что и выходная переменная, укажите тип переменной, к которой требуется добавить функцию членства. VariableType пара имя-значение.
type - Тип членской функции"trimf" (по умолчанию) | строка | символьный вектор | дескриптор функцииТип членской функции, указанный как строковый или символьный вектор, содержащий имя функции в текущей рабочей папке или в пути MATLAB ®. Можно также указать дескриптор для такой функции. При указанииtype, необходимо также указать parameters.
В этой таблице описаны значения, которые можно указать для type.
| Тип функции членства | Описание | Для получения дополнительной информации |
|---|---|---|
"gbellmf" | Обобщенная колоколообразная функция членства | gbellmf |
"gaussmf" | Гауссова членская функция | gaussmf |
"gauss2mf" | Гауссова комбинационная членская функция | gauss2mf |
"trimf" | Треугольная функция членства | trimf |
"trapmf" | Трапециевидная функция членства | trapmf |
"sigmf" | Сигмоидальная функция членства | sigmf |
"dsigmf" | Разница между двумя сигмоидальными функциями членства | dsigmf |
"psigmf" | Произведение двух сигмоидальных функций членства | psigmf |
"zmf" | Z-образная функция членства | zmf |
"pimf" | Пи-образная функция членства | pimf |
"smf" | S-образная функция членства | smf |
"constant" | Функция постоянного членства (не поддерживается для выходных переменных систем Mamdani или для любых входных переменных) | Системы нечеткого вывода Sugeno |
"linear" | Линейная функция членства (не поддерживается для выходных переменных систем Mamdani или для любых входных переменных) | |
| Строковый или символьный вектор | Имя пользовательской функции членства в текущей рабочей папке или в пути MATLAB. Пользовательские функции не поддерживаются для выходных переменных систем Sugeno. | Создание нечетких систем с использованием пользовательских функций |
| Дескриптор функции | Дескриптор пользовательской функции членства в текущей рабочей папке или в пути MATLAB. Пользовательские функции не поддерживаются для выходных переменных систем Sugeno. |
parameters - Параметры членской функции[0 0.5 1] (по умолчанию) | векторПараметры членской функции, указанные как вектор. Длина вектора параметров зависит от типа функции членства. При указании parameters, необходимо также указать type.
Когда fisIn является FIS типа 1 или varIn содержит функции членства типа 1, parameters устанавливает Parameters свойства добавленной функции членства.
Когда fisIn является FIS типа 2 или varIn содержит функции членства типа 2, parameters устанавливает UpperParameters свойства добавленной функции членства.
varIn - Нечеткая переменнаяfisvar объектНечеткая переменная, заданная как fisvar объект.
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'Name',"large" задает имя функции членства "large"'Name' - Имя функции членстваИмя функции членства, указанное как пара, разделенная запятыми, состоящая из 'Name' и вектор строки или символа. Имя функции членства по умолчанию: "mf<uniqueIndex>", где uniqueIndex автоматически генерируется на основе текущего числа функций членства в связанной переменной.
'VariableType' - Тип переменной"input" | "output"Тип переменной, указанный как пара, разделенная запятыми 'VariableType' и одно из следующих:
"input" - Входная переменная
"output" - Выходная переменная
Если система имеет входную переменную с тем же именем, что и выходная переменная, укажите, к какой переменной следует добавить функцию членства. VariableType.
Эта пара имя-значение не применяется при добавлении функции членства в fisvar объект.
'LowerScale' - Более низкий коэффициент масштабирования функции членства1 (по умолчанию) | положительный скаляр меньше или равен 1Более низкий коэффициент масштабирования функции членства для функций членства типа-2, заданный как положительный скаляр, меньший или равный 1. Использовать LowerScale для определения максимального значения нижней функции членства.
В зависимости от значения LowerLag, фактическое максимальное значение нижней функции членства может быть меньше, чем LowerScale.
Эта пара имя-значение применяется только при добавлении функций членства типа 2.
'LowerLag' - Более низкий коэффициент задержки функции членства[0.2 0.2] (по умолчанию) | скалярное значение между 0 и 1 | вектор длины 2Более низкий коэффициент задержки членской функции для членских функций типа-2, заданный как скалярное значение или вектор длины два. Можно указать значения задержки между 0 и 1, включительно.
Эта пара имя-значение применяется только при добавлении функций членства типа 2.
Следующие типы функций членства поддерживают только скаляр LowerLag значение:
Симметричные MF - gaussmf и gbellmf
Односторонние MF - sigmf, smf, и zmf
Все другие встроенные функции членства поддерживают скаляр или вектор LowerLag значение. Для этих функций членства при указании:
Скалярное значение, одно и то же значение запаздывания используется как для левой, так и для правой стороны функции членства.
Значение вектора, можно определить различные значения запаздывания для левой и правой сторон функции членства.
Значение запаздывания определяет точку, в которой значение нижней членской функции начинает увеличиваться от нуля на основе значения верхней членской функции. Например, значение задержки 0.1 указывает, что нижняя функция членства становится положительной, когда верхняя функция членства имеет значение членства 0.1.
Когда значение запаздывания равно нулю, нижняя функция членства начинает увеличиваться в той же точке, что и верхняя функция членства.
Некоторые типы функций членства ограничивают максимальное значение задержки. Например, LowerLag должно быть меньше, чем 1 для gaussmf, gauss2mf, gbellmf, sigmf, dsigmf, и psigmf членские функции.
fisOut - Система нечеткого выводаmamfis объект | sugfis объект | mamfistype2 объект | sugfistype2 объектСистема нечеткого вывода, заданная как одна из следующих:
mamfis объект - система нечеткого вывода Мамдани
sugfis object - система нечеткого вывода Sugeno
mamfistype2 объект - Type-2 система нечеткого вывода Мамдани
sugfistype2 object - Type-2 система нечеткого вывода Sugeno
fisOut содержит добавленную функцию членства со всеми другими свойствами, соответствующими свойствам fisInfisOut содержит добавленную функцию членства со всеми другими свойствами, соответствующими свойствам fisIn
varOut - Нечеткая переменнаяfisvar объектНечеткая переменная, возвращаемая как fisvar объект. varOut содержит добавленную функцию членства со всеми другими свойствами, соответствующими свойствам varIn.
addmf сейчас addMF и его функциональный синтаксис изменилсяВ R2018b изменилось поведение
Имя и поведение addmf изменилась функция. Сейчас:
addmf является addMF
Вы указываете переменную, к которой вы хотите добавить функцию членства по имени, а не по индексу.
Имя функции членства задается с помощью аргумента пары «имя-значение».
Эти изменения требуют обновления кода.
В следующей таблице показаны некоторые типичные виды использования addmf для добавления функций членства к нечетким переменным и для обновления кода. В этой таблице: fis - система нечеткого вывода с двумя входами, service и foodи один выход, tip.
| Если код имеет следующую форму: | Вместо этого используйте следующий код: |
|---|---|
fis = addmf(fis'input',1,...
'poor',...
'gaussmf',[1.5 0]) |
fis = addMF(fis,"service",...
"gaussmf",[1.5 0],
'Name',"poor") |
fis = addmf(fis,'input',2,...
'rancid',...
'trapmf',[-2 0 1 3]) |
fis = addMF(fis,"food",...
"trapmf",[-2 0 1 3],...
'Name',"rancid") |
fis = addmf(fis,'output',1,...
'cheap',...
'trimf',[0 5 10]) |
fis = addMF(fis,"tip",...
"trimf",[0 5 10],...
'Name',"cheap") |
Предупреждает, начиная с R2019b
Поддержка представления нечетких систем вывода как структур будет удалена в будущем выпуске. Использовать mamfis и sugfis вместо этого объекты. Между этими представлениями существуют различия, требующие обновления кода. Эти различия включают в себя:
Имена свойств объекта, отличающиеся от соответствующих полей структуры.
Объекты хранят текстовые данные в виде строк, а не в виде векторов символов.
Кроме того, все функции Fuzzy Logic Toolbox™, которые принимали или возвращали системы нечеткого вывода в качестве структур, теперь принимают и возвращают либо mamfis или sugfis объекты.
Чтобы преобразовать существующие структуры системы нечеткого вывода в объекты, используйте convertfis функция.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.