Сгенерируйте нечеткий системный объект вывода от данных
fis = genfis(inputData,outputData)
fis = genfis(inputData,outputData,options)
возвращает нечеткую систему вывода (FIS) Sugeno одно вывода с помощью раздела сетки данных входных и выходных данных.fis
= genfis(inputData
,outputData
)
возвращается FIS сгенерировал использование заданных данных о вводе/выводе и fis
= genfis(inputData
,outputData
,options
)options
. Можно сгенерировать нечеткие системы с помощью разделения сетки, отнимающей кластеризации или кластеризации нечетких c-средних-значений (FCM).
Задайте данные тренировки.
inputData = [rand(10,1) 10*rand(10,1)-5]; outputData = rand(10,1);
Сгенерируйте нечеткую систему вывода.
fis = genfis(inputData,outputData);
Сгенерированная система, fis
, создается с помощью разделения сетки с опциями по умолчанию.
Задайте данные тренировки.
inputData = [rand(10,1) 10*rand(10,1)-5]; outputData = rand(10,1);
Создайте набор опции genfisOptions
по умолчанию для разделения сетки.
opt = genfisOptions('GridPartition');
Задайте следующие входные функции принадлежности для сгенерированного FIS:
3
Гауссовы функции принадлежности для первой входной переменной
5
треугольные функции принадлежности для второй входной переменной
opt.NumMembershipFunctions = [3 5]; opt.InputMembershipFunctionType = ["gaussmf" "trimf"];
Сгенерируйте FIS.
fis = genfis(inputData,outputData,opt);
Постройте входные функции принадлежности. Каждая входная переменная имеет конкретное количество и тип входных функций принадлежности, равномерно распределенных по их входному диапазону.
[x,mf] = plotmf(fis,'input',1); subplot(2,1,1) plot(x,mf) xlabel('input 1 (gaussmf)') [x,mf] = plotmf(fis,'input',2); subplot(2,1,2) plot(x,mf) xlabel('input 2 (trimf)')
Получите данные тренировки ввода и вывода.
load clusterdemo.dat
inputData = clusterdemo(:,1:2);
outputData = clusterdemo(:,3);
Создайте набор опции genfisOptions
и задайте область значений влияния за каждую размерность данных. Задайте 0.5
и 0.25
как область значений влияния за первые и вторые входные переменные. Задайте 0.3
как область значений влияния за выходные данные.
opt = genfisOptions('SubtractiveClustering',... 'ClusterInfluenceRange',[0.5 0.25 0.3]);
Сгенерируйте FIS.
fis = genfis(inputData,outputData,opt);
Сгенерированный FIS содержит одно правило для каждого кластера.
showrule(fis)
ans = 3x83 char array
'1. If (in1 is in1cluster1) and (in2 is in2cluster1) then (out1 is out1cluster1) (1)'
'2. If (in1 is in1cluster2) and (in2 is in2cluster2) then (out1 is out1cluster2) (1)'
'3. If (in1 is in1cluster3) and (in2 is in2cluster3) then (out1 is out1cluster3) (1)'
Получите входные и выходные данные.
load clusterdemo.dat
inputData = clusterdemo(:,1:2);
outputData = clusterdemo(:,3);
Создайте набор опции genfisOptions
для Кластеризации FCM, задав тип Mamdani FIS.
opt = genfisOptions('FCMClustering','FISType','mamdani');
Задайте количество кластеров.
opt.NumClusters = 3;
Подавите отображение информации об итерации к Командному окну.
opt.Verbose = 0;
Сгенерируйте FIS.
fis = genfis(inputData,outputData,opt);
Сгенерированный FIS содержит одно правило для каждого кластера.
showrule(fis)
ans = 3x83 char array
'1. If (in1 is in1cluster1) and (in2 is in2cluster1) then (out1 is out1cluster1) (1)'
'2. If (in1 is in1cluster2) and (in2 is in2cluster2) then (out1 is out1cluster2) (1)'
'3. If (in1 is in1cluster3) and (in2 is in2cluster3) then (out1 is out1cluster3) (1)'
Постройте функции принадлежности ввода и вывода.
[x,mf] = plotmf(fis,'input',1); subplot(3,1,1) plot(x,mf) xlabel('Membership Functions for Input 1') [x,mf] = plotmf(fis,'input',2); subplot(3,1,2) plot(x,mf) xlabel('Membership Functions for Input 2') [x,mf] = plotmf(fis,'output',1); subplot(3,1,3) plot(x,mf) xlabel('Membership Functions for Output')
inputData
— Входные данныеВходные данные, заданные как N - массив столбца, где N является количеством входных параметров FIS.
inputData
и outputData
должны иметь одинаковое число строк.
outputData
— Выходные данныеВыходные данные, заданные как M - массив столбца, где M является количеством FIS выходные параметры.
При использовании разделения сетки outputData
должен иметь один столбец. Если вы задаете больше чем один столбец для разделения сетки, genfis
использует первый столбец в качестве выходных данных.
inputData
и outputData
должны иметь одинаковое число строк.
опции
Опции генерации FISgenfisOptions
установленаУстановлены опции генерации FIS, заданные как опция genfisOptions
. Если вы не задаете options
, genfis
использует сетку по умолчанию, делящую набор опции.
Можно сгенерировать нечеткие системы с помощью одного из следующих методов, которые вы задаете, когда вы создаете набор опции:
Разделение сетки — функции принадлежности входа Generate путем универсального разделения областей значений входной переменной, и создают Sugeno одно вывода нечеткая система. Нечеткая основа правила содержит одно правило для каждой входной комбинации функции принадлежности.
options = genfisOptions('GridPartition');
Отнимающая кластеризация — Генерирует Sugeno нечеткая система с помощью функций принадлежности и правил, выведенных от кластеров данных, найденных с помощью отнимающей кластеризации входных и выходных данных. Для получения дополнительной информации об отнимающей кластеризации смотрите subclust
.
options = genfisOptions('SubtractiveClustering');
FCM, Кластеризирующиеся — Генерируют нечеткую систему с помощью функции принадлежности и правил, выведенных от кластеров данных, найденных с помощью кластеризации FCM входных и выходных данных. Для получения дополнительной информации о кластеризации FCM смотрите fcm
.
options = genfisOptions('FCMClustering');
fis
— Нечеткая система выводаmamfis
| объект sugfis
Нечеткая система вывода, возвращенная как объект mamfis
или sugfis
. Свойства fis
зависят от типа кластеризации используемого и соответствующий options
.
Кластеризация типа | Нечеткий системный тип | Введите функции принадлежности | Нечеткие правила | Выведите функции принадлежности |
---|---|---|---|---|
Разделение сетки | Sugeno | Каждая входная переменная равномерно распределила входную функцию принадлежности. Задайте количество функций принадлежности с помощью options.NumMembershipFunctions . Задайте тип функции принадлежности с помощью options.InputMembershipFunctionType . | Одно правило для каждой входной комбинации функции принадлежности. Следствие каждого правила соответствует различной выходной функции принадлежности. | Одна выходная функция принадлежности для каждого нечеткого правила. Задайте тип функции принадлежности с помощью options.OutputMembershipFunctionType . |
Отнимающая кластеризация | Sugeno | Каждая входная переменная имеет одну функцию принадлежности входа 'gaussmf' для каждого нечеткого кластера. | Одно правило для каждого нечеткого кластера | Каждая выходная переменная имеет один 'linear' функция принадлежности вывода для каждого нечеткого кластера. |
Кластеризация FCM | Mamdani или Sugeno | Каждая входная переменная имеет одну функцию принадлежности входа 'gaussmf' для каждого нечеткого кластера. | Одно правило для каждого нечеткого кластера | Каждая выходная переменная имеет тот выходная функция принадлежности для каждого нечеткого кластера. Типом функции принадлежности является 'gaussmf' для систем Mamdani и 'linear' для систем Sugeno. |
Если fis
является системой Sugeno одно вывода, можно настроить параметры функции принадлежности с помощью команды anfis
.
Не рекомендуемый запуск в R2018b
Поддержка представления нечетких систем вывода как структуры будет удалена в будущем релизе. Используйте mamfis
и объекты sugfis
вместо этого. Существуют различия между этими представлениями, которые требуют обновлений вашего кода. Эти различия включают:
Имена свойства объекта, которые отличаются от соответствующих полей структуры
Объекты, которые хранят текстовые данные как строки, а не как векторы символов
Кроме того, все функции Fuzzy Logic Toolbox™, которые приняли или возвратили нечеткие системы вывода как структуры теперь, принимают и возвращают или mamfis
или объекты sugfis
.
Чтобы преобразовать существующие нечеткие структуры системы вывода в объекты, используйте функцию convertfis
.
anfis
| fcm
| genfisOptions
| subclust
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.