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

📄 rgen133.m

📁 一个利用元胞自动机进行生态仿真的matlab程序
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% RGEN133
% Rule generator for 1-dimensional CA
% when number of states is 2 and when number of neighbors is 3
% This script-M file is called by RULEGEN1
%
%	Fist Coded			27  March    1997
%	Last Modefied		28  December    1998
%
%	Copyright (c)
%	T. Suzudo JAERI-CAIL
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cleanup='clear string1 r_hand* x y x0 y0;';

figure(11);
fig11=gcf;

x0=0.1;
y0=0.95;
dx=0.012;
dy=0.05;

% Title
x=x0;
y=y0;
uicontrol(fig11,'Style','text','String','Ecodynamica Rule Generator for 1 dimension K=3 N=3',...
		'Fontsize',12,...
		'foregroundcolor','red',...
		'Units','normalized',...
		'position',[0,y,1,dy]);
%%
%%	General Rules
%%
if tot(1)==3
for i=1:nr
	x=x0+fix((i-1)/9)*0.3;
	y=y0-(rem((i-1),9)+1)*dy;
	uicontrol(fig11,'Style','text','String',decode(i,ns(1)),...
			'Units','normalized',...
   			 'position',[x,y,0.1,dy]);
end
% Rule 1-9
x=x0;
y=y0-dy;
r_hand1=uicontrol(fig11,'Style','edit','String',r_code133(1),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand1,''String''),''%d''); r_code133(1)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand2=uicontrol(fig11,'Style','edit','String',r_code133(2),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand2,''String''),''%d''); r_code133(2)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand3=uicontrol(fig11,'Style','edit','String',r_code133(3),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand3,''String''),''%d''); r_code133(3)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand4=uicontrol(fig11,'Style','edit','String',r_code133(4),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand4,''String''),''%d''); r_code133(4)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand5=uicontrol(fig11,'Style','edit','String',r_code133(5),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand5,''String''),''%d''); r_code133(5)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand6=uicontrol(fig11,'Style','edit','String',r_code133(6),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand6,''String''),''%d''); r_code133(6)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand7=uicontrol(fig11,'Style','edit','String',r_code133(7),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand7,''String''),''%d''); r_code133(7)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand8=uicontrol(fig11,'Style','edit','String',r_code133(8),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand8,''String''),''%d''); r_code133(8)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand9=uicontrol(fig11,'Style','edit','String',r_code133(9),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand9,''String''),''%d''); r_code133(9)=min([ns(1)-1 code]);']);

% Rule 10-18
x=x0+0.3;
y=y0-dy;
r_hand10=uicontrol(fig11,'Style','edit','String',r_code133(10),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand10,''String''),''%d''); r_code133(10)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand11=uicontrol(fig11,'Style','edit','String',r_code133(11),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand11,''String''),''%d''); r_code133(11)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand12=uicontrol(fig11,'Style','edit','String',r_code133(12),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand12,''String''),''%d''); r_code133(12)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand13=uicontrol(fig11,'Style','edit','String',r_code133(13),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand13,''String''),''%d''); r_code133(13)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand14=uicontrol(fig11,'Style','edit','String',r_code133(14),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand14,''String''),''%d''); r_code133(14)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand15=uicontrol(fig11,'Style','edit','String',r_code133(15),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand15,''String''),''%d''); r_code133(15)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand16=uicontrol(fig11,'Style','edit','String',r_code133(16),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand16,''String''),''%d''); r_code133(16)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand17=uicontrol(fig11,'Style','edit','String',r_code133(17),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand17,''String''),''%d''); r_code133(17)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand18=uicontrol(fig11,'Style','edit','String',r_code133(18),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand18,''String''),''%d''); r_code133(18)=min([ns(1)-1 code]);']);

% Rule 19-27
x=x0+0.6;
y=y0-dy;
r_hand19=uicontrol(fig11,'Style','edit','String',r_code133(19),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand19,''String''),''%d''); r_code133(19)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand20=uicontrol(fig11,'Style','edit','String',r_code133(20),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand20,''String''),''%d''); r_code133(20)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand21=uicontrol(fig11,'Style','edit','String',r_code133(21),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand21,''String''),''%d''); r_code133(21)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand22=uicontrol(fig11,'Style','edit','String',r_code133(22),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand22,''String''),''%d''); r_code133(22)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand23=uicontrol(fig11,'Style','edit','String',r_code133(23),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand23,''String''),''%d''); r_code133(23)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand24=uicontrol(fig11,'Style','edit','String',r_code133(24),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand24,''String''),''%d''); r_code133(24)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand25=uicontrol(fig11,'Style','edit','String',r_code133(25),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand25,''String''),''%d''); r_code133(25)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand26=uicontrol(fig11,'Style','edit','String',r_code133(26),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand26,''String''),''%d''); r_code133(26)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand27=uicontrol(fig11,'Style','edit','String',r_code133(27),...
		'Units','normalized',...
		'position',[x+0.1,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand27,''String''),''%d''); r_code133(27)=min([ns(1)-1 code]);']);
%%
%%  Symmetric Rules
%%
elseif tot(1)==4

