📄 s_stcocml2gns.m
字号:
function [sys,x0,str,ts]=s_stcOCML2GNS(t,x,u,flag,sites,ip,a,e,Rb)
% function [sys,x0,str,ts]=stcOCML2GNS(t,x,u,flag,sites,ip,a,e,Rb)
% Simulink block for Logistic Sequence
% Parameters:
% a --Chaotic parameter;
% Rb--Sequence Rate
% Init--Initiate value
% sys--Output Squence of float value
steps=2;
stc=zeros(sites,steps);
% x(:,1)=e*feval(fhandle,a,InitialValue,sites)';
stc(:,1)=rand(sites,1);
% fhandle=@ImprovedLogistic;
fhandle=@Logistic;
stc(1,:)=feval(fhandle,a,rand,steps);
stc(sites,:)=stc(1,:); % Boundary conditions
i=0;
switch flag,
case 0
[sys,x0,str,ts]=mdlInitializeSizes(Rb);
case 2
sys=mdlUpdates(t,x,u,sites,a,e,stc,i,fhandle);
case 3
sys=mdlOutputs(t,x,u,sites,a,e,stc,i,fhandle,ip);
% case 4
% sys=mdlGetTimeOfNextVarHit(t,x,u,Rb);
case {1,4,9}
sys=[];
otherwise
error(['Unhandled flag =',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes(Rb)
sizes=simsizes;
sizes.NumContStates=0;
sizes.NumDiscStates=1;
sizes.NumOutputs=1;
sizes.NumInputs=0;
sizes.DirFeedthrough=1;
sizes.NumSampleTimes=1;
sys=simsizes(sizes);
x0=rand;
str=[];
ts=[1/Rb 1/2/Rb];
function sys=mdlUpdates(t,x,u,sites,a,e,stc,i,fhandle)
for i=2:sites-1
stc(i,2)=(1-e)*feval(fhandle,a,stc(i,1),1)+e*feval(fhandle,a,stc(i-1,1),1);
end
stc(:,1)=stc(:,2);
sys=x;
function sys=mdlOutputs(t,x,u,sites,a,e,stc,i,fhandle,ip)
for i=2:sites-1
stc(i,2)=(1-e)*feval(fhandle,a,stc(i,1),1)+e*feval(fhandle,a,stc(i-1,1),1);
end
sys=sum(stc(1:ip:sites,2));
% function sys=mdlGetTimeOfNextVarHit(t,x,u,Rb)
% sys=t+1/Rb;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -