当前位置:文档之家› matlab计算模糊控制规则表

matlab计算模糊控制规则表

程序运行结果:输出量的模糊集合表U_control =Columns 1 through 8-5.3500 -5.2353 -5.3500 -5.2353 -5.3500 -5.2353 -4.6923 -4.2581-5.0000 -4.9474 -5.0000 -4.9474 -5.0000 -4.9474 -3.8571 -3.7143-4.6923 -4.5217 -4.6923 -4.5217 -4.6923 -4.5217 -3.0526 -2.9302-4.2581 -4.2581 -4.2581 -4.2581 -4.2581 -4.2581 -2.9302 -2.2909-4.0000 -4.0000 -3.7812 -3.7586 -3.4706 -3.4194 -2.4318 -1.7925-4.0000 -4.0000 -3.3636 -3.0769 -2.4667 -2.1176 -1.5000 -1.0476-3.5882 -3.5484 -2.9250 -2.6000 -0.9600 -0.5094 0 0.5094-2.9231 -2.9231 -2.3333 -1.9057 -0.2632 1.0476 1.5000 2.1176-1.8056 -1.7879 -0.5652 -0.3137 0.4400 1.7925 2.4318 3.4194-1.0000 -1.0000 0.2453 0.9385 1.4211 2.2909 2.9302 4.2581-0.5833 -0.6364 0.6875 1.4211 1.9375 2.9302 3.0526 4.5217-0.2333 -0.2414 1.1190 1.7925 2.3571 3.7143 3.8571 4.94740 0 1.2857 2.0000 2.7143 4.2581 4.6923 5.2353Columns 9 through 13-2.7143 -2.0000 -1.2857 0 0-2.3571 -1.7925 -1.1190 0.2414 0.2333-1.9375 -1.4211 -0.6875 0.6364 0.5833-1.4211 -0.9385 -0.2453 1.0000 1.0000-0.4400 -0.0364 0.1600 1.6000 1.63160.2632 1.9057 2.3333 2.9231 2.92310.9600 2.6000 2.9250 3.5484 3.58822.46673.0769 3.36364.0000 4.00003.4706 3.7586 3.78134.0000 4.00004.2581 4.2581 4.2581 4.2581 4.25814.6923 4.5217 4.6923 4.5217 4.69235.0000 4.9474 5.0000 4.9474 5.00005.3500 5.2353 5.3500 5.2353 5.3500Matlab程序:%作业:计算模糊控制规则表clc;clear;%偏差E的隶属函数表E = [1,0.8,0.7,0.4,0.1,0,0,0,0,0,0,0,0;0.2,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0.1,0.3,0.7,1,0.7,0.2,0,0,0,0,0,0;0,0,0,0,0.1,0.6,1,0,0,0,0,0,0;0,0,0,0,0,0,1,0.6,0.1,0,0,0,0;0,0,0,0,0,0,0.2,0.7,1,0.7,0.3,0.1,0;0,0,0,0,0,0,0,0,0.2,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0.1,0.4,0.7,0.8,1] %8*13的矩阵%偏差E变化率EC的隶属函数表EC =[1,0.7,0.3,0,0,0,0,0,0,0,0,0,0;0.3,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0,0.3,0.7,1,0.7,0.3,0,0,0,0,0,0;0,0,0,0,0.3,0.7,1,0.7,0.3,0,0,0,0;0,0,0,0,0,0,0.3,0.7,1,0.7,0.3,0,0;0,0,0,0,0,0,0,0,0.3,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0,0,0.3,0.7,1] %7*13的矩阵%控制量U的隶属函数表,与偏差变化率隶属函数相同U=[1,0.7,0.3,0,0,0,0,0,0,0,0,0,0;0.3,0.7,1,0.7,0.3,0,0,0,0,0,0,0,0;0,0,0.3,0.7,1,0.7,0.3,0,0,0,0,0,0;0,0,0,0,0.3,0.7,1,0.7,0.3,0,0,0,0;0,0,0,0,0,0,0.3,0.7,1,0.7,0.3,0,0;0,0,0,0,0,0,0,0,0.3,0.7,1,0.7,0.3;0,0,0,0,0,0,0,0,0,0,0.3,0.7,1] %7*13的矩阵%控制规则表,E的模糊分割数为8,EC的模糊分割数为7,包含最大可能的规则数为7*8=56rulelist= [1,1,1,1,2,4,4;1,1,1,1,2,4,4;2,2,2,2,4,5,5;2,2,3,4,5,6,6;2,2,3,4,5,6,6;3,3,4,6,6,6,6;4,4,6,7,7,7,7;4,4,6,7,7,7,7] %8*7的矩阵%********计算模糊控制规则表************for iii=1:13for jjj=1:13for ii=1:8for jj=1:7A_rulelist = rulelist(ii,jj); %模糊控制规则简表对应输出语言值%******计算CiA'************A = E(ii,:); %取Ai'C_A = U(A_rulelist,:); %取Ci' %*****RiA=Ai'与Ci‘对应取小的值,RiA为13*13矩阵*******for i=1:13for j=1:13if(A(i) > C_A(1,j))Ra(i,j) = C_A(1,j);elseRa(i,j) = A(i);endendendAA = zeros(1,13); %取AA=A'AA(1,iii) = 1;for i=1:13 %先取小,C'iA=Ai'。

RiAfor j=1:13if(AA(j) > Ra(j,i))A_qux(j,i) = Ra(j,i);elseA_qux(j,i) = AA(j);endendendfor i=1:13 %再取大,求并得到CiA max = A_qux(1,i);for j=1:13if(max < A_qux(j,i))max = A_qux(j,i);endendCiA(i) = max;end%********CiA计算完毕*********%*******同理计算CiB'*************B = EC(jj,:); %取B'C_B = U(A_rulelist,:); %取Cifor i=1:13 %求RiB=Bi'与Ci'取小for j=1:13if(B(1,i) > C_B(1,j))Rb(i,j) = C_B(1,j);elseRb(i,j) = B(1,i);endendendBB = zeros(1,13); %取BB=B'BB(1,jjj) = 1;for i=1:13 %先取小,CiB'=Bi'。

RiB for j=1:13if(BB(j) > Rb(j,i))B_qux(j,i) = Rb(j,i);elseB_qux(j,i) = BB(j);endendendfor i=1:13 %再取大,求并得CiB max = B_qux(1,i);for j=1:13if(max < B_qux(j,i))max = B_qux(j,i);endCiB(i) = max;end%*******计算CiB'完毕****%*******计算Ci'=CiA'交CiB'*********for i=1:13if CiA(i) > CiB(i)Ci(i) = CiB(i);elseCi(i) = CiA(i);endend%*******计算Ci'完毕************C((ii-1)*7+jj,:) = Ci; % 将Ci存到数组C中,C是56*13的数组endend%**根据式Ui=C'=C1'并C2'并……并C56',计算输出量的模糊集合** for i=1:13max = C(1,i);for j=1:56max = C(j,i);endendUi(i) = max;end%*****用重心法进行清晰化运算*********sum_fenz = 0;sum_fenm = 0;for i=1:13sum_fenz = sum_fenz + (i-7)*Ui(i);sum_fenm = sum_fenm + Ui(i);endcore = sum_fenz/sum_fenm;U_control(iii,jjj) = core;endendU_control = round(U_control.*10000)/10000; %对控制量保留小数点后两位display 输出量的模糊集合表U_control。

相关主题