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

📄 nefcrea.m

📁 模糊神经网络采用matlab编程 o install NEFCON follow these steps: 1. Unpack the tar file NEFCON.TAR into your MA
💻 M
📖 第 1 页 / 共 2 页
字号:
function nefcrea(num, gen, contr)   
   
%NEFCREA Create new nefcon simulink blocks and Signal-Generators  
%   num = number of inputs  
%   gen = selected generator (1 Nefcon, 2 bounded)  
%   contr = selected controller (1 nefcon, 2 fuzzy)  
%  
% See also NEFGUI and NEFCON.  
   
% Author: Andreas Nuernberger, TU Braunschweig, August 1996; a.nuernberger@tu-bs.de
%         contact: Ludger Merz, DASA-Airbus GmbH, Hamburg; ludger.merz@airbus.de

% get actual name   
sys = get_param;   
  
if get_param([sys,'/','Signal'], 'position') == []   
    add_block('built-in/To Workspace',[sys,'/','Signal'])
    set_param([sys,'/','Signal'],...
		'BackGround',2,...
		'mat-name','nef_u',...
		'buffer','10000',...
		'Mask Display','nef_u',...
		'position',[300,30,360,10])
end

if get_param([sys,'/','Response'], 'position') == []   
    add_block('built-in/To Workspace',[sys,'/','Response'])
    set_param([sys,'/','Response'],...
		'BackGround',2,...
		'mat-name','nef_y',...
		'buffer','10000',...
		'Mask Display','nef_y',...
		'position',[300,80,360,60])
end

%     Subsystem   
subname = 'Fuzzi';   
   
% find existing systems   
nof = 0;   
if get_param([sys,'/',subname], 'position') ~= []   
	nof = 1;   
%	disp('NEFCON: System already exists.');
	% Generate a beep   
%	fprintf('\a')   
else   

while get_param([sys,'/',subname, num2str(nof)], 'position') ~= []   
	nof = nof + 1;   
end   
if nof > 0   
	subname = [subname, num2str(nof)];   
end   
   
% create new subsystem   
y = 20;   
new_system([sys,'/',subname])   
   
add_block('built-in/Mux',[sys,'/',subname,'/Mux'])   
set_param([sys,'/',subname,'/Mux'],...   
		'inputs',num2str(num),...   
		'position',[205,y+30,235,y+45*num+45])   
   
for i=1:num,   
    add_block('built-in/Inport',[sys,'/',subname,'/in_',num2str(i)])   
    set_param([sys,'/',subname,'/in_',num2str(i)],...   
		'Port',num2str(i),...   
		'position',[35,y+i*45,55,y+20+i*45])   
   
    add_block('built-in/Gain',[sys,'/',subname, '/GainIn', num2str(i)])   
    set_param([sys,'/',subname, '/GainIn', num2str(i)],...   
		'Gain','1',...  
    	'position',[80,y+i*45,100,y+20+i*45])   
  
    add_block('built-in/Saturation',[sys,'/',subname,'/Saturation',num2str(i)])   
    set_param([sys,'/',subname,'/Saturation',num2str(i)],...   
		       'Lower Limit','-1',...   
		       'Upper Limit','1',...   
		       'position',[130,y+i*45,155,y+20+i*45])   
   
    autoline([sys,'/',subname],['in_',num2str(i), '/1'], ...   
                               ['GainIn', num2str(i), '/1']);   
    autoline([sys,'/',subname],['GainIn', num2str(i), '/1'], ...   
                               ['Saturation',num2str(i), '/1']);   
	autoline([sys,'/',subname],['Saturation',num2str(i), '/1'], ...   
	                           ['Mux/',num2str(i)]);   
end;   
   
% add input if bounded signal generator is used   
%if gen == 2   
if 0   
    add_block('built-in/Inport',[sys,'/',subname,'/in_',num2str(num+1)])   
    set_param([sys,'/',subname,'/in_',num2str(num+1)],...   
		'Port',num2str(num+1),...   
		'position',[35,y+(num+1)*45,55,y+20+(num+1)*45])   
    if contr == 1   
        set_param([sys,'/',subname,'/Mux'],...   
	        	'inputs',num2str(num+1));   
        autoline([sys,'/',subname],['in_',num2str(num+1), '/1'], ...   
                               ['Mux/',num2str(num+1)]);   
    end   
