evalfis

Оцените нечеткую систему вывода

Синтаксис

output = evalfis(fis,input)
output = evalfis(fis,input,options)
[output,fuzzifiedIn,ruleOut,aggregatedOut,ruleFiring] = evalfis(___)

Описание

пример

output = evalfis(fis,input) оценивает нечеткую систему вывода fis для входных значений в input и возвращает получившиеся выходные значения в output.

пример

output = evalfis(fis,input,options) оценивает нечеткую систему вывода с помощью заданных опций оценки.

пример

[output,fuzzifiedIn,ruleOut,aggregatedOut,ruleFiring] = evalfis(___) возвращается промежуточное звено следует из нечеткого процесса вывода. Этот синтаксис не поддержан, когда fis является объектом fistree.

Примеры

свернуть все

Загрузите FIS.

fis = readfis('tipper');

Оцените FIS, когда первым входом является 2, и вторым входом является 1.

output = evalfis(fis,[2 1])
output = 7.0169

Загрузите FIS.

fis = readfis('tipper');

Задайте входные комбинации, чтобы оценить использование массива с одной строкой на входную комбинацию.

input = [2 1;
         4 5;
         7 8];

Оцените FIS для заданных входных комбинаций.

output = evalfis(fis,input)
output = 3×1

    7.0169
   14.4585
   20.3414

Каждая строка output является defuzzified выходным значением для соответствующей строки input.

Загрузите FIS.

fis = readfis('tipper');

Создайте набор опции evalfisOptions, задав количество выборок в выходных нечетких множествах.

options = evalfisOptions('NumSamplePoints',50);

Оцените FIS, использующий этот набор опции.

output = evalfis(fis,[2 1],options);

Создайте пару Mamdani нечеткие системы вывода.

fis1 = mamfis('Name','fis1','NumInputs',2,'NumOutputs',1);
fis2 = mamfis('Name','fis2','NumInputs',2,'NumOutputs',1);

Задайте связь между двумя.

con = ["fis1/output1" "fis2/input1"];

Создайте дерево нечетких систем вывода.

tree = fistree([fis1 fis2],con);

Создайте набор опции evalfisOptions, задав количество выборок в выходных нечетких множествах.

options = evalfisOptions('NumSamplePoints',50);

Оцените объект fistree с помощью заданной входной комбинации и этого набора опции.

y = evalfis(tree,[0.5 0.2 0.7],options)
y = 0.1553

Загрузите FIS.

fis = readfis('tipper');

Оцените FIS и возвратите промежуточные результаты вывода.

[output,fuzzifiedIn,ruleOut,aggregatedOut,ruleFiring] = evalfis(fis,[2 1]);

Можно исследовать промежуточные результаты понять или визуализировать нечеткий процесс вывода. Например, просмотрите агрегированное выходное нечеткое множество, которое является нечетким множеством что evalfis defuzzifies, чтобы найти выходное значение. Кроме того, постройте defuzzified выходное значение.

outputRange = linspace(fis.output.range(1),fis.output.range(2),length(aggregatedOut))'; 
plot(outputRange,aggregatedOut,[output output],[0 1])
xlabel('Tip')
ylabel('Output Membership')
legend('Aggregated output fuzzy set','Defuzzified output')

Длина aggregatedOutput соответствует количеству точек выборки, используемых, чтобы дискретизировать выходные нечеткие множества.

Входные параметры

свернуть все

Нечеткая система вывода, которая будет оценена, заданная как объект mamfis, объект sugfis или объект fistree.

Чтобы создать нечеткую систему вывода, вы можете:

Используйте fistree, чтобы создать дерево взаимосвязанных нечетких систем вывода, чтобы оценить. Несколько выходных аргументов не поддержаны при использовании объекта fistree.

Для приложений генерации кода можно также задать fis, когда гомогенная структура создает использование getFISCodeGenerationData. Для примера смотрите, Генерируют Код для Нечеткой Системы Используя MATLAB Coder.

Входные значения, заданные как M-by-NU массив, где NU является количеством входных переменных в fis и M, являются количеством входных комбинаций, чтобы оценить.

