Создание объекта системы нечеткого вывода на основе данных
возвращает систему нечеткого вывода (FIS) Sugeno с одним выходом, использующую грид-раздел заданных входных и выходных данных.fis = genfis(inputData,outputData)
возвращает FIS, сгенерированный с использованием указанных входных/выходных данных и fis = genfis(inputData,outputData,options)options. Нечеткие системы можно создавать с помощью секционирования сетки, вычитания кластеризации или нечеткого c-means (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, указывающий тип FIS Mamdani.
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')

Для создания FIS типа 2 из входных/выходных данных сначала необходимо создать FIS типа 1 с помощью 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 в FIS типа 2.
fisT2 = convertToType2(fisT1);
Поскольку начальная FIS типа 1 является системой Сугено, только входные MF преобразуются в MF типа 2.
inputData - Входные данныеВходные данные, указанные как массив N-столбцов, где N - количество входов FIS.
inputData и outputData должно иметь одинаковое количество строк.
outputData - Выходные данныеВыходные данные, указанные как массив M-столбцов, где M - количество выходов FIS.
При использовании секционирования сетки outputData должен иметь один столбец. Если для секционирования сетки указано несколько столбцов, genfis использует первый столбец в качестве выходных данных.
inputData и outputData должно иметь одинаковое количество строк.
options - Варианты генерации FISgenfisOptions набор опцийВарианты генерации FIS, указанные как genfisOptions набор опций. Если не указать options, genfis использует набор опций секционирования сетки по умолчанию.
Нечеткие системы можно создать одним из следующих способов, которые задаются при создании набора опций.
Секционирование сетки - создание входных членских функций путем равномерного секционирования диапазонов входных переменных и создание нечеткой системы 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 | Мамдани или Сугено | Каждая входная переменная имеет одну 'gaussmf' входная функция членства для каждого нечеткого кластера. | Одно правило для каждого нечеткого кластера | Каждая выходная переменная имеет одну выходную функцию членства для каждого нечеткого кластера. Тип функции членства: 'gaussmf' для систем Mamdani и 'linear' для систем Sugeno. |
Если fis является системой Sugeno с одним выходом, можно настроить параметры функции членства с помощью anfis функция.
Создание FIS типа 2 не поддерживается genfis. Вместо этого создается FIS типа 1 и преобразуется с помощью convertToType2 функция.
Предупреждает, начиная с R2019b
Поддержка представления нечетких систем вывода как структур будет удалена в будущем выпуске. Использовать mamfis и sugfis вместо этого объекты. Между этими представлениями существуют различия, требующие обновления кода. Эти различия включают в себя:
Имена свойств объекта, отличающиеся от соответствующих полей структуры.
Объекты хранят текстовые данные в виде строк, а не в виде векторов символов.
Кроме того, все функции Fuzzy Logic Toolbox™, которые принимали или возвращали системы нечеткого вывода в качестве структур, теперь принимают и возвращают либо mamfis или sugfis объекты.
Чтобы преобразовать существующие структуры системы нечеткого вывода в объекты, используйте convertfis функция.
anfis | fcm | genfisOptions | subclust
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.