Оцените нечеткую систему вывода
output = evalfis(fis,input)
output = evalfis(fis,input,options)
[output,fuzzifiedIn,ruleOut,aggregatedOut,ruleFiring] = evalfis(___)
[
возвращается промежуточное звено следует из нечеткого процесса вывода. Этот синтаксис не поддержан, когда 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
соответствует количеству точек выборки, используемых, чтобы дискретизировать выходные нечеткие множества.
fis
— Нечеткая система выводаmamfis
| объект sugfis
| объект fistree
| гомогенная структураНечеткая система вывода, которая будет оценена, заданная как объект mamfis
, объект sugfis
или объект fistree
.
Чтобы создать нечеткую систему вывода, вы можете:
Используйте приложение Fuzzy Logic Designer. Для примера смотрите Сборку Нечеткие Системы Используя Fuzzy Logic Designer.
Автоматически сгенерируйте объект FIS с помощью команды genfis
.
Создайте систему в командной строке. Для примера смотрите Сборку Нечеткие Системы в Командной строке.
Используйте fistree
, чтобы создать дерево взаимосвязанных нечетких систем вывода, чтобы оценить. Несколько выходных аргументов не поддержаны при использовании объекта fistree
.
Для приложений генерации кода можно также задать fis
, когда гомогенная структура создает использование getFISCodeGenerationData
. Для примера смотрите, Генерируют Код для Нечеткой Системы Используя MATLAB Coder.
входной параметр
Входные значенияВходные значения, заданные как M-by-NU массив, где NU является количеством входных переменных в fis
и M, являются количеством входных комбинаций, чтобы оценить.
evalfis
поддерживает входные значения с одинарной точностью или с двойной точностью.
опции
Опции оценкиevalfisOptions
Опции оценки, заданные как объект evalfisOptions
.
fuzzifiedIn
— Входные значения FuzzifiedВходные значения Fuzzified, возвращенные как NR-by-NU массив, где NR является количеством правил в fis
. Элемент (i, j) fuzzifiedIn
является значением входной функции принадлежности для j th вход в i th правило.
Если input
задает несколько входных комбинаций, то fuzzifiedIn
соответствует комбинации в последней строке input
.
Для получения дополнительной информации о fuzzifying входных значениях см. Входные параметры Fuzzify.
ruleOut
— Rule выходные параметрыУправляйте выходными параметрами, возвращенными как 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-тип Нечеткий Вывод?
aggregatedOut
— Aggregated выводАгрегированный вывод для каждой выходной переменной, возвращенной как NS-by-NY массив или вектор - строка из длины NY. Для каждой выходной переменной evalfis
комбинирует соответствующие выходные параметры от всех правил с помощью метода агрегации, заданного в fis
.
Для системы Mamdani итоговым результатом для каждой выходной переменной является нечеткое множество. В этом случае aggregatedOut
как NS-by-NY массив. Каждый столбец aggregatedOut
содержит совокупное нечеткое множество для одной выходной переменной.
Для системы Sugeno итоговым результатом для каждой выходной переменной является скалярное значение. В этом случае aggregatedOut
является вектором - строкой из длины NY, где элемент k является итоговым результатом для k th выходная переменная.
Если input
задает несколько входных комбинаций, то aggregatedOut
соответствует комбинации в последней строке input
.
Для получения дополнительной информации о нечеткой агрегации смотрите Агрегат Все Выходные параметры и Что такое Sugeno-тип Нечеткий Вывод?
ruleFiring
— Управляйте сильными местами увольненияУправляйте силой увольнения, возвращенной как вектор-столбец длины NR. Чтобы получить силу увольнения для каждого правила, evalfis
оценивает антецеденты правила; то есть, это применяет нечеткий оператор к значениям входных параметров fuzzified.
Если input
задает несколько входных комбинаций, то ruleFiring
соответствует комбинации в последней строке input
.
Для получения дополнительной информации о применении нечеткого оператора смотрите, Применяют Нечеткий Оператор.
Можно оценить нечеткие системы вывода с помощью Rule Viewer в приложении Fuzzy Logic Designer.
Можно оценить нечеткие системы вывода с помощью блока Fuzzy Logic Controller. Для получения дополнительной информации об отображении аргументов evalfis
к блоку Fuzzy Logic Controller смотрите, Моделируют Нечеткие Системы Вывода в Simulink.
Поведение изменяется в R2018b
Порядок входных параметров для evalfis
изменился, который требует обновлений вашего кода.
Ранее, чтобы оценивать нечеткую систему вывода, fis
, вы задали значения входной переменной, input
, как первый входной параметр. Например:
output = evalfis(input,fis); output = evalfis(input,fis,options);
Обновите свой код, чтобы задать нечеткую систему вывода как первый входной параметр. Например:
output = evalfis(fis,input); output = evalfis(fis,input,options);
Поведение изменяется в R2018a
Задавать количество точек выборки для выходных нечетких множеств, вы теперь нас объект evalfisOptions
, который требует обновлений вашего кода.
Ранее, чтобы задавать количество точек выборки, numPts
, чтобы использовать, когда оценка вывела нечеткие множества нечеткой системы вывода fis
, вы использовали входной параметр. Например:
output = evalfis(input,fis,numPts);
Обновите свой код, чтобы задать количество точек выборки с помощью объекта evalfisOptions
. Например:
opt = evalfisOptions('NumSamplePoints',numPts);
output = evalfis(input,fis,opt);
Поведение изменяется в R2018a
Диагностическое поведение сообщения функции evalfis
изменилось. Ранее функция evalfis
имела следующие поведения для диагностических условий.
Диагностическое условие | Предыдущее поведение |
---|---|
Входные значения за пределами их заданных переменных диапазонов | Предупреждение MATLAB® |
Никакие правила, уволенные за данный вывод в текущих входных значениях | Сообщение Окна Команды MATLAB |
Пустые выходные нечеткие множества | Сообщение Окна Команды MATLAB |
Начиная в R2018a, об этих диагностических условиях сообщают как предупреждения MATLAB по умолчанию. Можно изменить это поведение путем определения соответствующих опций в объекте evalfisOptions
.
Чтобы отключить предупреждающие сообщения по умолчанию, обновите свой код, чтобы использовать объект evalfisOptions
и задать диагностические опции сообщения. Например, отключите пустое выходное сообщение нечеткого множества.
opt = evalfisOptions('EmptyOutputFuzzySetMessage',"none"); output = evalfis(input,fis,opt);
Поведение изменяется в R2018a
При оценке системы Sugeno с помощью следующего синтаксиса промежуточные нечеткие результаты вывода теперь походят на промежуточные результаты для систем Mamdani.
[output,fuzzifiedInputs,ruleOutputs,aggregatedOutput] = evalfis(input,fis);
Для системы Sugeno:
ruleOutputs
теперь возвращает массив, который содержит скалярное выходное значение для каждого правила; то есть, продукт правила, запускающего силу и уровень на выходе правила.
aggregatedOutput
теперь возвращает сумму всех выходных значений правила для каждой выходной переменной.
Ранее для Sugeno нечеткая система:
ruleOutputs
возвратил массив, который содержал уровень на выходе для каждого правила.
aggregatedOutput
возвратил массив, который содержал силу увольнения для каждого правила.
Запуск в R2018a, если ваш код возвращает промежуточные нечеткие результаты вывода при оценке системы Sugeno с помощью evalfis
, изменяет код, чтобы использовать новый ruleOutputs
и результаты aggregatedOutput
.
Указания и ограничения по применению:
Все синтаксисы evalfis
поддерживаются для генерации кода. Однако mamfis
, sugfis
и объекты fistree
не поддержаны. Чтобы использовать evalfis
для генерации кода, необходимо преобразовать объекты FIS в однородные структуры с помощью getFISCodeGenerationData
.
В отличие от Контроллера Нечеткой логики, evalfis
не поддерживает данные фиксированной точки для симуляции или генерации кода.
При оценке нечеткой системы вывода в Simulink® рекомендуется не использовать evalfis
или evalfisOptions
в блоке MATLAB function. Вместо этого оцените свою нечеткую систему вывода с помощью блока Fuzzy Logic Controller.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.