Octave Fuzzy Logic Toolkit: evalmf

### Function Reference: `evalmf`

Function File: y = evalmf (x, param, mf_type)
Function File: y = evalmf (x, param, mf_type, hedge)
Function File: y = evalmf (x, param, mf_type, hedge, not_flag)
Function File: y = evalmf ([x1 x2 ... xn], [param1 ... ], mf_type)
Function File: y = evalmf ([x1 x2 ... xn], [param1 ... ], mf_type, hedge)
Function File: y = evalmf ([x1 x2 ... xn], [param1 ... ], mf_type, hedge, not_flag)

For a given domain, set of parameters, membership function type, and optional hedge and not_flag, return the corresponding y-values for the membership function.

The argument x must be a real number or a non-empty list of strictly increasing real numbers, param must be a valid parameter or a vector of valid parameters for mf_type, and mf_type must be a string corresponding to a membership function type. Evalmf handles both built-in and custom membership functions.

For custom hedges and the four built-in hedges "somewhat", "very", "extremely", and "very very", raise the membership function values to the power corresponding to the hedge.

       (fraction == .05) <=>  somewhat x       <=>  mu(x)^0.5  <=>  sqrt(mu(x))
       (fraction == .20) <=>  very x           <=>  mu(x)^2    <=>  sqr(mu(x))
       (fraction == .30) <=>  extremely x      <=>  mu(x)^3    <=>  cube(mu(x))
       (fraction == .40) <=>  very very x      <=>  mu(x)^4
       (fraction == .dd) <=>  <custom hedge> x <=>  mu(x)^(dd/10)

The not_flag negates the membership function using:

       mu(not(x)) = 1 - mu(x)

To run the demonstration code, type "`demo evalmf`" (without the quotation marks) at the Octave prompt.

### Example: 1

     x = 0:100;
     params = [25 50 75];
     mf_type = 'trimf';
     y = evalmf(x, params, mf_type);
     figure('NumberTitle', 'off', 'Name', "evalmf(0:100, [25 50 75], 'trimf')");
     plot(x, y, 'LineWidth', 2)
     ylim([-0.1 1.1]);
     xlabel('Crisp Input Value', 'FontWeight', 'bold');
     ylabel('Degree of Membership', 'FontWeight', 'bold');
     grid;