matlab计算模糊控制表
- 格式:doc
- 大小:35.00 KB
- 文档页数:8
模糊控制在matlab中的实例模糊控制(模糊逻辑控制)是一种基于模糊数学理论的控制方法,它可以用于控制系统的稳定性、精度和响应速度等方面的优化。
在MATLAB 中,可以使用模糊逻辑工具箱(FLUS)来应用模糊控制。
以下是一个简单的实例,展示了如何使用 MATLAB 中的模糊逻辑工具箱来对温度控制系统进行控制:首先,我们需要创建一个温度控制系统,该系统将使用模糊控制来控制传感器的读数。
假设我们有四个传感器,分别为温度传感器、湿度传感器、压力和传感器,每个传感器读数为实数。
```matlab% 创建模型T = [120 100 80 50]; % 温度控制器输出R1 = [1.2 0.8 0.4 0.2]; % 湿度控制器输出R2 = [0.9 0.1 0.3 0.5]; % 压力控制器输出R3 = [1.4 0.6 0.2 0.1]; % 传感器误差P1 = [125 125 125 125]; % 温度控制器输入P2 = [100 100 90 80]; % 湿度控制器输入P3 = [85 85 80 75]; % 压力控制器输入F1 = [0.3 0.2 0.1 0.1]; % 温度控制器输出F2 = [0.4 0.3 0.2 0.1]; % 湿度控制器输出F3 = [0.5 0.4 0.3 0.1]; % 压力控制器输出y1 = [100 85 75 60]; % 实际温度y2 = [120 95 80 70]; % 实际湿度y3 = [135 110 90 80]; % 实际压力% 创建模糊控制器go1 = @(t,u,v) if t > 100 then ((1-v)*F1 + v*R1 +(1+v)*R2)/(1-v)*y1 else 0;go2 = @(t,u,v) if t < 50 then ((1-v)*F3 + v*R1 +(1+v)*R2)/(1-v)*y2 else 0;go3 = @(t,u,v) if t == 0 then ((1-v)*F1 + v*R1 +(1+v)*R2)/(1-v)*y3 else 0;% 创建模糊控制器的优化器var = [0 0 0 0];go1(0,:,:) = var;matlab.模糊控制.优化器.LevenbergMarquardt(var,go1);% 运行模糊控制器[t,u,v] = ode45(go1,[0 1],[120 100 80 50],y1);% 输出结果disp(["实际温度:" num2str(t)]);disp(["实际湿度:" num2str(u)]);disp(["实际压力:" num2str(v)]);```在这个例子中,我们使用 MATLAB 中的 ode45 工具箱来拟合温度控制器和湿度控制器的输出响应函数。
引用如何在MATLAB下把模糊推理系统转化为查询表(原创)Matlab 2009-12-26 22:05:01 阅读161 评论0 字号:大中小订阅引用foundy的如何在MATLAB下把模糊推理系统转化为查询表(原创)李会先摘要:该文论述了将MATLAB下调试成功的模糊逻辑转换为查询表的一种技巧,这种技巧不直接使用MATLAB的矩阵计算方法,操作者多数情况下只需点击鼠标就可完成任务,效率比较高,该方法使用MATLAB下的系统测试工具,收集构造查询表所需的数据资料,文中以MATLAB中的水位模糊控制演示模型为例,把该系统的模糊控制推理模块用在其基础上生成的查询表代替后再进行水位控制仿真,控制效果与模糊推理模块在线推理控制是一致的。
关键词:模糊控制;查询表;MATLAB;Simulink; 系统测试Abstract:This article discuss a skill that make a translation from fuzzy logic system to Lookup Table in Matlab,It doesn't use matrix computing, user need only to drag and draw the mouse completing this task,It's a efficiency method which to collect data for Lookup Table construction from a fuzzy controller by SystemTest Toolbox in Matlab,in the article,I will discuss the skill by a demo which is the Water Level Control in Tank in the Fuzzy logic Toolbox,at last,I simulate the Water Control in Tank instead of the Fuzzy Controller with the Lookup Table which I have constructed,the test results is verywell.Keywords: Fuzzy Logic, Matlab,Simulink,Lookup Table,SystemTest1. 引言在MATLAB/Simulink下,构建模糊逻辑系统模型和调试其推理规则都是很方便的[3][4],我们当然不希望在MATLAB下的仿真工作仅仅用于仿真目的,如果实际产品设计能继承仿真的工作成果,将事半功倍。
实例:MATLABSimulink实现模糊PID控制被控对象:Ts = 0.1;Plant = c2d(zpk([],[-1 -3 -5],1),Ts); %零极点模型,并离散化根据对象Plant,确定PID参数:C0 = pid(1,1,1,'Ts',Ts,'IF','B','DF','B'); % 定义PID结构C = pidtune(Plant,C0) %对PID参数进行优化[Kp, Ki, Kd] = piddata(C); % 输出参数得出PID结构及其参数值:接下来根据求出的PID参数确定GCE、GE 、GCU 和GU的取值:由模糊PID控制结构可得如下等式:Kp = GCU * GCE + GU * GEKi = GCU * GEKd = GU * GCE形式转换如下:GE = 10; %根据模糊控制的论语直接确定GCE = GE*(Kp-sqrt(Kp^2-4*Ki*Kd))/2/Ki=3.4285;GCU = Ki/GE=2.8631;GU = Kd/GCE=2.0138;模糊PID控制系统结构(连续模糊控制器):图中的离散时间积分和微分块直接调用。
模糊控制器输入输出结构:模糊控制器输入输出隶属度函数:模糊控制器规则表:模糊控制器规则曲面图:连续模糊PID控制器,仿真结果:模糊PID控制系统结构(离散模糊控制器):离散模糊控制器查询表:离散模糊PID控制器,仿真结果:主要代码如下:(1)、对象模型:Ts = 0.1;Plant = c2d(zpk([],[-1 -3 -5],1),Ts);(2)、PID参数优化:C0 = pid(1,1,1,'Ts',Ts,'IF','B','DF','B');C = pidtune(Plant,C0)[Kp, Ki, Kd] = piddata(C);(3)、比例因子确定:GE = 10;GCE = GE*(Kp-sqrt(Kp^2-4*Ki*Kd))/2/Ki;GCU = Ki/GE;GU = Kd/GCE;(4)、连续模糊PID控制建立:FIS = newfis('FIS','sugeno');%%% 定义输入E:FIS = addvar(FIS,'input','E',[-10 10]);FIS = addmf(FIS,'input',1,'Negative','gaussmf',[7 -10]); FIS = addmf(FIS,'input',1,'Positive','gaussmf',[7 10]); %%% 定义输入CE:FIS = addvar(FIS,'input','CE',[-10 10]);FIS = addmf(FIS,'input',2,'Negative','gaussmf',[7 -10]); FIS = addmf(FIS,'input',2,'Positive','gaussmf',[7 10]); %%% 定义输出u:FIS = addvar(FIS,'output','u',[-20 20]);FIS = addmf(FIS,'output',1,'Min','constant',-20);FIS = addmf(FIS,'output',1,'Zero','constant',0);FIS = addmf(FIS,'output',1,'Max','constant',20);% 定义规则:%% # If |E| is Negative and |CE| is Negative then |u| is -20 % # If |E| is Negative and |CE| is Positive then |u| is 0% # If |E| is Positive and |CE| is Negative then |u| is 0% # If |E| is Positive and |CE| is Positive then |u| is 20 ruleList = [1 1 1 1 1;... % Rule 11 2 2 1 1;... % Rule 22 1 2 1 1;... % Rule 32 23 1 1]; % Rule 4FIS = addrule(FIS,ruleList);gensurf(FIS) %生成模糊控制器(5)、离散模糊控制器查询表:Step = 2;E = -10:Step:10;CE = -10:Step:10;N = length(E);LookUpTableData = zeros(N);for i=1:Nfor j=1:N% compute output u for each combination of break points LookUpTableData(i,j) = evalfis([E(i) CE(j)],FIS);endend。
clc;clear;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 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*13U=[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*13rulelist= [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*7for iii=1:13 %偏差E的模糊值控制for jjj=1:13 %偏差率EC的模糊值控制for ii=1:8 %偏差E的模糊规则控制for jj=1:7 %偏差变化率EC的模糊规则控制A_rulelist = rulelist(ii,jj); %查模糊规则表%******计算C1A'************A = E(ii,:); %取A'C_A = U(A_rulelist,:); %取Cifor i=1:13 %求R1Afor 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,0,0,0,0,0,0,0,0,0,0,0,0]; %AA(1,iii) = E(ii,iii);AA(1,iii) = 1;for i=1:13 %先取小for 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 %再取大,,,求和CiAmax = 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,:); %取Ci ??? for i=1:13 %求R1Bfor 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,0,0,0,0,0,0,0,0,0,0,0,0]; %BB(1,jjj) = EC(jj,jjj);BB(1,jjj) = 1;for i=1:13 %先取小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 %再取大,,,求和CiAmax = B_qux(1,i);for j=1:13if(max < B_qux(j,i))max = B_qux(j,i);endendend%*******计算CiB'完毕****%*******计算C1'=CiA'交CiB'*********for i=1:13if CiA(i) > CiB(i)Ci(i) = CiB(i);elseCi(i) = CiA(i);endend%*******计算C1'完毕************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; %对控制量保留小数点后两位。
0 引言模糊控制隶属于智能控制,是一种基于规则的近似推理的非线性智能控制。
如果说,传统的控制方式需要被控对象精确的数学模型,而模糊控制则是以人类智能活动的角度为基础实施控制,因此,在实际中,传统控制方法无能为力的非线性场合,模糊控制却能起到很好的控制作用。
因此,实际应用中,由于系统复杂、很难建立精确数学模型的非线性系统,模糊控制已经成为一种最有效的控制方法。
模糊控制规则表是模糊控制的核心,其描述的是输入的偏差、偏差变化量与控制的输出之间的对应关系,采用手工计算方式,量大且费时;采用在线计算方式,往往又影响系统被控对象的实时控制效果。
因此,在应用模糊控制时,首先针对输入的不同组合,采用离线计算方式算出相应的控制输出量,构成模糊控制规则查询表,实际控制时再将模糊控制规则查询表嵌入在各种控制平台,如单片机、PLC 等,实现离线计算、在线查表,这样,一方面减少了模糊控制的在线运算量,同时又实现了模糊控制的实时控制效果。
实际应用中发现,对模糊控制规则表的生成,在离散论域分档较少的条件下,多采用手工计算,而在离散论域分档较多的条件下,手工计算量太大,用MATLAB 软件编程实现,对MATLAB 软件的编程能力要求又较高,因此,本文以二维温度模糊控制规则查询表的生成为例来说明如何简单有效的利用MATLAB 软件生成模糊控制规则离线查询表。
1 实例分析应用MATLAB2014a 软件说明生成模糊规则离线查询表的过程。
设二维温度模糊控制器[1 2]的输入为温度偏差E 和温度偏差变化率EC,输出为温控器输出电压U。
模糊控制器模型见图1。
2 模糊控制规则离线查询表生成步骤[34 5](1)利用模糊逻辑控制工具箱生成温度模糊推理系统在MATLAB2014a 命令窗口中输入fuzzy 打开模糊控制工具箱,编辑输入输出变量的隶属度函数和模糊控制规则,然后将模糊推理系统保存为mytest.fis。
设温度偏差E、偏差变化率EC 和温控器输出电压U 的模糊论域为[-6 6],三者的语言变量赋值均为{NB,NM,NS,Z,PS,PM,PB},各语言值的隶属函数均采用三角函数,如图2所示,并根据温度模糊控制规则表1逐条添加模糊控制规则,清晰化采用加权平均法。
题目1:求取模糊控制表(课本62-67页,matlab编程求解)解:MATLAB编程如下:%实现功能:计算模糊控制表clcclear%x的隶属度表,其中x代表的是误差eX=[1.0 0.8 0.7 0.4 0.1 zeros(1,8);0.2 0.7 1.0 0.7 0.3 zeros(1,8);0 0.1 0.3 0.7 1.0 0.7 0.2 zeros(1,6);zeros(1,4) 0.1 0.6 1.0 zeros(1,6);zeros(1,6) 1.0 0.6 0.1 zeros(1,4);zeros(1,6) 0.2 0.7 1.0 0.7 0.3 0.1 0;zeros(1,8) 0.2 0.7 1.0 0.7 0.3;zeros(1,8) 0.1 0.4 0.7 0.8 1.0];%y的隶属度表,其中y表示的是误差的导数Y=[1.0 0.7 0.3 zeros(1,10);0.3 0.7 1.0 0.7 0.3 zeros(1,8);0 0 0.3 0.7 1.0 0.7 0.3 zeros(1,6);zeros(1,4) 0.3 0.7 1.0 0.7 0.3 zeros(1,4);zeros(1,6) 0.3 0.7 1.0 0.7 0.3 0 0;zeros(1,8) 0.3 0.7 1.0 0.7 0.3;zeros(1,10) 0.3 0.7 1];%z的隶属度表,其中z表示的是控制量uZ=Y;%模糊控制规则表%其中: 1代表NB,2代表NM,3代表NS% 4代表ZE,5代表PS,6代表PM,7代表PBrule=[1 1 1 1 2 4 4;1 1 1 12 4 4;2 2 2 2 4 5 5;2 23456 6;2 23456 6;3 34 6 6 6 6;4 4 6 7 7 7 7;4 4 6 7 7 7 7];Set=[-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6]; %模糊集合control_data=[]; %control_data待求的模糊控制表for i=1:13 %控制模糊表的行变量control=[];for j=1:13 %控制模糊表的列变量x0=Set(i);y0=Set(j);CCC=[]; %存放Ci;CCC矩阵将来存放的是56*13维的矩阵for m=1:8 %模糊控制规则表的行变量Ai=X(m,:); %Ai为列向量for n=1:7 %模糊控制规则表的列变量Bi=Y(n,:); %Bi为列向量Ci=Z(rule(m,n),:); %模糊控制规则表的控制变量%得到RiA矩阵RiA=zeros(13,13);for p=1:13for q=1:13RiA(p,q)=min(Ai(p),Ci(q));endend%AA表示A' 矩阵AA=zeros(1,13);[a1,b1]=find(x0==Set);AA(a1,b1)=1;%最小最大原则求取CiACIA_temp=zeros(13,13);for ii=1:13CIA_temp(:,ii)=min(AA',RiA(:,ii));%先取小endCIA=max(CIA_temp);%再取大%%%%%%%%%%%%%%%%%%%%%%%%%得到RiB矩阵RiB=zeros(13,13);for p=1:13for q=1:13RiB(p,q)=min(Bi(p),Ci(q));endend%BB表示B' 矩阵BB=zeros(1,13);[a2,b2]=find(y0==Set);BB(a2,b2)=1;%最小最大原则求取CiBCIB_temp=zeros(13,13);for ii=1:13CIB_temp(:,ii)=min(BB',RiB(:,ii));endCIB=max(CIB_temp);%求CIA和CIB的交C=min(CIA,CIB);CCC=[CCC;C];endend%求出56个Ci的并C_max=max(CCC);%利用重心法解模糊temp=C_max.*Set;control_temp=sum(temp)/sum(C_max);control=[control,control_temp];endcontrol_data=[control_data;control];enddisp('模糊控制表如下:');control_data=roundn(control_data,-2) %保留2位小数且四舍五入fid=fopen('kongzhi.txt','w');count=fprintf(fid,'%d\n',control);fclose(fid);运行结果如下:题目二:被控对象)14)(12(20)(++=s s s G 给定为100,设计一个模糊控制器实现对象系统的控制。
模糊控制在matlab中的实例以下是一个模糊控制的MATLAB实例:假设我们要控制一个水平摆,使其保持在垂直状态。
我们可以使用模糊控制器来实现这个任务。
首先,我们需要定义输入和输出变量。
对于输入变量,我们可以选择摆的角度和摆的角速度,对于输出变量,我们可以选择施加到摆上的力。
```matlab% 定义输入变量angle = fuzzymf("angle", [-90 -45 0 45 90], "trimf", [-90 -45 0 45 90]);angular_velocity = fuzzymf("angular_velocity", [-10 -5 0 5 10], "trimf", [-10 -5 0 5 10]);% 定义输出变量force = fuzzymf("force", [-20 -10 0 10 20], "trimf", [-20 -10 0 10 20]);```接下来,我们定义模糊规则。
这些规则描述了如果摆的角度和角速度是什么,我们应该施加多少力,以使摆保持垂直。
```matlab% 定义模糊规则rules = [1 1 3 1;1 2 4 1;1 3 5 2;2 1 2 1;2 23 1;2 3 4 2;3 1 1 2;3 2 2 1;3 3 3 1;4 1 1 3;4 2 2 2;4 3 3 1;5 1 1 3;5 2 2 2;5 3 4 3];% 定义模糊推理引擎fis = mamfis("Name", "Pendulum Fuzzy Controller", "NumInputs", 2, "NumOutputs", 1);fis.Inputs(1).MembershipFunctions = angle;fis.Inputs(2).MembershipFunctions = angular_velocity; fis.Outputs(1).MembershipFunctions = force;fis.Rules = rules;```最后,我们可以使用模糊控制器来控制水平摆。
Matlab计算模糊控制表
实现程序如下:
clc; %清空命令窗口
clear; %清空工作空间
e=[1,,,,,0,0,0,0,0,0,0,0;
,,1,,,0,0,0,0,0,0,0,0;
0,,,,1,,,0,0,0,0,0,0;
0,0,0,0,,,1,0,0,0,0,0,0;
0,0,0,0,0,0,1,,,0,0,0,0;
0,0,0,0,0,0,,,1,,,,0;
0,0,0,0,0,0,0,0,,,1,,;
|
0,0,0,0,0,0,0,0,,,,,1] %误差的隶属度函数表,8*13的矩阵
eb=[1,,,0,0,0,0,0,0,0,0,0,0;
,,1,,,0,0,0,0,0,0,0,0;
0,0,,,1,,,0,0,0,0,0,0;
0,0,0,0,,,1,,,0,0,0,0;
0,0,0,0,0,0,,,1,,,0,0;
0,0,0,0,0,0,0,0,,,1,,;
0,0,0,0,0,0,0,0,0,0,,,1] %误差变化率的隶属度函数表,7*13的矩阵;
u=[1,,,0,0,0,0,0,0,0,0,0,0;
,,1,,,0,0,0,0,0,0,0,0;
0,0,,,1,,,0,0,0,0,0,0;
^
0,0,0,0,,,1,,,0,0,0,0;
0,0,0,0,0,0,,,1,,,0,0;
0,0,0,0,0,0,0,0,,,1,,;
0,0,0,0,0,0,0,0,0,0,,,1] %输出控制量u,7*13的矩阵; rulelist=[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=56条规则;for ey=1:13 % 输入变量e的13个取值:-6——6;
for eby=1:13 %输入变量eb的13个取值:-6——6;
for ex=1:8 % 输入变量e的8个语言变量NB----PB;
for ebx=1:7 % 输入变量eb的7个语言变量NB---PB; arule=rulelist(ex,ebx); %取一条规则;
C=u(arule,:);%取这条规则的C的隶属度;代表取一行A=e(ex,:);%取这条规则的A的隶属度;代表取一行
for i=1:13;
¥
for j=1:13;
if (A(i)>C(1,j));
Ra(i,j)= C(1,j);
else
Ra(i,j)=A(i);
end
end
end% 算A—C的蕴含关系;
AP=zeros(1,13);
AP(1,ey)=e(ex,ey);
!
for i=1:13;
for j=1:13;
if (AP(j)>Ra(j,i));
GDA(j,i)= Ra(j,i);
else
GDA(j,i)=AP(j);
end
end
end%求合成运算开始的取小;
for i=1:13;
max=GDA(1,i);
<
for j=1:13;
if (max<GDA(j,i))
max= GDA(j,i);
end
end
CPA(i)=max;
end % 合成运算取大结束;CPA算出来了;
arule=rulelist(ex,ebx); %取一条规则;
C=u(arule,:);%取这条规则的C的隶属度;代表取一行B=eb(ebx,:);%取这条规则的A的隶属度;代表取一行》
for i=1:13;
for j=1:13;
if (B(i)>C(1,j));
Rb(i,j)= C(1,j);
else
Rb(i,j)=B(i);
end
end
end% 算B—C的蕴含关系;
BP=zeros(1,13);
、
BP(1,eby)=eb(ebx,eby);
for i=1:13;
for j=1:13;
if (BP(j)>Rb(j,i));
GDB(j,i)= Rb(j,i);
else
GDB(j,i)=BP(j);
end
end
end%求合成运算开始的取小;for i=1:13;
*
max=GDB(1,i);
for j=1:13;
if (max<GDB(j,i))
max= GDB(j,i);
end
CPB(i)=max;
end; % 合成运算取大结束;CPB算出来了;
for i=1:13
if(CPA(i)>CPB(i))
;
CP(i)=CPB(i);
else
CP(i)=CPA(i);
end
end % 第一个CP1计算结束;将来C是56*13的矩阵;CB((ex-1)*7+ebx,:)=CP;
end
end
for i=1:13;
max=CB(1,i);
|
for j=1:56;
if(max<CB(j,i))
max=CB(j,i);
end
U(i)=max;
end %56个CP整理结束;
sumFZ=0;
sumFM=0;
:
for i=1:13;
sumFZ=sumFZ+(i-7)*U(i);
sumFM=sumFM+U(i);
end
core=sumFZ/sumFM;
UB(ey,eby)=core; % 一个控制表中的元素算出来了
end
end
UB=round(UB*100)/100;%保留两位
display(UB);
程序运行结果如下:
程序结果分析:
综合MATLAB程序运算出来的结果和智能控制理论与技术(孙增圻)第二版上的结果,完全一致,证明程序运算结果正确!。