二维模糊控制表的离线计算及m文件实现
- 格式:docx
- 大小:34.81 KB
- 文档页数:9
二维运动模糊图像的处理一、前言运动模糊是图像处理领域常见的一种失真,它是在拍摄或者成像时,镜头和被拍摄物体之间产生相对运动,导致的图像模糊。
这种失真通常会出现在快速移动的物体上,如运动的车辆、飞机、人或者摄影机自身的移动等。
处理运动模糊图像可以提高图像质量和结果的可信度。
本文主要介绍处理二维运动模糊图像所需要的步骤和方法,并通过具体实例来展示如何实现。
二、二维运动模糊模型二维运动模糊是一种在图像中产生的维度不同的失真,我们需要用一种数学模型来描述它。
根据文献 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 表示显著性约束,约束了算法的收敛度。
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. 傅里叶变换傅里叶变换是一种广泛应用于图像处理领域的算法,它可以用于处理运动模糊图像。
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中的实现模糊控制是一种基于模糊逻辑的控制方法,可以处理输入模糊或模糊输出的问题。
在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命令对系统进行模糊推理和模糊控制。
离散论域上的模糊控制离线计算引言:模糊控制是一种基于模糊逻辑的控制方法,它可以应用于各种领域,如工业控制、交通控制、机器人控制等。
在模糊控制中,离散论域上的模糊控制是一种常见的控制方式,它可以有效地处理离散输入和输出的问题。
本文将介绍离散论域上的模糊控制离线计算的相关概念和方法。
一、离散论域上的模糊控制基础离散论域上的模糊控制是指输入和输出都是离散值的模糊控制系统。
在离散论域上,输入和输出的取值可以是离散的,例如在一个交通信号灯控制系统中,输入可以是红灯、绿灯、黄灯等状态,输出可以是停止、行进、减速等命令。
离散论域上的模糊控制需要定义模糊集合和模糊规则,以实现输入和输出之间的模糊映射关系。
二、离散论域上的模糊集合离散论域上的模糊集合是指集合中的元素是离散的。
例如在一个温度控制系统中,可以定义一个模糊集合"冷",其中包含了离散的温度取值,如10℃、15℃、20℃等。
离散论域上的模糊集合可以通过隶属函数来描述,隶属函数表示元素属于某个模糊集合的程度。
三、离散论域上的模糊规则离散论域上的模糊规则是指用于描述输入和输出之间模糊映射关系的规则。
例如在一个灯光控制系统中,可以定义一个模糊规则"如果输入为红灯,则输出为停止"。
离散论域上的模糊规则可以通过条件-结果表来表示,其中条件是输入的模糊集合,结果是输出的模糊集合。
四、离散论域上的模糊控制离线计算离散论域上的模糊控制离线计算是指在系统运行之前,通过离线计算得到系统的模糊规则和隶属函数。
离线计算可以通过离散论域上的数据进行,例如通过历史数据或专家知识来确定系统的模糊规则和隶属函数。
离散论域上的模糊控制离线计算可以提前将控制系统的参数进行优化,以达到更好的控制效果。
五、离散论域上的模糊控制离线计算的步骤离散论域上的模糊控制离线计算包括以下步骤:1. 收集离散论域上的数据:通过实验或专家知识,收集离散论域上的数据,包括输入和输出的取值范围以及其对应的模糊集合。
二维高斯模糊和可分离核形式计算详细过程二维高斯模糊和可分离核形式计算详细过程一、前言在图像处理和计算机视觉领域,高斯模糊是一种常用的图像处理技术,它可以用来降噪、平滑图像或者在图像的特定区域中进行模糊处理。
而二维高斯模糊又是一种特殊的高斯模糊技术,它可以在两个方向上对图像进行模糊处理,常常被用来进行图像处理和特征提取。
而可分离核形式计算则是一种高效计算二维高斯模糊的方法,能够大大提高计算效率。
在本文中,我们将深入探讨二维高斯模糊和可分离核形式计算的详细过程,通过逐步的讲解和分析,帮助读者更加深入地理解这一复杂而重要的图像处理技术。
二、二维高斯模糊的基本原理1. 什么是高斯模糊?高斯模糊是一种利用高斯函数对图像进行加权平均的处理方法。
由于高斯函数具有平滑、连续和无边界的性质,因此可以有效地对图像进行模糊处理。
在二维高斯模糊中,我们通常使用二维高斯函数来对图像进行模糊处理,其表达式为:\[G(x, y) = \frac{1}{2\pi\sigma^2}e^{-(x^2+y^2)/2\sigma^2}\]2. 二维高斯模糊的应用二维高斯模糊通常被应用在图像处理领域,用来对图像进行平滑处理,去除噪声,或者进行特征提取。
在图像处理中,由于高斯函数的平滑性,可以有效地模糊图像中的细节,从而达到降噪、平滑图像的效果。
三、可分离核形式计算的详细过程1. 可分离核形式的定义可分离核形式是指可以将二维高斯模糊的核函数分解成两个一维的核函数的形式。
也就是说,二维高斯模糊可以分解成两个方向上的一维高斯模糊的叠加。
这种分解可以大大简化计算过程,提高计算效率。
2. 可分离核形式计算的过程要计算二维高斯模糊的可分离核形式,首先需要求出一维高斯函数的核。
假设高斯函数的方差为σ,那么一维高斯函数的核可以表示为:\[g(x) = \frac{1}{\sqrt{2\pi\sigma^2}}e^{-x^2/2\sigma^2}\]通过对一维高斯函数的核进行离散化,可以得到一维的高斯核。
离散论域模糊控制表的离线计算一、题目已知单变量两维输入,一维输出模糊控制器,其两维输入为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编程计算。
各变量的隶属度函数以及控制规则表如下:表3 控制规则表二、基本原理这是一个二输入、单输出的模糊控制器的设计,主要包括输入模糊化、模糊推理、解模糊等基本过程,现在叙述如下: 1、输入模糊化在本实验实际过程中采用单点模糊集合的方法实现输入的模糊化,例如e 为离散论域E={-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6},则x *=,0的输入模糊集合可表示为:00000010000006543210123456A =++++++++++++------ 2、模糊推理设某一时刻偏差为e *,偏差变化量为ec *,则可根据由各条规则给出的模糊蕴含关系进行合成推理运算,得到相应的输出控制量的模糊值:*****111**1(){()}{()[()]}{[()][()]}m n m n m nl l l l l l l l m nl l l l l U e and ec R e and ec R e and ec A and B C e A C ec B C ⨯⨯⨯*===⨯====→=→→ 其中,m 和n 分别表示e 和ec 的论域所划分的模糊自己的个数,在本实验中,m=8,n=7,对应着本题目中规定的56条控制规则。
控制系统中模糊控制器的设计与实现控制系统中采用的控制器可以分为许多种类,其中一种常用的控制器是模糊控制器。
模糊控制器是一种基于模糊逻辑理论的控制器,它可以处理模糊的输入和输出,适用于非线性和复杂的控制系统。
本文将介绍模糊控制器的设计和实现步骤。
一. 模糊控制器的基本原理模糊控制器的基本原理是模糊逻辑理论,它采用了一种模糊的方式来处理不确定性和模糊性的问题。
其基本思想是将系统输入或输出的模糊化,使输入和输出变成了隶属于某种模糊集合之内的量,并根据一定的模糊规则,将输入转化为输出。
模糊控制器的工作流程如下:首先将输入信号进行模糊化,将其转化为一组隶属度值。
然后根据预设的模糊规则,将输入转化为输出信号。
最后将输出信号进行去模糊化,得到具体的控制量,然后输出给被控对象。
二. 模糊控制器的设计步骤模糊控制器的设计步骤主要包括以下几个方面:1. 确定系统的模糊输入和输出模糊控制器的输入和输出通常表示为模糊变量,其基本形式是一个三元组(Name, Universe of discourse, Membership function)。
其中Name表示模糊变量的名称,Universe of discourse表示变量所描述的宇域,Membership function是变量的隶属度函数。
2. 确定模糊控制器的规则库模糊控制器的输入和输出之间建立的模糊规则来自于专家知识和经验。
将这些知识和经验编码成规则库,每个规则的形式为:“If X1 is A1 and X2 is A2 and…Xnis An, Then Y is B”。
其中X1,X2 …Xn 是输入模糊变量,A1,A2…An是它们的隶属程度,Y是输出模糊变量,B是它的隶属程度。
3. 确定模糊控制器的推理机制模糊控制器的推理机制是指如何从规则库中推导出具体的输出。
常用的推理机制有最小最大合成、中心平均合成等。
4. 确定模糊控制器的去模糊化方法模糊控制器的输出是一组隶属度值,需要将其转化为具体的控制量。
《智能控制》考试试题试题1:针对某工业过程被控对象:0.520()(101)(21)s G s e s s -=++,试分别设计常规PID 算法控制器、模糊控制器、模糊自适应PID 控制器,计算模糊控制的决策表,并进行如下仿真研究及分析:1. 比较当被控对象参数变化、结构变化时,四者的性能;2. 研究改善Fuzzy 控制器动、静态性能的方法。
解:常规PID 、模糊控制、Fuzzy 自适应PID 控制、混合型FuzzyPID 控制器设计 错误!未找到引用源。
. 常规PID 调节器PID 控制器也就是比例、积分、微分控制器,是一种最基本的控制方式。
它是根据给定值()r t 与实际输出值()y t 构成控制偏差()e t ,从而针对控制偏差进行比例、积分、微分调节的一种方法,其连续形式为:01()()[()()]t p d i de t u t K e t e t dt T T dt=++⎰ (1.1) 式中,p K 为比例系数,i T 为积分时间常数,d T 为微分时间常数。
PID 控制器三个校正环节中p K ,i T 和d T 这三个参数直接影响控制效果的好坏,所以要取得较好的控制效果,就必须合理地选择控制器的参数。
Ziegler 和Nichols 提出的临界比例度法是一种非常著名的工程整定方法。
通过实验由经验公式得到控制器的近似最优整定参数,用来确定被控对象的动态特性的两个参数:临界增益u K 和临界振荡周期u T 。
用临界比例度法整定PID 参数如下:表1.1 临界比例度法参数整定公式51015202530354000.20.40.60.811.21.41.61.8Time(s)y (t )051015202530354000.511.5Time(s)y (t )PID 0.6u K 0.5u T 0.125u T据以上分析,通过多次整定,当 1.168p K =时系统出现等幅振荡,从而临界增益 1.168u K =,再从等幅振荡曲线中近似的测量出临界振荡周期 5.384u T =,最后再根据表1.1中的PID 参数整定公式求出:0.701, 2.692,0.673p i d K T T ===,从而求得:比例系数0.701p K =,积分系数/0.260i p i K K T ==,微分系数0.472d p d K K T ==。
离散论域模糊控制表的离线计算一、题目已知单变量两维输入,一维输出模糊控制器,其两维输入为 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 所示,各个精确量保留四位小数。