⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mfcreate.m

📁 模糊神经网络采用matlab编程 o install NEFCON follow these steps: 1. Unpack the tar file NEFCON.TAR into your MA
💻 M
字号:
function [fismat] = mfcreate(fismat, vartype, name, num, mfType, range);  
  
%MFCREATE Create membership functions and input/output variables. 
%     
%         Currently only mfTypes trimf, trapmf and gaussmf are supported. 
% 
%         For example: 
%  
%              fismat = MFCREATE(fismat, 'input', 'level', 5, 'trimf', [-1 1])  
% 
%         Inserts the input fuzzy set 'level' into fismatrix and creates  
%         5 equally spaced/overlapped membership functions in range [-1,1]. 
%         The outer ones will be changed to trapezoid MF's, the inner ones  
%         will be triangular MF's. (Output variables: all trimf) 
% 
%         See also NEFCON, NEFINIT and the Fuzzy Toolbox function FUZZY. 
  
% Author: Andreas Nuernberger, TU Braunschweig, August 1996; a.nuernberger@tu-bs.de
%         contact: Ludger Merz, DASA-Airbus GmbH, Hamburg; ludger.merz@airbus.de

%#realonly  
mbintscalar(num);  
  
if nargin ~= 6,  
	error('Too many or too few input arguments!');  
end  
  
if num <= 1,  
	error('Error: Num <= 1!');  
end  
  

mfnames = ['ze                    ';...
           'nepo                  ';...
		   'nezepo                ';...
		   'nenzpzpo              ';...
		   'nenmzepmpo            ';...
		   'nenmnzpzpmpo          ';...
		   'nenmnszepspmpo        ';...
		   'nenmnsnzpzpspmpo      ';...
		   'nbnenmnszepspmpopb    ';...
		   'nbnenmnsnzpzpspmpopb  ';...
		   'nbnenmnsnzzepzpspmpopb';...
          ];

if strcmp(mfType, 'trimf') & strcmp(vartype, 'input') 
    d = (range(2) - range(1)) / (num+1);  
else 
    d = (range(2) - range(1)) / (num -1);  
end  
 
fismat = addvar(fismat, vartype, name, range);  
varidx = getfidx(fismat, vartype, name);  
for i=1:num,  
	if num > size(mfnames,1)
    	mfName = ['mf' int2str(i)];  
	else
    	mfName = mfnames(num,2*i-1:2*i);  
	end
    mid = range(1) + ((i-1)/(num-1)) * (range(2) - range(1)); 
    if strcmp(mfType, 'trimf') & strcmp(vartype, 'input') 
        mid = range(1) + (i/(num+1)) * (range(2) - range(1)); 
    else  
        mid = range(1) + ((i-1)/(num-1)) * (range(2) - range(1)); 
    end 
    if (i==1 | i==num) & strcmp(mfType, 'trimf') & strcmp(vartype, 'input') 
        if i == 1 
            fismat = addmf(fismat, vartype, varidx, mfName, 'trapmf', [(mid-2*d) (mid-d) (mid) (mid+d)]);  
        else 
            fismat = addmf(fismat, vartype, varidx, mfName, 'trapmf', [(mid-d) (mid) (mid+d) (mid+2*d)]);  
        end 
    elseif strcmp(mfType, 'trimf') 
        fismat = addmf(fismat, vartype, varidx, mfName, 'trimf', [(mid-d) mid (mid+d)]);  
    elseif strcmp(mfType, 'gaussmf') 
        fismat = addmf(fismat, vartype, varidx, mfName, 'gaussmf', [(d/2.35) mid]); 
    else 
        error('Unsupported mfType.');  
    end 
end  
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -