Сгенерируйте нечеткий системный объект вывода из данных
возвращает нечеткую систему вывода (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')
Чтобы создать тип 2 FIS из данных о вводе/выводе, необходимо сначала создать тип 1 FIS использование genfis
.
Загрузите обучающие данные и сгенерируйте FIS использование отнимающей кластеризации.
load clusterdemo.dat inputData = clusterdemo(:,1:2); outputData = clusterdemo(:,3); opt = genfisOptions('SubtractiveClustering',... 'ClusterInfluenceRange',[0.5 0.25 0.3]); fisT1 = genfis(inputData,outputData,opt); fisT1.Outputs
ans = fisvar with properties: Name: "out1" Range: [-0.1274 1.1458] MembershipFunctions: [1x3 fismf]
Преобразуйте сгенерированный FIS в тип 2 FIS.
fisT2 = convertToType2(fisT1);
Начиная с начального типа 1 FIS является системой Sugeno, только вход MFs преобразован в MFS типа 2.
inputData
— Входные данныеВходные данные, заданные как N - массив столбца, где N является количеством входных параметров FIS.
inputData
и outputData
должен иметь одинаковое число строк.
outputData
— Выходные данныеВыходные данные, заданные как M - массив столбца, где M является количеством FIS выходные параметры.
При использовании разделения сетки, outputData
должен иметь один столбец. Если вы задаете больше чем один столбец для разделения сетки, genfis
использует первый столбец в качестве выходных данных.
inputData
и outputData
должен иметь одинаковое число строк.
options
— Опции генерации 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
функция.
При генерации типа 2 FIS не поддержан genfis
. Вместо этого генерация типа 1 FIS и преобразует его с помощью convertToType2
функция.
Предупреждает запуск в R2019b
Поддержка представления нечетких систем вывода как структуры будет удалена в будущем релизе. Используйте mamfis
и sugfis
объекты вместо этого. Существуют различия между этими представлениями, которые требуют обновлений вашего кода. Эти различия включают:
Имена свойства объекта, которые отличаются от соответствующих полей структуры.
Объекты хранят текстовые данные как строки, а не как векторы символов.
Кроме того, все функции Fuzzy Logic Toolbox™, которые приняли или возвратили нечеткие системы вывода как структуры теперь, принимают и возвращают любой mamfis
или sugfis
объекты.
Чтобы преобразовать существующие нечеткие структуры системы вывода в объекты, используйте convertfis
функция.
anfis
| fcm
| genfisOptions
| subclust
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.