二维模糊控制表的离线计算及m文件实现

合集下载

二维运动模糊图像的处理

二维运动模糊图像的处理

二维运动模糊图像的处理一、前言运动模糊是图像处理领域常见的一种失真,它是在拍摄或者成像时,镜头和被拍摄物体之间产生相对运动,导致的图像模糊。

这种失真通常会出现在快速移动的物体上,如运动的车辆、飞机、人或者摄影机自身的移动等。

处理运动模糊图像可以提高图像质量和结果的可信度。

本文主要介绍处理二维运动模糊图像所需要的步骤和方法,并通过具体实例来展示如何实现。

二、二维运动模糊模型二维运动模糊是一种在图像中产生的维度不同的失真,我们需要用一种数学模型来描述它。

根据文献 1 的描述,运动模糊可以表示成下面的方程:g(x, y) = f(x – v_x t, y – v_y t) + n(x, y)式中,g(x,y) 是观察到的模糊图像;f(x,y) 是清晰图像;n(x,y) 是加性噪声;v_x 和 v_y 是物体运动的平均速度;t 是曝光时间。

可以看出,运动模糊是由物体的运动和相机曝光时间共同决定的。

三、处理方法针对二维运动模糊图像,我们可以采用各种方法来恢复清晰的图像。

下面介绍一些比较常用的处理方法:1. 经典逆滤波方法经典逆滤波方法通过将运动模糊图像和一个恢复器(transfer function)进行傅里叶变换,再运用逆滤波器来实现模糊图像的去除。

其基本思想是,将傅里叶变换后的运动模糊图像 G(w_x, w_y) 除以傅里叶变换后的恢复器 H(w_x, w_y) 就可以得到原始图像F(w_x, w_y):其中,H(w_x, w_y) 通常由点扩散函数(PSF)计算得到。

逆滤波概念简单,在算法实现装回时,逆滤波方法不是很稳定,尤其是当噪声较强时,会使得结果出现明显的伪影或者噪声。

由于经典逆滤波方法在实际应用中存在一些局限性,如较强的噪声干扰、图像边缘成分缺失或者存在振铃效应等问题,因此带约束的逆滤波方法得到了广泛的应用。

该方法基于最小化损失函数的理论,引入了正则化约束项,以达到更稳定的结果。

例如在Tikhonov 正则化中,可以将原问题转化成带有正则化项的最小二乘问题:min{||H(F)-G||^2 + α||F||^2}其中 ||F||^2 表示平滑性约束,α越大,结果越平滑;||H(F)-G||^2 表示显著性约束,约束了算法的收敛度。

模糊控制查询表的MATLAB实现

模糊控制查询表的MATLAB实现

p de c ies n er s rb i deai h way o tl e t h w t get f z y -c tol qu y a e y he o a u z onr — er tbl b t MATL pr AB ogr amm ig. s n Thi cor l a e to —tbl m a be tr d n h c y so e i t e ompue t wi t f m of tbl W hih t he or h a a e. c ca i n mpr e o gr a l te et y h ope ain e f en ySuc a PL r t al fi o ci c h s C co tol rec. o e n r l ,t wh s me o y s v y il a o e m r i er lt te,nd n—l ras nig an s ral e i ne e o n c alo be e i d. z Ke wOrs: z y onr l y d f z c to qu r a eM AT AB. c to,n—l e e o ig u ey t bl. L PI onr l o i ras nn n
级 保持 为 卜6 一 , 4 一 ,2 一 , , ,, , , ,} ,5 一 ,3 一 , 10 12 3 4 5 6。
输 入 变 量偏 差 e和偏 差 变化 率 e c和输 出变 量 A P A i K 、 T 的
模 糊 语 言 值 均 为 { B, N NM, S, O,S, M, B 。 为 了 编 程 方 N Z P P P }
值 , 为 12, 4 7 即 , 3,… 。
表 1 用 数 字 语 言 值表 示 输 入 变 量 × 1及 x 2的 隶 属度 矢 量 表

一种基于存储器地址映射的二维模糊控制器

