Evaluate fuzzy inference system

**Library:**Fuzzy Logic Toolbox

The Fuzzy Logic Controller block implements a fuzzy inference system
(FIS) in Simulink^{®}. You specify the FIS to evaluate using the **FIS name**
parameter.

For more information on fuzzy inference, see Fuzzy Inference Process.

To display the fuzzy inference process in the Rule Viewer during simulation, use the Fuzzy Logic Controller with Ruleviewer block.

`in`

— Input signalscalar | vector

For a single-input fuzzy inference system, the input is a scalar signal. For a multi-input fuzzy system, combine the inputs into a vector signal using blocks such as:

`out`

— Defuzzified output signalscalar | vector

For a single-output FIS, the output is a scalar signal. For a multi-output FIS, the output is a vector signal. To split system outputs into scalar signals, use the Demux block.

`fi`

— Fuzzified input valuesmatrix

Fuzzified input values, obtained by evaluating the input membership functions of each rule at the current input values.

For a type-1 FIS, `fi`

is an
*N _{R}*-by-

`fi`

is the value of the input membership function
for the For a type-2 FIS, `fi`

is an
*N _{R}*-by-(2*

For more information on fuzzifying input values, see Fuzzify Inputs.

To enable this port, select the **Fuzzified inputs
(fi)** parameter.

`rfs`

— Rule firing strengthscolumn vector

Rule firing strengths, obtained by evaluating the antecedent of each rule; that is, applying the fuzzy operator to the values of the fuzzified inputs.

For a type-1 FIS, `rfs`

is a column vector signal of
length *N _{R}*, where

For a type-2 FIS, `rfs`

is an
*N _{R}*-by-2 matrix signal.
The first column contains the rule firing strengths generated using
upper membership functions, and the second column contains the rule
firing strengths generated using lower membership functions.

For more information on applying fuzzy operators, see Apply Fuzzy Operator.

To enable this port, select the **Rule firing strengths
(rfs)** parameter.

`ro`

— Rule outputsmatrix

Rule outputs, obtained by applying the rule firing strengths to the output membership functions using the implication method specified in the FIS.

For a type-1 Mamdani FIS, `ro`

is an
*N _{S}*-by-(

`ro`

contains the output fuzzy set for
one rule. The first For a type-2 Mamdani FIS, `ro`

is an
*N _{S}*-by-(2*

For a type-1 Sugeno system, each rule output is a scalar value. In
this case, `ro`

is an
*N _{R}*-by-

`ro`

is the value of the For a type-2 Sugeno system, `ro`

is an
*N _{R}*-by-(3*

For more information on fuzzy implication, see Apply Implication Method.

To enable this port, select the

**Rule outputs (ro)**parameter.To specify

*N*, use the_{S}**Number of samples for output discretization**parameter.

`ao`

— Aggregated outputmatrix | row vector

Aggregate output for each output variable, obtained by combining the corresponding outputs from all the rules using the aggregation method specified in the FIS.

For a type-1 Mamdani fuzzy inference system, the aggregate result for
each output variable is a fuzzy set. In this case, `ao`

is as an
*N _{S}*-by-

`ao`

contains the aggregate fuzzy set
for one output variable.For a type-2 Mamdani FIS, the aggregate result for each output
variable is a fuzzy set. In this case, `ao`

is as an
*N _{S}*-by-(2*

For a type-1 Sugeno system, the aggregate result for each output
variable is a scalar value. In this case, `ao`

is a row
vector of length *N _{Y}*, where
element

For a type-2 Sugeno system, `ao`

is an
*N _{R}*-by-(3*

`aggregatedOut`

contains the same data as
`ro`

with the columns sorted based on the output
levels. For example, in a three-output system, when the output levels in
column 1 are sorted, the corresponding firing strengths in columns 4 and
7 are adjusted accordingly.For more information on fuzzy aggregation, see Aggregate All Outputs.

To enable this port, select the

**Aggregated outputs (ao)**parameter.To specify

*N*, use the_{S}**Number of samples for output discretization**parameter.

`FIS name`

— Fuzzy inference system`mamfis`

object | `sugfis`

object | `mamfistype2`

object | `sugfistype2`

object | file nameFuzzy inference system to evaluate, specified as one of the following:

`mamfis`

or`sugfis`

object — Specify the name of a type-1 FIS object in the MATLAB^{®}workspace.`mamfistype2`

or`sugfistype2`

object — Specify the name of a type-2 FIS object in the MATLAB workspace.File name — Specify the name of a

`.fis`

file in the current working folder or on the MATLAB path. Including the file extension in the file name is optional.To save a type-1 fuzzy inference system to a

`.fis`

file:In

**Fuzzy Logic Designer**or**Neuro-Fuzzy Designer**, select**File**>**Export**>**To File**.At the command line, use

`writeFIS`

.

To save a type-2 fuzzy inference system to a

`.fis`

file, use`wrtieFIS`

.

`Number of samples for output discretization`

— Number of points in output fuzzy sets101 (default) | integer greater than

`1`

Number of samples for discretizing the range of output variables,
specified as an integer greater than `1`

. This value
corresponds to the number of points in the output fuzzy set for each
rule.

To reduce memory usage while evaluating a Mamdani FIS, specify a lower number of samples. Doing so sacrifices the accuracy of the defuzzified output value. Specifying a low number of samples can make the output area for defuzzification zero. In this case, the defuzzified output value is the midpoint of the output variable range.

The block ignores this parameter when evaluating a Sugeno FIS.

`Data type`

— Signal data type`double`

(default) | `single`

| `fixed-point`

| `expression`

Signal data type, specified as one of the following:

`double`

— Double-precision signals`single`

— Single-precision signals`fixdt(1,16,0)`

— Fixed-point signals with binary point scaling`fixdt(1,16,2^0,0)`

— Fixed-point signals with slope and bias scalingExpression — Expression that evaluates to one of these data types

For fixed-point data types, you can configure the signedness, word
length, and scaling parameters using the **Data Type
Assistant**. For more information, see Specifying a Fixed-Point Data Type (Simulink).

`Fuzzified inputs (fi)`

— Enable `fi`

output port`off`

(default) | `on`

Enable output port for accessing intermediate fuzzified input data.

`Rule firing strengths (rfs)`

— Enable `rfs`

output port`off`

(default) | `on`

Enable output port for accessing intermediate rule firing strength data.

`Rule outputs (ro)`

— Enable `ro`

output port`off`

(default) | `on`

Enable output port for accessing intermediate rule output data.

`Aggregated outputs (ao)`

— Enable `ao`

output port`off`

(default) | `on`

Enable output port for accessing intermediate aggregate output data.

`Simulate using`

— Simulation mode```
Interpreted
execution
```

(default) | `Code generation`

Simulation mode, specified as one of the following:

`Interpreted execution`

— Simulate fuzzy systems using precompiled MEX files for`single`

and`double`

data types. Using this option reduces the initial compilation time of the model.`Code generation`

— Simulate fuzzy system without precompiled MEX files. Use this option when simulating fuzzy systems for code generation applications.

For fixed-point data types, the Fuzzy Logic Controller
block always simulates using `Code generation`

mode.

`Out of range input value`

— Diagnostic message behavior when an input is out of range`warning`

(default) | `error`

| `none`

Diagnostic message behavior when an input is out of range, specified as one of the following:

`warning`

— Report the diagnostic message as a warning.`error`

— Report the diagnostic message as an error.`none`

— Do not report the diagnostic message.

When an input value is out of range, corresponding rules in the fuzzy system can have unexpected firing strengths.

Diagnostic messages are provided only when the

**Simulate using**parameter is`Interpreted execution`

.

`No rule fired`

— Diagnostic message behavior when no rules fire`warning`

(default) | `error`

| `none`

Diagnostic message behavior when no rules fire for a given output variable, specified as one of the following:

`warning`

— Report the diagnostic message as a warning.`error`

— Report the diagnostic message as an error.`none`

— Do not report the diagnostic message.

When **No rule fired** is
`warning`

or
`none`

and no rules fire for a given
output, the defuzzified output value is set to its mean range
value.

Diagnostic messages are provided only when the

**Simulate using**parameter is`Interpreted execution`

.

`Empty output fuzzy set`

— Diagnostic message behavior when an output fuzzy set is empty`warning`

(default) | `error`

| `none`

Diagnostic message behavior when an output fuzzy set is empty, specified as one of the following:

`warning`

— Report the diagnostic message as a warning.`error`

— Report the diagnostic message as an error.`none`

— Do not report the diagnostic message.

When **Empty output fuzzy set** is
`warning`

or
`none`

and an output fuzzy set is empty,
the defuzzified value for the corresponding output is set to its mean
range value.

This diagnostic message applies to Mamdani systems only.

Diagnostic messages are provided only when the

**Simulate using**parameter is`Interpreted execution`

.

*Warns starting in R2019b*

Support for representing fuzzy inference systems as structures will be removed in a future
release. Use `mamfis`

and
`sugfis`

objects
instead. There are differences between these representations that require updates to your
code. These differences include:

Object property names that differ from the corresponding structure fields.

Objects store text data as strings rather than as character vectors.

Also, all Fuzzy Logic
Toolbox™ functions that accepted or returned fuzzy inference systems as structures now
accept and return either `mamfis`

or `sugfis`

objects.

To convert existing fuzzy inference system structures to objects, use the `convertfis`

function.

Generate C and C++ code using Simulink® Coder™.

Generate Structured Text code using Simulink® PLC Coder™.

Design and simulate fixed-point systems using Fixed-Point Designer™.

`evalfis`

|`genfis`

|`mamfis`

|`mamfistype2`

|`readfis`

|`sugfis`

|`sugfistype2`

|`writeFIS`

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

Select web siteYou can also select a web site from the following list:

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

- América Latina (Español)
- Canada (English)
- United States (English)

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)