Take a discretized fuzzy set (i.e. a vector of membership degrees and a vector of numeric values that correspond to that degrees) and perform a selected type of defuzzification, i.e. conversion of the fuzzy set into a single crisp value.
defuzz(
degrees,
values,
type = c("mom", "fom", "lom", "dee", "cog", "expun", "expw1", "expw2")
)
A defuzzified value.
A fuzzy set in the form of a numeric vector of membership
degrees of values provided as the values
argument.
A universe for the fuzzy set.
Type of the requested defuzzification method. The possibilities are:
'mom'
: Mean of Maxima - maximum membership degrees are
found and a mean of values that correspond to that degrees is returned;
'fom'
: First of Maxima - first value with maximum membership
degree is returned;
'lom'
: Last of Maxima - last value with maximum membership degree
is returned;
'dee'
: Defuzzification of Evaluative Expressions - method used
by the pbld()
inference mechanism that combines the former three
approaches accordingly to the shape of the degrees
vector:
If degrees
is non-increasing then 'lom'
type is used,
if it is non-decreasing then 'fom'
is applied, else 'mom'
is selected;
'cog'
: Center of Gravity - the result is a mean of values
weighted by degrees
;
'exp1'
: Experimental 1.
Michal Burda
Function converts input fuzzy set into a crisp value. The definition of
input fuzzy set is provided by the arguments degrees
and
values
. These arguments should be numeric vectors of the same length,
the former containing membership degrees in the interval \([0, 1]\) and
the latter containing the corresponding crisp values: i.e., values[i]
has a membership degree degrees[i]
.
fire()
, aggregateConsequents()
, perceive()
, pbld()
, fcut()
, lcut()
# returns mean of maxima, i.e., mean of 6, 7, 8
defuzz(c(0, 0, 0, 0.1, 0.3, 0.9, 0.9, 0.9, 0.2, 0),
1:10,
type='mom')
Run the code above in your browser using DataLab