一种基于存储器地址映射的二维模糊控制器
维普资讯
第2 9卷
第 7期
仪 器 仪 表 学 报
C ie eJu n l fS inicI srme t hn s o r a ce ti n t o f u n
Vo. 9 No 7 12 .
Байду номын сангаас
20 0 8年 7月
J1 0 8 u.2 0
好、 应用简便等优点 。 关键词 : 存储 器地址映射 ; 模糊控制器 ; 存储器 ; 离线计算 ; 在线查表
中 图分 类 号 : M 7 T 3 T 5 1 P9 文献 标 识 码 :A 国 家 标 准 学 科 分 类 代 码 : 6 .0 404
Two d m e i n lf z y c nt o l r b s d o e o y a d e s m a i g - i nso a u z o r le a e n m m r d r s pp n
法融合型二维模糊控制器实现方 案。首先建立模糊控制 器的输 出和其输入误差 和误差变化 率之 间的映射关系 , 然后离线计算
控制输 出量直接存储在存储器 中, 以误差 和误差变换率作 为地址 , 在控制 时序脉冲 的作用 下 , 过地址 映射 以在线查表 的方式 通 直接输 出控制量控制被控对象 。最后设计了该模糊控制器的硬件电路并进行 了实验研究。实验结果表明这种控制器实现方案 是可行 的 , 具有 良好的控制品质 , 且该控制器不需要 C U, P 系统开发不用编写任何程序 , 因而具有 电路结构简单 、 本低 、 成 实时性
Lu S u i i h x ,L a f ,W a n y iT iu ng Mi g u
lT e e a oa r thVl g nier ga dEetcl e eho g h yL brt yo g oa eE gne n n l ra w Tcnl yi K o fH t i ci N o n Misyo d ct n C og i n e i ,C og i 0 04, hn ; nt ir fE uai , hn q g U i r t hn q g4 0 4 C ia o n v sy n 2 Clg Ee rn frai n . hnqn n e i Si&Tc., hn q g40 5 C ia ol e e o l t i I om t nE g ,C og i U i r t o c f co c n o g v syf . eh C og i 0 00, hn ) n

用MATLAB编写模糊控制表计算程序

用MATLAB编写模糊控制表计算程序

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; %对控制量保留小数点后两位。

二维运动模糊图像的处理

二维运动模糊图像的处理

二维运动模糊图像的处理二维运动模糊图像是指由于被摄物体或相机在拍摄过程中的运动而导致的图像模糊现象。

在许多摄影和图像处理应用中,我们经常会遇到二维运动模糊图像,比如在拍摄运动物体时或者拍摄时相机移动等情况下。

为了提高图像的质量和清晰度,我们需要对这些二维运动模糊图像进行处理,以恢复其原始清晰度和细节。

在本文中,我们将讨论二维运动模糊图像的处理方法,包括数学模型的建立、算法的选择和实际应用技巧等内容。

一、二维运动模糊的数学模型在处理二维运动模糊图像之前,我们首先需要建立一个数学模型来描述这种模糊现象。

二维运动模糊可以用一个数学公式来表示,即图像的模糊版本可以被表示为原始图像的线性平均值。

具体来说,对于一个大小为M*N的二维图像I,其经过二维运动模糊之后的模糊图像B可以表示为:B(x, y) = 1/L * Σ[I(x - u*t, y - v*t)], t = 0,1,2,...,L-1(x, y)是图像B中的像素坐标,(u, v)是运动的方向向量,t是时间步长,L是时间步长的总数。

上述公式表示了在运动方向上图像像素的线性平均。

根据上述数学模型,我们可以进一步研究如何通过算法来处理二维运动模糊图像。

二、二维运动模糊图像的处理算法针对二维运动模糊图像的处理,我们可以采用各种各样的算法和方法。

下面我们将介绍一些常用的算法。

1. 经典算法:最小二乘法最小二乘法是一种经典的算法,它可以用于估计图像的运动模糊参数。

这种方法通过最小化像素值的误差来估计运动方向和模糊长度。

最小二乘法可以有效地处理线性运动模糊,但对于非线性运动模糊效果不佳。

2. 运动模糊滤波器运动模糊滤波器是一种专门用于处理二维运动模糊图像的滤波器。

它可以通过对原始图像进行卷积来恢复清晰图像。

