資源簡介
用MATLAB編寫的云模型,結合PID控制比較,證明方法的有效性

代碼片段和文件信息
?function?[sysx0strtssimStateCompliance]?=?cloud2013(txuflag)
switch?flag
%?Initialization?%
??case?0
????[sysx0strtssimStateCompliance]=mdlInitializeSizes;
%?Derivatives?%
??case?1
????sys=mdlDerivatives(txu);
%?Update?%
??case?2
????sys=mdlUpdate(txu);
%?Outputs?%
??case?3
????sys=mdlOutputs(txu);
%?GetTimeOfNextVarHit?%
??case?4
????sys=mdlGetTimeOfNextVarHit(txu);
%?Terminate?%
??case?9
????sys=mdlTerminate(txu);
%?Unexpected?flags?%
??otherwise
????DAStudio.error(‘Simulink:blocks:unhandledFlag‘?num2str(flag));
end
function?[sysx0strtssimStateCompliance]=mdlInitializeSizes?%case?0
sizes?=?simsizes;
sizes.NumContStates??=?0;???%連續狀態的數量
sizes.NumDiscStates??=?0;???%離散狀態的數量
sizes.NumOutputs?????=?1;???%輸出的數量
sizes.NumInputs??????=?1;???%輸入的數量
sizes.DirFeedthrough?=?1;???%直接貫通標志
sizes.NumSampleTimes?=?1;???%?采樣時間的數量
sys?=?simsizes(sizes);
x0??=?[];
str?=?[];%總是空
ts??=?[-1?0];
simStateCompliance?=?‘UnknownSimState‘;
function?sys=mdlDerivatives(txu)?%case?1
sys?=?[];
function?sys=mdlUpdate(txu)?%case?2
sys?=?[];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%?
function?sys=mdlOutputs(txu)?%case?3
%%??一維前件云發生器
%?輸入:(期望Ex,熵En,超熵He,特定值a)
%?輸出:(特定值a的確定度,即云滴a縱坐標對應的確定度)
%?u=0.1;
ap=u;aq=u;am=u;
Exp=-1;Enp=1/3;Hep=0.01;
En1p=norm(EnpHep^2);??????????????????%第一條云曲線
uoutp=exp(-((ap-Exp)^2)/(2*(En1p)^2));
Exq=0;Enq=1/4;Heq=0.01;
En1q=norm(EnqHeq^2);?????????????????%第二條云曲線
uoutq=exp(-((aq-Exq)^2)/(2*(En1q)^2));
Exm=1;Enm=1/3;Hem=0.01;
En1m=norm(EnmHem^2);?????????????????%第三條云曲線
uoutm=exp(-((am-Exm)^2)/(2*(En1m)^2));
temp_uout=[uoutp?uoutq?uoutm];
%?temp_uout2=sort(temp_uout);????????????%將三個確定度排序,選出最大的確定度
uouta=temp_uout(1);
uoutb=temp_uout(2);
uoutc=temp_uout(3);
%%?后件云發生器
%?輸入:(期望值Ex熵En,超熵He,確定度uout)
%?輸出:?具有確定度u的云滴b
Ex_x=-1;En_x=1/3;He_x=0.01;%uouta=uouta;
En1_x=norm(En_xHe_x^2);
temp0=log(uouta);?????????????????????????%第a條云曲線
temp1=sqrt(-2*temp0);
b0_x=Ex_x-En1_x*temp1;
b1_x=Ex_x+En1_x*temp1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Ex_y=0;En_y=1/4;He_y=0.01;%uouta=uouta;
En1_y=norm(En_yHe_y^2);
temp0=log(uoutb);????????????????????????%第b條云曲線
temp1=sqrt(-2*temp0);
b0_y=Ex_y-En1_y*temp1;
b1_y=Ex_y+En1_y*temp1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Ex_z=1;En_z=1/3;He_z=0.01;%uouta=uouta;
En1_z=norm(En_zHe_z^2);
temp0=log(uoutc);????????????????????????%第c條云曲線
temp1=sqrt(-2*temp0);
b0_z=Ex_z-En1_z*temp1;
b1_z=Ex_z+En1_z*temp1;
ccc=[uouta?b0_x?b1_x;
?????uoutb?b0_y?b1_y;
?????uoutc?b0_z?b1_z;];
ccc=sortrows(ccc);
cccx1=[ccc(22)?ccc(23)];
%?cccx1=sort(cccx1);
cccx2=[ccc(32)?ccc(33)];
%?cccx2=sort(cccx2);
drop_x1=[cccx1(1)?ccc(21)];
drop_x2=[cccx2(2)?ccc(31)];
Ex_out_fenzi=drop_x1(1)*sqrt(-2*log(drop_x2(2)))+drop_x2(1)*sqrt(-2*log(drop_x1(2)));
Ex_out_fenmu=sqrt(-2*log(drop_x1(2)))+sqrt(-2*log(drop_x2(2)));
Ex_out=(Ex_out_fenzi)/(Ex_out_fenmu)
sys?=?Ex_out;
%%%%%%%%%%%%%%
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3413??2013-06-16?20:29??yun\cloud2013.m
?????文件??????39619??2013-06-16?22:03??yun\cloud_pid_meng.mdl
?????文件??????39684??2013-06-16?20:33??yun\cloud_pid_meng.mdl.autosave
?????目錄??????????0??2014-03-13?20:30??yun
-----------?---------??----------?-----??----
????????????????82716????????????????????4
評論
共有 條評論