Function Reference: gauss2mf

Function File: y = gauss2mf (x, params)
Function File: y = gauss2mf ([x1 x2 ... xn], [sig1 c1 sig2 c2])

For a given domain x and parameters params (or [sig1 c1 sig2 c2]), return the corresponding y values for the two-sided Gaussian composite membership function. This membership function is a smooth curve calculated from two Gaussian membership functions as follows:

Given parameters sig1, c1, sig2, and c2, that define two Gaussian membership functions, let:

     f1(x) = exp((-(x - c1)^2)/(2 * sig1^2))    if x <= c1
             1                                  otherwise

     f2(x) = 1                                  if x <= c2
             exp((-(x - c2)^2)/(2 * sig2^2))    otherwise
 

Then gauss2mf is given by:

     f(x) = f1(x) * f2(x)
 

The argument x must be a real number or a non-empty vector of strictly increasing real numbers, and sig1, c1, sig2, and c2 must be real numbers. Gauss2mf always returns a continuously differentiable curve with values in the range [0, 1].

If c1 < c2, gauss2mf is a normal membership function (has a maximum value of 1), with the rising curve identical to that of f1(x) and a falling curve identical to that of f2(x), above. If c1 >= c2, gauss2mf returns a subnormal membership function (has a maximum value less than 1).

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

See also: dsigmf, gaussmf, gbellmf, pimf, psigmf, sigmf, smf, trapmf, trimf, zmf

Example: 1

 

 x = -10:0.2:10;
 params = [3 0 1.5 2];
 y1 = gauss2mf(x, params);
 params = [1.5 0 3 2];
 y2 = gauss2mf(x, params);
 params = [1.5 2 3 0];
 y3 = gauss2mf(x, params);
 figure('NumberTitle', 'off', 'Name', 'gauss2mf demo');
 plot(x, y1, 'r;params = [3 0 1.5 2];', 'LineWidth', 2);
 hold on ;
 plot(x, y2, 'b;params = [1.5 0 3 2];', 'LineWidth', 2);
 hold on ;
 plot(x, y3, 'g;params = [1.5 2 3 0];', 'LineWidth', 2);
 ylim([-0.1 1.1]);
 xlabel('Crisp Input Value', 'FontWeight', 'bold');
 ylabel('Degree of Membership', 'FontWeight', 'bold');
 grid;
 hold;

hold is now off for current axes
                    
plotted figure