运动模糊滤波器可以根据不同的运动参数来调整滤波器的参数,以适应不同的运动模糊情况。

3. 傅里叶变换傅里叶变换是一种广泛应用于图像处理领域的算法,它可以用于处理运动模糊图像。

基于MATLAB生成模糊控制规则离线查询表

基于MATLAB生成模糊控制规则离线查询表

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逐条添加模糊控制规则,清晰化采用加权平均法。

模糊控制的MATLAB实现具体过程(强势吐血推荐)..共64页PPT

模糊控制的MATLAB实现具体过程(强势吐血推荐)..共64页PPT
模糊控制的MATLAB实现体过程(强势 吐血推荐)..

46、寓形宇内复几时,曷不委心任去 留。

47、采菊东篱下,悠然见南山。

48、啸傲东轩下,聊复得此生。

49、勤学如春起之苗,不见其增,日 有所长 。

50、环堵萧然,不蔽风日;短褐穿结 ,箪瓢 屡空, 晏如也 。
16、业余生活要有意义,不要越轨。——华盛顿 17、一个人即使已登上顶峰,也仍要自强不息。——罗素·贝克 18、最大的挑战和突破在于用人,而用人最大的突破在于信任人。——马云 19、自己活着,就是为了使别人过得更美好。——雷锋 20、要掌握书,莫被书掌握;要为生而读,莫为读而生。——布尔沃
END

模糊控制在MATLAB中的实现

模糊控制在MATLAB中的实现

模糊控制在MATLAB中的实现模糊控制是一种基于模糊逻辑的控制方法,可以处理输入模糊或模糊输出的问题。

在MATLAB中,模糊控制可以通过Fuzzy Logic Toolbox实现。

Fuzzy Logic Toolbox提供了一套用于设计、模拟和分析模糊逻辑系统的工具。

它允许用户定义模糊集、模糊规则和模糊推理过程,从而实现模糊控制。

在实现模糊控制之前,首先需要确定输入和输出的模糊集以及它们之间的关系。

可以通过定义模糊集合的成员函数来描述输入和输出的模糊集。

常见的成员函数有三角形、梯形、高斯等。

例如,对于一个温度控制系统,可以定义三个模糊集:"冷","舒适"和"热"用于描述温度的状态。

每个模糊集可以具有不同的成员函数。

接下来,需要定义模糊规则,规则用于描述输入和输出之间的关系。

例如,当温度"冷"时,可以设定输出为"加热",当温度"舒适"时,输出为"保持",当温度"热"时,输出为"冷却"。

在MATLAB中,可以使用Fuzzy Logic Toolbox的命令createFIS来创建一个模糊逻辑系统(FIS),并使用addInput和addOutput命令来定义输入和输出的模糊集。

例如,以下代码片段演示了如何创建一个简单的模糊逻辑系统:```MATLABfis = createFIS('fuzzy_system');fis = addInput(fis, [0 100], 'Temperature');fis = addOutput(fis, [0 10], 'Control');fis = addMF(fis, 'input', 1, 'cold', 'trimf', [-10 0 10]);fis = addMF(fis, 'input', 1, 'hot', 'trimf', [40 100 160]);fis = addMF(fis, 'output', 1, 'cool', 'trimf', [-5 0 5]);fis = addMF(fis, 'output', 1, 'maintain', 'trimf', [0 5 10]);fis = addMF(fis, 'output', 1, 'heat', 'trimf', [5 10 15]);ruleList = [1 1 2 3 1;22221;33211];fis = addRule(fis, ruleList);```在定义模糊逻辑系统之后,可以使用evalfis命令对系统进行模糊推理和模糊控制。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

离散论域模糊控制表的离线计算一、题目已知单变量两维输入,一维输出模糊控制器,其两维输入为 E , EC ,一维输出为I ,论域均为 E , EC ,I ∈ {-6 , -5 , -4 , -3 , -2 , -1 , 0 , 1 , 2 , 3 , 4 ,5 , 6} , E 的论域划分为 {NB , NM , NS , NZ , PZ , PS , PM , PB} ,共 8个模糊子集,其各自的隶属度函数如表 1 所示。

EC 和 I 的论域划分为 {NB , NM ,NS , ZE , PS , PM , PB} ,共 7 个模糊子集,它们的隶属度函数都如表 2 所示。

