Добавьте функцию принадлежности к нечеткой переменной
добавляет функцию принадлежности с заданными типом и параметрами.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
аргумент пары "имя-значение".
Создайте нечеткую систему Мамдани и добавьте три входные переменные и одну выходную переменную. В данном примере присвойте второй входной переменной и выходной переменной то же имя.
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
объект - система нечеткого вывода Mamdani
sugfis
объект - система нечеткого вывода Sugeno
mamfistype2
объект - Type-2 системы нечеткого вывода Мамдани
sugfistype2
объект - Type-2 системы нечеткого вывода Sugeno
varName
- Имя переменнойИмя переменной, заданное как строковый или символьный вектор. Имя входной или выходной переменной можно задать в FIS. Если ваша система имеет переменный вход с таким же именем, что и переменный выход, укажите тип переменной, к которой вы хотите добавить функцию принадлежности, используя VariableType
Пара "имя-значение".
type
- Тип функции принадлежности"trimf"
(по умолчанию) | строку | вектор символов | указатель на функциюТип функции принадлежности, заданный как строковый или символьный вектор, содержащий имя функции в текущей рабочей папке или в MATLAB® путь. Можно также задать указатель на такую функцию. Когда вы задаете type
, вы также должны задать parameters
.
В этой таблице описываются значения, которые можно задать для type
.
Тип функции принадлежности | Описание | Для получения дополнительной информации |
---|---|---|
"gbellmf" | Обобщенная функция принадлежности в форме колокола | gbellmf |
"gaussmf" | Функция Гауссова членства | gaussmf |
"gauss2mf" | Комбинация Гауссов | gauss2mf |
"trimf" | Треугольная функция принадлежности | trimf |
"trapmf" | Функция трапеций членства | trapmf |
"sigmf" | Функция Sigmoidal принадлежности | sigmf |
"dsigmf" | Различие между двумя сигмоидальными функциями принадлежности | dsigmf |
"psigmf" | Продукт двух сигмоидальных функций принадлежности | psigmf |
"zmf" | Z-образная функция принадлежности | zmf |
"pimf" | Функция Pi-образного членства | pimf |
"smf" | S-образная функция принадлежности | smf |
"constant" | Функция постоянного членства (не поддерживается для выходных переменных систем Мамдани или для каких-либо входных переменных) | Системы нечеткого вывода Sugeno |
"linear" | Линейная функция принадлежности (не поддерживается для выходных переменных систем Мамдани или для каких-либо входных переменных) | |
Строка или вектор символов | Имя пользовательской функции членства в текущей рабочей папке или в пути MATLAB. Пользовательские функции не поддерживаются для выходных переменных систем Sugeno. | Создайте нечеткие системы с помощью пользовательских функций |
Указатель на функцию | Указатель на пользовательскую функцию членства в текущей рабочей папке или в пути MATLAB. Пользовательские функции не поддерживаются для выходных переменных систем Sugeno. |
parameters
- Параметры функции принадлежности[0 0.5 1]
(по умолчанию) | векторПараметры функции принадлежности, заданные как вектор. Длина вектора параметра зависит от типа функции принадлежности. Когда вы задаете parameters
, вы также должны задать type
.
Когда fisIn
является FIS или varIn
типа 1 содержит функции членства типа 1,
parameters
устанавливает Parameters
свойство добавленной функции членства.
Когда fisIn
является FIS или varIn
типа 2 содержит функции членства 2 типа,
parameters
устанавливает UpperParameters
свойство добавленной функции членства.
varIn
- Нечеткая переменнаяfisvar
объектНечеткая переменная, заданная как a 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
объект - система нечеткого вывода Mamdani
sugfis
объект - система нечеткого вывода Sugeno
mamfistype2
объект - Type-2 системы нечеткого вывода Мамдани
sugfistype2
объект - Type-2 системы нечеткого вывода Sugeno
fisOut
содержит добавленную функцию принадлежности со всеми другими свойствами, соответствующими свойствам fisIn
fisOut
содержит добавленную функцию принадлежности со всеми другими свойствами, соответствующими свойствам fisIn
varOut
- Нечеткая переменнаяfisvar
объектНечеткая переменная, возвращенная как a 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.