evalfis поддерживает входные значения с одинарной точностью или с двойной точностью.

Опции оценки, заданные как объект evalfisOptions.

Выходные аргументы

свернуть все

Выходные значения, возвращенные как M-by-NY массив, где NY является количеством выходных переменных в fis. evalfis оценивает fis для каждой строки input и возвращает получившиеся defuzzified выходные параметры в соответствующей строке output.

Входные значения Fuzzified, возвращенные как NR-by-NU массив, где NR является количеством правил в fis. Элемент (i, j) fuzzifiedIn является значением входной функции принадлежности для j th вход в i th правило.

Если input задает несколько входных комбинаций, то fuzzifiedIn соответствует комбинации в последней строке input.

Для получения дополнительной информации о fuzzifying входных значениях см. Входные параметры Fuzzify.

Управляйте выходными параметрами, возвращенными как NS (NR NY) массив или NR-by-NY массив, где NS является количеством точек выборки, используемых для оценки областей значений выходной переменной. Чтобы получить вывод для каждого правила, evalfis применяет силу увольнения от антецедента правила до выходной функции принадлежности с помощью метода значения, заданного в fis.

Для системы Mamdani каждое правило вывело, нечеткое множество. В этом случае ruleOut является NS (NR NY) массив. Каждый столбец ruleOut содержит выходное нечеткое множество для одного правила. Первые столбцы NR содержат правило выходные параметры для первой выходной переменной, следующие столбцы NR соответствуют второй выходной переменной и так далее.

Для системы Sugeno каждое правило вывело, скалярное значение. В этом случае ruleOut является NR-by-NY массив. Элемент (j, k) ruleOut является значением k th выходная переменная для j th правило.

Если input задает несколько входных комбинаций, то ruleOut соответствует комбинации в последней строке input.

Для получения дополнительной информации о нечетком значении смотрите, Применяют Метод Значения и Что такое Sugeno-тип Нечеткий Вывод?

Агрегированный вывод для каждой выходной переменной, возвращенной как NS-by-NY массив или вектор - строка из длины NY. Для каждой выходной переменной evalfis комбинирует соответствующие выходные параметры от всех правил с помощью метода агрегации, заданного в fis.

Для системы Mamdani итоговым результатом для каждой выходной переменной является нечеткое множество. В этом случае aggregatedOut как NS-by-NY массив. Каждый столбец aggregatedOut содержит совокупное нечеткое множество для одной выходной переменной.

Для системы Sugeno итоговым результатом для каждой выходной переменной является скалярное значение. В этом случае aggregatedOut является вектором - строкой из длины NY, где элемент k является итоговым результатом для k th выходная переменная.

Если input задает несколько входных комбинаций, то aggregatedOut соответствует комбинации в последней строке input.

Для получения дополнительной информации о нечеткой агрегации смотрите Агрегат Все Выходные параметры и Что такое Sugeno-тип Нечеткий Вывод?

Управляйте силой увольнения, возвращенной как вектор-столбец длины NR. Чтобы получить силу увольнения для каждого правила, evalfis оценивает антецеденты правила; то есть, это применяет нечеткий оператор к значениям входных параметров fuzzified.

Если input задает несколько входных комбинаций, то ruleFiring соответствует комбинации в последней строке input.

Для получения дополнительной информации о применении нечеткого оператора смотрите, Применяют Нечеткий Оператор.

Альтернативная функциональность

Приложение

Можно оценить нечеткие системы вывода с помощью Rule Viewer в приложении Fuzzy Logic Designer.

Блок Simulink

Можно оценить нечеткие системы вывода с помощью блока Fuzzy Logic Controller. Для получения дополнительной информации об отображении аргументов evalfis к блоку Fuzzy Logic Controller смотрите, Моделируют Нечеткие Системы Вывода в Simulink.

Вопросы совместимости

развернуть все

Поведение изменяется в R2018b

Поведение изменяется в R2018a

Поведение изменяется в R2018a

Поведение изменяется в R2018a

Расширенные возможности

Представлено до R2006a