已知控制规则表如表 3 所示,试求解输出控制表(如当 e=-6 , ec=-6 时,求输出i= ?,最终输出的控制表格式如如表 4 所示)。

其中输入采用单点模糊法,输出清晰量采用加权平均法进行解模糊,可以用 MATLAB 编程计算。

各变量的隶属度函数以及控制规则表如下:表 1 输入变量 E 的隶属度函数表E -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6NB 1.0 0.8 0.6 0.4 0.2 0 0 0 0 0 0 0 0 NM 0.2 0.6 1.0 0.6 0.2 0 0 0 0 0 0 0 0NS 0 0 0.3 0.7 1.0 0.7 0.3 0 0 0 0 0 0NZ 0 0 0 0 0.1 0.6 1.0 0 0 0 0 0 0PZ 0 0 0 0 0 0 1.0 0.6 0.1 0 0 0 0PS 0 0 0 0 0 0 0.3 0.7 1.0 0.7 0.3 0 0 PM 0 0 0 0 0 0 0 0 0.2 0.6 1.0 0.6 0.2 PB 0 0 0 0 0 0 0 0 0.2 0.4 0.6 0.8 1.0表 2 变量 EC 和 I 的隶属度函数表-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6NB 1.0 0.6 0.2 0 0 0 0 0 0 0 0 0 0 NM 0.2 0.6 1.0 0.6 0.2 0 0 0 0 0 0 0 0NS 0 0 0.2 0.6 1.0 0.6 0.2 0 0 0 0 0 0ZE 0 0 0 0 0.2 0.6 1.0 0.6 0.2 0 0 0 0PS 0 0 0 0 0 0 0.2 0.6 1.0 0.6 0.2 0 0 PM 0 0 0 0 0 0 0 0 0.2 0.6 1.0 0.6 0.2 PB 0 0 0 0 0 0 0 0 0 0 0.2 0.6 1.0表 3 控制规则表NBNMNSZEPSPMPBNB NB NB NB NB NM ZE ZE NM NB NB NB NB NM ZE ZE NS NM NM NM NM ZE PS PS NZ NM NM NS ZE PS PM PM PZ NM NM NS ZE PS PM PM PS NS NS ZE PM PM PM PM PM ZE ZE PM PB PB PB PB PB ZE ZE PM PB PB PB PB表 4 输出控制表( e , ec , i 均为清晰量)-6-5-4-3-2-1123456-6-5.4444 -5.3750 -4.7917 -4.2963 -4.0000 -4.0000 -3.4063 -2.9714 -1.7813 -1.0286 -0.59380.0000 0.0000 -5-5.2857 -5.2857 -4.5500 -4.3077 -4.0000 -4.0000 -3.3214 -3.0000 -1.7500 -1.0000 -0.6786 0.0000 0.0000 -4---------0.00.41.11.05.4 444 5.37504.79174.29633.75003.48152.86112.51280.5250000 250 250 588-3 -5.2857 -5.2857-4.5500-4.3077-3.7083-3.0000-2.3750-2.0000-0.20450.92591.35422.00002.0000-2 -5.4444 -5.3750-4.7917-4.2963-3.4000-2.5641-0.8696-0.42550.27501.48942.09762.87502.9412-1 -5.2857 -5.2857-4.5500-4.3077-3.3077-2.0000-0.33330.92591.75002.34782.91894.30774.30770 -4.9091 -4.8000-3.4688-3.2000-2.5833-1.57450.00001.57452.58333.20003.46884.80004.90911 -4.3077 -4.3077-2.9189-2.3478-1.7500-0.92590.33332.00003.30774.30774.55005.28575.28572 -2.9412 -2.8750-2.0976-1.4894-0.27500.42550.86962.56413.40004.29634.79175.37505.44443 -2.0000 -2.0000-1.3542-0.92590.20452.00002.37503.00003.70834.30774.55005.28575.28574 -1.0588 -1.1250-0.42500.00000.52502.51282.86113.48153.75004.29634.79175.37505.44445 0.0000 0.00000.67861.00001.75003.00003.32144.00004.00004.30774.55005.28575.28576 0.0000 0.00000.59381.02861.78132.97143.40634.00004.00004.29634.79175.37505.4444二、基本原理这是一个二输入、单输出的模糊控制器的设计,主要包括输入模糊化、模糊推理、解模糊等基本过程,现在叙述如下:1 、输入模糊化在本实验实际过程中采用单点模糊集合的方法实现输入的模糊化,例如 e 为离散论域 E ={ -6 , -5 , -4 , -3 , -2 , -1,0 , 1 , 2 , 3 , 4 , 5 , 6} ,则 x * = ,0 的输入模糊集合可表示为:2 、模糊推理设某一时刻偏差为 e * ,偏差变化量为 ec * ,则可根据由各条规则给出的模糊蕴含关系进行合成推理运算,得到相应的输出控制量的模糊值:其中, m 和 n 分别表示 e 和 ec 的论域所划分的模糊自己的个数,在本实验中,m=8 , n=7 ,对应着本题目中规定的 56 条控制规则。