end       
   
   
mid = (y+45 + y+45*num+20)/2;   
   
   
if contr == 1      % nefcon system   
    add_block('built-in/S-Function',[sys,'/',[subname,'/Nefcon ',13,'Lern-System']])   
    set_param([sys,'/',[subname,'/Nefcon ',13,'Lern-System']],...   
    	       'function name','snefcon',...   
    	       'position',[280,mid-20,335,mid+20])   
    add_block('built-in/Demux',[sys,'/',subname,'/Demux'])   
    set_param([sys,'/',subname,'/Demux'],...   
    	'outputs','3',...   
    	'position',[350,mid-20,385,mid+20])   
    add_block('built-in/Gain',[sys,'/',subname, '/GainOut'])   
    set_param([sys,'/',subname, '/GainOut'],...   
		'Gain','1',...  
    	'position',[410,mid-30,430,mid-50])   
    add_block('built-in/Outport',[sys,'/',subname,'/out_1'])   
    set_param([sys,'/',subname,'/out_1'],...   
    	'position',[460,mid-30,480,mid-50])   
    add_block('built-in/Stop Simulation',[sys,'/',subname,'/Stop Simulation'])   
    set_param([sys,'/',subname,'/Stop Simulation'],...   
    	'position',[440,mid+70,480,mid+50])   
    add_block('built-in/Scope',[sys,'/',subname,'/Error'])  
    set_param([sys,'/',subname,'/Error'],...  
    		'BackGround',3,...  
    		'Vgain','2.000000',...  
    		'Hgain','5.000000',...  
    		'Vmax','4.000000',...  
    		'Hmax','10.000000',...  
        	'position',[460,mid-10,480,mid+10])   
    add_block('built-in/Mux',[sys,'/',subname,'/Mux1'])   
    set_param([sys,'/',subname,'/Mux1'],...   
		'inputs','2',...   
                   	'position',[410,mid-10,440,mid+10])   
  
    autoline([sys,'/',subname],['Mux/1'], ...   
                              ['Nefcon ',13,'Lern-System/1']);   
    autoline([sys,'/',subname],['Nefcon ',13,'Lern-System/1'], ...   
                               ['Demux/1']);   
    autoline([sys,'/',subname],'Demux/1', 'GainOut/1');   
    autoline([sys,'/',subname],'GainOut/1', 'out_1/1');   
    autoline([sys,'/',subname],'Demux/2', 'Mux1/1');   
    autoline([sys,'/',subname],'Mux1/1', 'Error/1');   
    autoline([sys,'/',subname],'Demux/3', 'Stop Simulation/1');   
  
else   
   add_block('built-in/Outport',[sys,'/',subname,'/out_1'])   
   set_param([sys,'/',subname,'/out_1'],...   
   		'position',[400,mid-10,420,mid+10])   
   add_block('built-in/S-Function',[sys,'/',[subname,'/Fuzzy Logic',13,'Controller']])   
   set_param([sys,'/',[subname,'/Fuzzy Logic',13,'Controller']],...   
		'function name','sffis',...   
		'parameters','fismatrix',...   
		'Mask Display','plot(0, -0.3, 6, -0.3, 0, 1.2, 6, 1.2, [0 6], [0 0], [1 2 3],[0 1 0],[2 3 4],[0 1 0],[3 4 5],[0 1 0])')   
   set_param([sys,'/',[subname,'/Fuzzy Logic',13,'Controller']],...   
		'Mask Type','FIS',...   
		'Mask Dialogue','FIS|FIS Matrix:',...   
		'Mask Translate','fismatrix = @1;',...   
		'Mask Help','Fuzzy Inference System',...   
		'Mask Entries','fismat\/')   
   set_param([sys,'/',[subname,'/Fuzzy Logic',13,'Controller']],...   
		'position',[280,mid-20,335,mid+20])   
   autoline([sys,'/',subname],['Fuzzy Logic',13,'Controller/1'], ...   
                               ['out_1/1']);   
   autoline([sys,'/',subname],['Mux/1'], ...   
                              ['Fuzzy Logic',13,'Controller/1']);   
end   
   
   
%     Finished composite block subname.   
set_param([sys,'/',subname],...   
		'Mask Display','NEFCON\nFuzzy')   
   
set_param([sys,'/',subname],...   
		'position',[160,10,220,100],...   
		'BackGround',2,...   
		'hide name',0,...   
		'name','Fuzzy_Controller by Nefcon')   
   
contrName = subname;   
   
   
%open_system([sys,'/',subname]);   
   
drawnow   

end
   
% -------------------------------------------------------------------   
% Nefcon-SigGen   
% -------------------------------------------------------------------   
subname = 'Nefcon-SigGen';   
   
if gen==1 & get_param([sys,'/',subname], 'position') == []   % look if generator exists already...   
    new_system([sys,'/',subname])   
    set_param([sys,'/',subname],'Location',[575,561,1118,865])   
   
    add_block('built-in/Signal Generator',[sys,'/',[subname, '/Signal Gen.',13,'f_rad=2*pi*f_Hz']])   
    set_param([sys,'/',[subname, '/Signal Gen.',13,'f_rad=2*pi*f_Hz']],...   
		'Peak','1.000000',...   
		'Peak Range','5.000000',...   
		'Freq','0.050000',...   
		'Freq Range','0.500000',...   
		'Wave','Sqr',...   
		'Units','Rads')   
    set_param([sys,'/',[subname, '/Signal Gen.',13,'f_rad=2*pi*f_Hz']],...   
		'position',[70,59,110,81])   
   
    add_block('built-in/Constant',[sys,'/',subname, '/Constant'])   
    set_param([sys,'/',subname, '/Constant'],...   
		'position',[155,125,175,145])   
   
    add_block('built-in/Gain',[sys,'/',subname, '/Gain1'])   
    set_param([sys,'/',subname, '/Gain1'],...   
		'position',[355,119,410,151])   
  
    add_block('built-in/Sum',[sys,'/',subname, '/Sum'])   
    set_param([sys,'/',subname, '/Sum'],...   
		'inputs','+++',...   
		'position',[290,38,320,232])   
  
    add_block('built-in/Outport',[sys,'/',subname, '/out_1'])   

⌨️ 快捷键说明

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