sugfis
Sugeno fuzzy inference system
Description
Use a sugfis object to represent a type-1 Sugeno fuzzy
inference system (FIS).
As an alternative to a type-1 Sugeno system, you can create a:
Type-1 Mamdani system using a
mamfisobjectType-2 Sugeno system using a
sugfistype2objectType-2 Mamdani system using a
mamfistype2object
For more information on the different types of fuzzy inference systems, see Mamdani and Sugeno Fuzzy Inference Systems and Type-2 Fuzzy Inference Systems.
Creation
To create a Sugeno FIS object, use one of the following methods:
The
sugfisfunction.If you have input/output data, you can use the
genfisfunction.If you have a FIS file (
*.fis) for a Sugeno system, you can use thereadfisfunction.Convert an existing Mamdani FIS to a Sugeno FIS using
convertToSugeno.
Description
fis = sugfis returns a Sugeno FIS with default property values.
To modify the properties of the fuzzy system, use dot notation.
fis = sugfis( specifies FIS
configuration information or sets object properties using one or more name-value
arguments.Name=Value)
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN, where Name is
the argument name and Value is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Example: NumInputs=2 configures the fuzzy system to have two input
variables
Number of FIS inputs, specified as a nonnegative integer.
Number of membership functions for each FIS input, specified as a positive integer.
Number of FIS outputs, specified as a nonnegative integer.
Number of membership functions for each FIS output, specified as a positive integer.
Membership function type for input variables, specified as either
"trimf" (triangular MF) or "gaussmf"
(Gaussian MF). For each input variable, the membership functions are uniformly
distributed over the variable range with approximately 80% overlap in the MF
supports.
Output membership functions are set to "constant" and
uniformly distributed over the output variable ranges.
Option for automatically adding rules, specified as one of the following:
"allcombinations"— If bothNumInputsandNumOutputsare greater than zero, create rules with antecedents that contain all input membership function combinations. Each rule consequent contains all the output variables and uses the first membership function of each output."none"— Create a FIS without any rules.
FIS name, specified as a string or character vector.
This argument sets the Name property.
AND operator method for combining fuzzified input values in a fuzzy rule antecedent, specified as one of the following:
"prod"— Product of fuzzified input values"min"— Minimum of fuzzified input valuesString or character vector — Name of a custom AND function in the current working folder or on the MATLAB® path
Function handle — Custom AND function in the current working folder or on the MATLAB path
This argument sets the AndMethod property.
For more information on using custom functions, see Build Fuzzy Systems Using Custom Functions.
For more information on fuzzy operators and the fuzzy inference process, see Fuzzy Inference Process.
OR operator method for combining fuzzified input values in a fuzzy rule antecedent, specified as one of the following:
"probor"— Probabilistic OR of fuzzified input values. For more information, seeprobor."max"— Maximum of fuzzified input values.String or character vector — Name of a custom OR function in the current working folder or on the MATLAB path.
Function handle — Custom OR function in the current working folder or on the MATLAB path.
This argument sets the OrMethod property.
For more information on using custom functions, see Build Fuzzy Systems Using Custom Functions.
For more information on fuzzy operators and the fuzzy inference process, see Fuzzy Inference Process.
Implication method for computing consequent fuzzy set, specified as
"prod". Sugeno systems always use the "prod"
implication method, which scales the consequent membership function by the
antecedent result value.
This argument sets the ImplicationMethod property.
For more information on implication and the fuzzy inference process, see Fuzzy Inference Process.
Aggregation method for combining rule consequents, specified as
"sum". Sugeno systems always use the "sum"
aggregation method, which is the sum of the consequent fuzzy sets.
This argument sets the AggregationMethod property.
For more information on aggregation and the fuzzy inference process, see Fuzzy Inference Process.
Defuzzification method for computing crisp output values from the aggregated output fuzzy set, specified as one of the following:
"wtaver"— Weighted average of all rule outputs"wtsum"— Weighted sum of all rule outputs
This argument sets the DefuzzificationMethod
property.
For more information on using custom functions, see Build Fuzzy Systems Using Custom Functions.
For more information on defuzzification and the fuzzy inference process, see Fuzzy Inference Process.
Option to disable consistency checks when property values change, specified as a logical value.
By default, when you change the value of a property of a
sugfis object, the software verifies whether the new
property value is consistent with the other object properties. These checks can
affect performance, particularly when creating and updating fuzzy systems within
loops.
To disable these checks, which results in faster FIS construction, set
DisableStructuralChecks to true.
Note
Disabling structural checks can result in an invalid
sugfis object.
To reenable the consistency checks, first verify that the changes you made to
the FIS are consistent and produce a valid sugfis object.
Then, set DisableStructuralChecks to
false. If the sugfis object is
invalid, reenabling the consistency checks generates an error.
This argument sets the DisableStructuralChecks
property.
Properties
FIS name, specified as a string or character vector.
AND operator method for combining fuzzified input values in a fuzzy rule antecedent, specified as one of the following:
"prod"— Product of fuzzified input values"min"— Minimum of fuzzified input valuesString or character vector — Name of a custom AND function in the current working folder or on the MATLAB path
Function handle — Custom AND function in the current working folder or on the MATLAB path
For more information on using custom functions, see Build Fuzzy Systems Using Custom Functions.
For more information on fuzzy operators and the fuzzy inference process, see Fuzzy Inference Process.
OR operator method for combining fuzzified input values in a fuzzy rule antecedent, specified as one of the following:
"probor"— Probabilistic OR of fuzzified input values. For more information, seeprobor."max"— Maximum of fuzzified input values.String or character vector — Name of a custom OR function in the current working folder or on the MATLAB path.
Function handle — Custom OR function in the current working folder or on the MATLAB path.
For more information on using custom functions, see Build Fuzzy Systems Using Custom Functions.
For more information on fuzzy operators and the fuzzy inference process, see Fuzzy Inference Process.
Implication method for computing consequent fuzzy set, specified as
"prod". Sugeno systems always use the "prod"
implication method, which scales the consequent membership function by the antecedent
result value.
For more information on implication and the fuzzy inference process, see Fuzzy Inference Process.
Aggregation method for combining rule consequents, specified as
"sum". Sugeno systems always use the "sum"
aggregation method, which is the sum of the consequent fuzzy sets.
For more information on aggregation and the fuzzy inference process, see Fuzzy Inference Process.
Defuzzification method for computing crisp output values from the aggregated output fuzzy set, specified as one of the following:
"wtaver"— Weighted average of all rule outputs"wtsum"— Weighted sum of all rule outputs
For more information on using custom functions, see Build Fuzzy Systems Using Custom Functions.
For more information on defuzzification and the fuzzy inference process, see Fuzzy Inference Process.
Option to disable consistency checks when property values change, specified as a logical value.
By default, when you change the value of a property of a
sugfis object, the software verifies whether the new
property value is consistent with the other object properties. These checks can affect
performance, particularly when creating and updating fuzzy systems within loops.
To disable these checks, which results in faster FIS construction, set
DisableStructuralChecks to true.
Note
Disabling structural checks can result in an invalid
sugfis object.
To reenable the consistency checks, first verify that the changes you made to the FIS
are consistent and produce a valid sugfis object. Then, set
DisableStructuralChecks to false. If the
sugfis object is invalid, reenabling the consistency
checks generates an error.
FIS input variables, specified as a vector of fisvar objects. To add and remove input variables, use addInput and removeInput, respectively. You can modify the properties of the input variables using dot notation.
You can also create a vector of fisvar objects and assign it to Inputs using dot notation.
You can add membership functions to input variables using the addMF function.
FIS output variables, specified as a vector of fisvar objects. To add and remove output variables, use addOutput and removeOutput, respectively.
You can also create a vector of fisvar objects and assign it to Outputs using dot notation.
You can add membership functions to output variables using the addMF function.
FIS input variables, specified as a vector of fisrule
objects. To add fuzzy rules, use the addRule function.
You can also create a vector of fisrule objects and assign it to
Rules using dot notation.
To remove a rule, set the corresponding rule vector element to [].
For example, to remove the tenth rule from the rule list, type:
fis.Rules(10) = [];
Sugeno systems do not support rules with NOT logic in the consequent.
Object Functions
addInput | Add input variable to fuzzy inference system |
removeInput | Remove input variable from fuzzy inference system |
addOutput | Add output variable to fuzzy inference system |
removeOutput | Remove output variable from fuzzy inference system |
addRule | Add rule to fuzzy inference system |
addMF | Add membership function to fuzzy variable |
removeMF | Remove membership function from fuzzy variable |
evalfis | Evaluate fuzzy inference system |
writeFIS | Save fuzzy inference system to file |
convertToType2 | Convert type-1 fuzzy inference system into type-2 fuzzy inference system |
Examples
Create a Sugeno fuzzy inference system with default property values.
fis = sugfis;
Modify the system properties using dot notation. For example, configure fis to use weighted-sum defuzzification.
fis.DefuzzificationMethod = "wtsum";Alternatively, you can specify one of more FIS properties when you create a fuzzy system. For example, create a Sugeno fuzzy system with specified AND and OR methods.
fis = sugfis(AndMethod="min",OrMethod="max");
Create a Sugeno fuzzy inference system with three inputs and one output.
fis = sugfis(NumInputs=3,NumOutputs=1)
fis =
sugfis with properties:
Name: "fis"
AndMethod: "prod"
OrMethod: "probor"
ImplicationMethod: "prod"
AggregationMethod: "sum"
DefuzzificationMethod: "wtaver"
DisableStructuralChecks: 0
Inputs: [1×3 fisvar]
Outputs: [1×1 fisvar]
Rules: [1×27 fisrule]
See 'getTunableSettings' method for parameter optimization.
By default, the software creates a rule for each possible input combination.
Load a Sugeno FIS from a file.
fis = readfis("sugeno1");The output variable has two membership functions. View the properties of the first membership function.
fis.Outputs(1).MembershipFunctions(1)
ans =
fismf with properties:
Type: "linear"
Parameters: [-1 -1]
Name: "line1"
View the properties of the second membership function.
fis.Outputs(1).MembershipFunctions(2)
ans =
fismf with properties:
Type: "linear"
Parameters: [1 -1]
Name: "line2"
The input membership functions and rules define which of these output functions are expressed and when.
fis.Rules
ans =
1×2 fisrule array with properties:
Description
Antecedent
Consequent
Weight
Connection
Details:
Description
_________________________________
1 "input==low => output=line1 (1)"
2 "input==high => output=line2 (1)"
Plot the input membership functions of this system. The low membership function generally refers to input values less than zero, while high refers to values greater than zero.
plotmf(fis,"input",1)
Plot the output surface for this FIS.
gensurf(fis)

The overall fuzzy system output switches smoothly from the line called line1 to the line called line2.
Alternative Functionality
App
You can interactively create a Sugeno FIS using the Fuzzy Logic Designer or Neuro-Fuzzy Designer apps. You can then export the system to the MATLAB workspace.
Version History
Introduced in R2018bThis function replaces newfis for creating Sugeno fuzzy inference
systems.
MATLAB Command
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.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)