控制器设计的核心就是对上式进行编程。

3 、解模糊本实验采用加权平均的方式解模糊,其精确值的计算公式如下:三、实验程序:实验最终采用的程序如文件 program 中 fuc1.m 所示, fuc1_1.m 和 fuc1_2.m 为了说明程序优化使用。

就本题目而言,三个程序都可以解决问题。

Maxmin.m 是最大最小合成函数,供 fuc1_1.m 运行时调用。

各个 excel 表格说明如下:Input1_Terms_Membership.xlsx 、 Input 2 _Terms_Membership.xlsx 、 Output_Terms_Membership.xlsx 分别为两个输入变量以及输出变量的隶属度函数表,用于在 MATLAB 执行程序的时候读入, Output_Result.xlsx 为程序运行结果。

本实验采用的程序如下:% 离散论域模糊控制表的离线计算e_domain=-6:6;ec_domain=e_domain;u_domain=e_domain;% 隶属度函数读入Input1_Terms_Membership=xlsread( 'Input1_Terms_Membership.xlsx' ); Input2_Terms_Membership=xlsread( 'Input2_Terms_Membership.xlsx' ); Output_Terms_Membership=xlsread( 'Output_Terms_Membership.xlsx' ); Rule=xlsread( 'Rule.xlsx' ); % 语言规则录入% 如果论域长度和隶属度函数列数不同,程序报错if length(e_domain)~=size(Input1_Terms_Membership,2)fprintf( 'Error!Please input the membership of input1 again!' )endif length(ec_domain)~=size(Input2_Terms_Membership,2)fprintf( 'Error!Please input the membership of input2 again!' )endif length(u_domain)~=size(Output_Terms_Membership,2)fprintf( 'Error!Please input the membership of output again!' )endfor m=1:length(ec_domain)for k=1:length(e_domain)% 单点模糊化ec=zeros(1,length(ec_domain));ec(m)=1;e=zeros(1,length(e_domain));e(k)=1;Uo=zeros(1,length(u_domain));for i=1:size(Input1_Terms_Membership,1)for j=1:size(Input2_Terms_Membership,1)a=Input1_Terms_Membership(i,:);b=Input2_Terms_Membership(j,:);c=Output_Terms_Membership(Rule(i,j),:);A1=a'*ones(size(c));B1=ones(size(a'))*c;R1=min(A1,B1);A2=b'*ones(size(c));B2=ones(size(b'))*c;R2=min(A2,B2);% 最大 - 最小合成运算U1a=zeros(size(e,1),size(R1,2));U1b=zeros(size(ec,1),size(R2,2));for s=1:size(e,1)for t=1:size(R1,2)U1a(s,t)=max(min(e(s,:),R1(:,t)'));endendfor s=1:size(ec,1)for t=1:size(R2,2)U1b(s,t)=max(min(ec(s,:),R2(:,t)'));endendU1=min(U1a,U1b);Uo=max(Uo,U1);endend% 解模糊U(m,k)=sum(u_domain.*Uo)/sum(Uo);endendxlswrite( 'Output_Result.xlsx' ,U); % 将结果以 excel 表格的形式给出运行结果如题目中的表格 4 所示,各个精确量保留四位小数。

相关文档
最新文档