% Write entries
x0=0.05;
for ii=1:18
	x=x0+fix((ii-1)/6)*0.3;
	y=y0-(rem((ii-1),6)+1)*dy;
	if ii==1 		string1=['000 '];
	elseif ii==2 	string1=['001 100 '];
	elseif ii==3 	string1=['002 200 '];
	elseif ii==4 	string1=['101 '];
	elseif ii==5 	string1=['102 201 '];
	elseif ii==6 	string1=['202 '];
	elseif ii==7 	string1=['010 '];
	elseif ii==8 	string1=['011 110 '];
	elseif ii==9 	string1=['012 210 '];
	elseif ii==10 string1=['111 '];
	elseif ii==11 string1=['112 211 '];
	elseif ii==12 string1=['212 '];
	elseif ii==13 string1=['020 '];
	elseif ii==14 string1=['021 120 '];
	elseif ii==15 string1=['022 220 '];
	elseif ii==16 string1=['121 '];
	elseif ii==17 string1=['122 221 '];
	elseif ii==18 string1=['222 '];
	end
	
	uicontrol(fig11,'Style','text','String',string1,...
			'Units','normalized',...
   			 'position',[x,y,0.25,dy]);
end

% Write Editable Text Area

% Rule 1-6
x=0.3;
y=y0-dy;
r_hand1=uicontrol(fig11,'Style','edit','String',sym_code133(1),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand1,''String''),''%d''); sym_code133(1)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand2=uicontrol(fig11,'Style','edit','String',sym_code133(2),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand2,''String''),''%d''); sym_code133(2)=min([ns(1)-1 code]);']);

y=y-dy;
r_hand3=uicontrol(fig11,'Style','edit','String',sym_code133(3),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand3,''String''),''%d''); sym_code133(3)=min([ns(1)-1 code]);']);

y=y-dy;
r_hand4=uicontrol(fig11,'Style','edit','String',sym_code133(4),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand4,''String''),''%d''); sym_code133(4)=min([ns(1)-1 code]);']);

y=y-dy;
r_hand5=uicontrol(fig11,'Style','edit','String',sym_code133(5),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand5,''String''),''%d''); sym_code133(5)=min([ns(1)-1 code]);']);

y=y-dy;
r_hand6=uicontrol(fig11,'Style','edit','String',sym_code133(6),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand6,''String''),''%d''); sym_code133(6)=min([ns(1)-1 code]);']);
% Rule 7-12
x=0.6;
y=y0-dy;
r_hand7=uicontrol(fig11,'Style','edit','String',sym_code133(7),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand7,''String''),''%d''); sym_code133(7)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand8=uicontrol(fig11,'Style','edit','String',sym_code133(8),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand8,''String''),''%d''); sym_code133(8)=min([ns(1)-1 code]);']);

y=y-dy;
r_hand9=uicontrol(fig11,'Style','edit','String',sym_code133(9),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand9,''String''),''%d''); sym_code133(9)=min([ns(1)-1 code]);']);

y=y-dy;
r_hand10=uicontrol(fig11,'Style','edit','String',sym_code133(10),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand10,''String''),''%d''); sym_code133(10)=min([ns(1)-1 code]);']);

y=y-dy;
r_hand11=uicontrol(fig11,'Style','edit','String',sym_code133(11),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand11,''String''),''%d''); sym_code133(11)=min([ns(1)-1 code]);']);

y=y-dy;
r_hand12=uicontrol(fig11,'Style','edit','String',sym_code133(12),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand12,''String''),''%d''); sym_code133(12)=min([ns(1)-1 code]);']);

% Rule 13-18
x=0.9;
y=y0-dy;
r_hand13=uicontrol(fig11,'Style','edit','String',sym_code133(13),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand13,''String''),''%d''); sym_code133(13)=min([ns(1)-1 code]);']);
y=y-dy;
r_hand14=uicontrol(fig11,'Style','edit','String',sym_code133(14),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand14,''String''),''%d''); sym_code133(14)=min([ns(1)-1 code]);']);

y=y-dy;
r_hand15=uicontrol(fig11,'Style','edit','String',sym_code133(15),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand15,''String''),''%d''); sym_code133(15)=min([ns(1)-1 code]);']);

y=y-dy;
r_hand16=uicontrol(fig11,'Style','edit','String',sym_code133(16),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand16,''String''),''%d''); sym_code133(16)=min([ns(1)-1 code]);']);

y=y-dy;
r_hand17=uicontrol(fig11,'Style','edit','String',sym_code133(17),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand17,''String''),''%d''); sym_code133(17)=min([ns(1)-1 code]);']);

y=y-dy;
r_hand18=uicontrol(fig11,'Style','edit','String',sym_code133(18),...
		'Units','normalized',...
		'position',[x,y,0.05,dy],...
		'CallBack',...
		['code=sscanf(get(r_hand18,''String''),''%d''); sym_code133(18)=min([ns(1)-1 code]);']);

else
	error('Invalid Rule Type');
end
% Determination of the parameters
%
x=0.1;
y=2*dy;
uicontrol(fig11,'Style','push',...
		'Units','normalized',...
		'Position',[x y 0.15 dy],...
		'String','OK',...
		'CallBack',[rc1save 'close(fig11);' cleanup] );
uicontrol(fig11,'Style','push',...
		'Units','normalized',...
		'Position',[x+1/3 y 0.15 dy],...
		'String','Apply',...
		'CallBack',[rc1save 'close(fig11);' cleanup 'rgen133;']);
uicontrol(fig11,'Style','push',...
		'Units','normalized',...
		'Position',[x+2/3 y 0.15 dy],...
		'String','RUN',...
		'CallBack',[rc1save 'close(fig11);' cleanup 'figure(1); runeco1;'] );

⌨️ 快捷键说明

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