gauss2mf.m

Package [view]: fuzzy.rar
Upload User: hnchenxi
Upload Date: 2008-11-02
Package Size: 1083k
Code Size: 2k
Category: AI-NN-PR
Development Platform: Matlab
  1. function y = gauss2mf(x, params)
  2. %   Two-sided Gaussian membership function.
  3. %
  4. %   Synopsis
  5. %   y = gauss2mf(x,params)
  6. %   y = gauss2mf(x,[sig1 c1 sig2 c2])
  7. %
  8. %   Description
  9. %   The Gaussian function depends on two parameters sig and c as given by:
  10. %
  11. %   GAUSSMF(X, [SIGMA, C]) = EXP(-(X - C).^2/(2*SIGMA^2));
  12. %
  13. %   The function gauss2mf is a combination of two of these. The first function,
  14. %   specified by sig1 and c1, determines the shape of the leftmost curve. the
  15. %   second function determines the shape of the rightmost curve. Whenever c1 <
  16. %   c2, the gauss2mf function reaches a maximum value of 1. Otherwise, the
  17. %   maximum value is less than one. The parameters are listed in the order:
  18. %   [sig1, c1, sig2, c2].
  19. %
  20. %   Examples
  21. %   x = (0:0.1:10)';
  22. %    y1 = gauss2mf(x, [2 4 1 8]);
  23. %    y2 = gauss2mf(x, [2 5 1 7]);
  24. %    y3 = gauss2mf(x, [2 6 1 6]);
  25. %    y4 = gauss2mf(x, [2 7 1 5]);
  26. %    y5 = gauss2mf(x, [2 8 1 4]);
  27. %    plot(x, [y1 y2 y3 y4 y5]);
  28. %    set(gcf, 'name', 'gauss2mf', 'numbertitle', 'off');
  29. %
  30. %   See also DSIGMF, EVALMF, GAUSSMF, GBELLMF, MF2MF, PIMF, PSIGMF,
  31. %   SIGMF, SMF, TRAPMF, TRIMF, ZMF.
  32. %   Ned Gulley, 4-7-94, Roger Jang, 8-25-94
  33. %   Copyright 1994-2002 The MathWorks, Inc. 
  34. %   $Revision: 1.22 $  $Date: 2002/04/02 21:25:14 $
  35. if nargin ~= 2
  36.     error('Two arguments are required by GAUSS2MF.');
  37. elseif length(params) < 4
  38.     error('GAUSS2MF needs four parameters.');
  39. end
  40. sigma1 = params(1);
  41. c1 = params(2);
  42. sigma2 = params(3);
  43. c2 = params(4);
  44. if (sigma1==0) | (sigma2==0),
  45.     error('The sigma value must be non-zero.');
  46. end
  47. c1Index=(x<=c1);
  48. c2Index=(x>=c2);
  49. y1 = exp(-(x-c1).^2/(2*sigma1^2)).*c1Index + (1-c1Index);
  50. y2 = exp(-(x-c2).^2/(2*sigma2^2)).*c2Index + (1-c2Index);
  51. y = y1.*y2;