模糊控制的MATLAB实现具体过程(强势吐血推荐).
如何利用Matlab进行模糊控制
如何利用Matlab进行模糊控制引言近年来,随着科技的不断发展,模糊控制作为一种重要的控制方法,在各个领域得到了广泛的应用。
而Matlab作为一款功能强大的数学工具软件,对于模糊控制的实现提供了便捷的支持。
本文将介绍如何利用Matlab进行模糊控制,以及其在实际应用中的优势和局限性。
一、模糊控制简介模糊控制是一种基于模糊逻辑的控制方法,它通过将模糊规则应用于控制系统,使其能够对不确定性和模糊信息进行处理。
与传统的精确控制方法相比,模糊控制更适用于处理复杂系统或无法精确建模的系统。
二、Matlab中的模糊控制工具箱Matlab提供了专门的模糊控制工具箱,可以方便地实现模糊控制系统的建模、仿真和优化等操作。
在Matlab的模糊控制工具箱中,主要包括两个核心部分:模糊推理引擎和模糊控制器。
1. 模糊推理引擎模糊推理引擎是模糊控制系统的核心部分,它负责根据输入和模糊规则,对系统进行推理和输出控制量。
在Matlab中,可以使用命令"newfis"来创建一个新的模糊控制系统,然后通过定义输入和输出变量、设定隶属函数和模糊规则等步骤,来构建一个完整的模糊控制系统。
2. 模糊控制器模糊控制器是模糊控制系统的具体实现,它将模糊推理引擎与输入输出之间的映射关系结合起来。
在Matlab中,可以使用命令"newfis"创建一个新的模糊控制系统,然后使用"addInput"和"addOutput"来添加输入和输出变量,最后通过设定隶属函数和模糊规则等步骤,来实现模糊控制器的搭建。
三、模糊控制的实际应用模糊控制在实际应用中有着广泛的应用领域,例如机器人控制、汽车导航、电力系统等。
下面将以一个模拟小车控制的实例来介绍如何利用Matlab进行模糊控制。
假设有一个小车需要根据距离和角度来控制其行驶方向和速度。
首先要定义输入和输出变量,这里我们将距离划分为近、中、远三个模糊集,角度划分为左、中、右三个模糊集,行驶方向划分为左转、直行、右转三个模糊集,行驶速度划分为慢、中、快三个模糊集。
matlab下模糊控制器设计步骤
MATLAB下模糊控制器设计步骤模糊控制器简介模糊控制是指采用专家经验知识来处理模糊、不确定或复杂问题的一种控制方法。
模糊控制器是一个基于模糊逻辑的控制器,能够将输入变量和输出变量之间的映射关系进行模糊化,从而设计出具有模糊推理能力的控制器。
MATLAB下模糊控制器的设计步骤步骤一:确定系统控制目标在设计模糊控制器之前,需要明确系统控制的目标,如控制系统的稳态误差、响应时间、超调量等。
根据控制目标,设计模糊控制器的输入变量和输出变量。
步骤二:确定模糊控制器的输入变量与输出变量输入变量是控制系统的输入参数,包括状态量和操作量。
例如,在温度控制系统中,输入变量可以是温度传感器的输入、加热器控制器的输出等。
输出变量是控制系统的输出结果,影响系统的控制效果。
例如,在温度控制系统中,输出变量可以是加热器的功率、温度的变化率等。
步骤三:构建模糊集合对于每个输入和输出变量,构建一组模糊集合。
模糊集合是一种模糊变量值的表示方法,能够准确地描述模糊情况下的变量。
例如,对于温度控制系统中的温度传感器输入变量,可以构建模糊集合:{冷、凉、温、热、很热}。
每个模糊集合由若干个模糊语言变量组成,以便对该变量进行模糊控制。
步骤四:确定模糊规则库模糊规则库是模糊控制器的核心,描述输入变量与输出变量之间的映射关系。
模糊规则库是根据专家经验知识或试验数据得出的,其形式一般为:如果输入变量A是模糊集合X,且输入变量B是模糊集合Y,那么输出变量C是模糊集合Z。
例如,对于温度控制系统,一个模糊规则库可以是:如果输入变量为“温”且输出变量为“较强”则输出结果为“右转”。
步骤五:进行模糊推理模糊推理是利用模糊控制器的输入变量、模糊规则库和模糊推理算法来确定输出变量的过程。
在MATLAB中,可以使用Fuzzy Logic Toolbox工具箱来进行模糊推理。
步骤六:模糊控制器的评估在完成模糊推理后,需要对模糊控制器进行评估,以确定其控制效果。
模糊控制matlab
模糊控制matlab模糊控制是一种基于模糊数学理论的控制方法,它可以有效地处理非线性系统和模糊系统的控制问题。
在模糊控制中,通过将输入、输出和中间变量用模糊集合表示,设计模糊逻辑规则以实现控制目标。
本文将介绍如何用Matlab实现模糊控制,并通过实例讲解其应用和效果。
1. 模糊集合的表示在Matlab中,我们可以使用fuzzy工具箱来构建和操纵模糊系统。
首先,我们需要定义输入和输出的模糊集合。
例如,如果我们要控制一个直线行驶的自动驾驶汽车,可以定义速度和方向作为输入,定义方向盘角度作为输出。
我们可以将速度和方向分别划分为缓慢、中等、快速三个模糊集合,将方向盘角度划分为左转、直行、右转三个模糊集合。
可以使用Matlab的fuzzy工具箱中的fuzzy集合函数实现:slow = fuzzy(fis,'input',[-10 -10 0 20]);gap = fuzzy(fis,'input',[0 20 60 80 100]);fast = fuzzy(fis,'input',[60 80 110 110]);其中,fis为模糊系统对象,输入和输出的模糊集合分别用fuzzy函数定义,分别用输入或输出、模糊集合变量名、模糊集合界限参数表示,如fuzzy(fis,'input',[-10 -10 0 20])表示定义一个输入模糊集合,变量名为slow,其界限参数为[-10 -10 0 20],即表示此模糊集合上下界是[-10,-10]和[0,20]。
2. 设计模糊控制规则在Matlab中,可以使用fuzzy工具箱的ruleviewer函数来设计模糊控制的规则库。
规则库由模糊条件和模糊结论构成,用if-then形式表示。
例如,定义类别均为slow和keep的输入,输出为类别均为left的控制操作的规则如下:rule1 = "if (slow is slow) and (keep is keep) then (left is left);";其中,slow和keep为输入的模糊变量名,left为输出的模糊变量名。
模糊控制在matlab中的实例
模糊控制在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技术进行模糊控制的基本方法
使用Matlab技术进行模糊控制的基本方法随着科技的不断发展,控制系统越来越广泛地应用于各个领域,帮助我们解决实际问题。
在控制系统中,模糊控制技术因其适应性强、鲁棒性好等特点而备受关注。
而Matlab作为一个强大的计算工具,为我们提供了许多实现模糊控制的功能。
本文将介绍使用Matlab技术进行模糊控制的基本方法。
一、模糊控制的基本理论在介绍使用Matlab进行模糊控制的方法之前,我们先来了解一下模糊控制的基本理论。
模糊控制是一种基于模糊逻辑的控制方法,它模拟人类的思维方式进行控制,通过建立模糊规则库来实现对系统的控制。
在模糊控制中,输入和输出之间的关系由一组模糊规则来描述,这些模糊规则可以通过模糊推理进行计算得到系统的输出。
模糊控制主要有三个基本步骤:模糊化、模糊推理和去模糊化。
模糊化是将输入的实际值通过模糊隶属函数映射成模糊集合。
模糊推理则是根据模糊规则库进行推理计算,得到模糊输出。
最后,去模糊化将模糊输出转换为实际的控制量。
二、使用Matlab进行模糊控制的步骤1. 定义模糊集合和模糊规则库使用Matlab进行模糊控制的第一步是定义模糊集合和模糊规则库。
模糊控制中的模糊集合可以通过Matlab的fuzzymf函数来定义,它可以根据实际问题选择三角形、梯形、高斯函数等不同形状的隶属函数。
模糊规则库则是描述输入和输出之间关系的集合,它由一组模糊规则构成。
在Matlab中,可以使用fuzzylut函数来定义模糊规则库。
这个函数需要指定输入和输出的隶属函数以及规则的后件。
2. 模糊化和模糊推理定义好模糊集合和模糊规则库之后,接下来就是进行模糊化和模糊推理的计算了。
在Matlab中,可以使用fuzzy函数进行模糊化的计算。
这个函数需要输入模糊集合、输入的隶属函数和对应的输入值,然后计算得到模糊输入。
模糊推理可以通过fuzzy函数结合模糊规则库进行计算。
这个函数需要输入模糊规则库、模糊输入和输出的隶属函数,然后计算得到模糊输出。
模糊控制的MATLAB实现具体过程(强势吐血推荐)..共64页PPT
•
46、寓形宇内复几时,曷不委心任去 留。
•
47、采菊东篱下,悠然见南山。
•
48、啸傲东轩下,聊复得此生。
•
49、勤学如春起之苗,不见其增,日 有所长 。
•
50、环堵萧然,不蔽风日;短褐穿结 ,箪瓢 屡空, 晏如也 。
16、业余生活要有意义,不要越轨。——华盛顿 17、一个人即使已登上顶峰,也仍要自强不息。——罗素·贝克 18、最大的挑战和突破在于用人,而用人最大的突破在于信任人。——马云 19、自己活着,就是为了使别人过得更美好。——雷锋 20、要掌握书,莫被书掌握;要为生而读,莫为读而生。——布尔沃
END
模糊控制的matlab实现
6. surfview
功能:输出曲面观测器 格式: surfview (‘a’)
surfview (a) 说明:利用surfview (‘a’)可打开输出曲面观测器,从 中可查看保存在文件a.fis中的单输入或双输入FIS结 构的输出曲面。
4.1.2 隶属度函数
1. Gaussmf
功能:高斯(Gaussian)型隶属度函数 格式:y=gaussmf(x,[sig c]) 说明:对称的高斯型函数取决于2个参数σ(sig)和c:
0
x
a
f
x,
a
,b,c
b c
a x
c b
例:
0
xa
a x b
b
x
c
x c
x = 0:0.1:10;
y = trimf(x,[3 6 8]);
plot(x,y);
text(0.2,0.88,’trimf’);
text(0.2,0.78,’P = [3 6 8]’);
参数a和c确定三角 形的“脚”,而 参数b确定三角形 的“峰”
2. addrule 功能:在FIS中添加规则 格式:a=addrule(a,ruleList) 例:ruleList=[1 1 1 1 1 ;1 2 2 1 1];
a=addrule(a,ruleList);
3. addvar 功能:在FIS中添加变量 格式:a=addvar(a,’varType’,varBounds) 例:a=newfis(‘Simple’);
x c 2
f
x, ,c
e
2 2
gaussmf函数的参数以向量[sig,c]形式给出。
例:
x = 0:0.1:10;
模糊控制在matlab中的实例
模糊控制在matlab中的实例模糊控制是一种基于经验知识的控制方法,与传统的精确控制方法不同,它允许对系统的行为进行模糊描述,并通过一套模糊规则来对系统进行控制。
在实际应用中,模糊控制常常用于处理非线性、复杂和不确定的系统,例如温度控制、汽车制动系统等。
在MATLAB中,可以通过使用Fuzzy Logic Toolbox工具箱来实现模糊控制。
下面以一个简单的温度控制系统为例,来介绍如何在MATLAB中进行模糊控制的实现。
首先,需要定义模糊控制器的输入和输出变量,以及它们的模糊集合。
在温度控制系统中,可以定义温度作为输入变量,定义加热功率作为输出变量。
可以将温度的模糊集合划分为"冷"、"适中"和"热"三个模糊集合,将加热功率的模糊集合划分为"低"、"中"和"高"三个模糊集合。
```temperature = readfis('temperature.fis');temp_input = [-10, 40];temp_output = [0, 100];temperature_inputs = ["冷", "适中", "热"];temperature_outputs = ["低", "中", "高"];```然后,需要定义模糊规则。
模糊规则用于根据输入变量的模糊集合和输出变量的模糊集合之间的关系来确定控制规则。
例如,当温度为"冷"时,加热功率应该为"高"。
可以根据经验知识定义一系列模糊规则。
```rules = ["冷", "高";"适中", "中";"热", "低";];```接下来,需要定义模糊控制器的输入和输出变量值。
模糊控制的MATLAB实现具体过程(强势吐血推荐)..PPT共64页
ቤተ መጻሕፍቲ ባይዱ
模糊控制的MATLAB实现具体过程(强 势吐血推荐)..
46、法律有权打破平静。——马·格林 47、在一千磅法律里,没有一盎司仁 爱。— —英国
48、法律一多,公正就少。——托·富 勒 49、犯罪总是以惩罚相补偿;只有处 罚才能 使犯罪 得到偿 还。— —达雷 尔
50、弱者比强者更能得到法律的保护 。—— 威·厄尔
6、最大的骄傲于最大的自卑都表示心灵的最软弱无力。——斯宾诺莎 7、自知之明是最难得的知识。——西班牙 8、勇气通往天堂,怯懦通往地狱。——塞内加 9、有时候读书是一种巧妙地避开思考的方法。——赫尔普斯 10、阅读一切好书如同和过去最杰出的人谈话。——笛卡儿
如何在MATLAB中进行模糊控制
如何在MATLAB中进行模糊控制模糊控制是一种基于模糊逻辑理论的控制方法,它通过建立模糊规则、模糊集合和模糊推理等步骤,实现对复杂系统的控制。
在MATLAB中,我们可以利用模糊控制工具箱进行模糊控制设计和仿真。
本文将从模糊控制的基本原理、MATLAB中的模糊控制工具箱的使用以及实例应用等方面进行讨论。
一、模糊控制基本原理模糊控制的基本原理是将人类的经验和模糊逻辑理论应用于系统控制中。
它不需要准确的数学模型,而是通过模糊集合、模糊规则和模糊推理等方法来描述和制定控制策略。
下面我们将简要介绍一下模糊控制中的基本概念。
1. 模糊集合模糊集合是一种可以容纳不确定性的集合。
与传统集合论不同,模糊集合中的元素可以部分地、模糊地属于该集合。
在模糊控制中,我们通常使用隶属度函数来描述元素对模糊集合的隶属程度。
2. 模糊规则模糊规则是一种将输入和输出间的关系表示为一组语义规则的方法。
它基于专家的经验和知识,将输入变量的模糊集合与输出变量的模糊集合之间建立映射关系。
模糊规则通常采用IF-THEN的形式表示,例如:“IF 温度冷 AND 湿度高 THEN 空调制冷”。
3. 模糊推理模糊推理是基于模糊规则进行推理和决策的过程。
它通过对模糊集合的隶属度进行运算,计算出输出变量的模糊集合。
常用的推理方法有模糊关联、模糊交集和模糊合取等。
二、MATLAB中的模糊控制工具箱MATLAB提供了一套完整的模糊控制工具箱,包括模糊集合的创建、模糊规则的定义、模糊推理和模糊控制系统的仿真等功能。
下面我们将逐步介绍这些功能的使用方法。
1. 模糊集合的创建在MATLAB中,我们可以使用fuzzymf函数来创建模糊集合的隶属度函数。
该函数可以根据用户指定的类型和参数生成不同形状的隶属度函数。
常用的隶属度函数有三角型函数、梯形函数和高斯型函数等。
2. 模糊规则的定义在MATLAB中,我们可以使用addrule函数来定义模糊规则。
该函数将用户指定的输入变量、模糊集合和输出变量、模糊集合之间的关系转化为模糊规则,并添加到模糊推理系统中。
模糊控制在matlab中的实例
模糊控制在matlab中的实例以下是一个模糊控制在MATLAB中的简单实例:假设我们要设计一个模糊控制器来控制一个水箱中水位的高低。
我们可以先建立一个模糊推理系统,其中包含输入和输出变量以及规则。
1. 输入变量:水箱中的水位(假设范围为0到100)。
2. 输出变量:水泵的流量(假设范围为0到10)。
我们需要定义一组模糊规则,例如:如果水箱中的水位为低,则水泵的流量为低。
如果水箱中的水位为中等,则水泵的流量为中等。
如果水箱中的水位为高,则水泵的流量为高。
将这些规则转换成模糊集合,如下所示:输入变量:- 低:[0, 30]- 中等:[20, 50]- 高:[40, 100]输出变量:- 低:[0, 3]- 中等:[2, 6]- 高:[4, 10]接下来,我们可以使用MATLAB的Fuzzy Logic Toolbox来建立模糊推理系统。
以下是一个简单的MATLAB脚本:```% 定义输入变量water_level = fisvar("input", "Water Level", [0 100]); water_level.addmf("input", "low", "trapmf", [0 0 30 40]); water_level.addmf("input", "medium", "trimf", [20 50 80]);water_level.addmf("input", "high", "trapmf", [60 70 100 100]);% 定义输出变量pump_flow = fisvar("output", "Pump Flow", [0 10]);pump_flow.addmf("output", "low", "trapmf", [0 0 3 4]); pump_flow.addmf("output", "medium", "trimf", [2 6 8]); pump_flow.addmf("output", "high", "trapmf", [7 8 10 10]); % 建立模糊推理系统rule1 = "If Water Level is low then Pump Flow is low"; rule2 = "If Water Level is medium then Pump Flow is medium"; rule3 = "If Water Level is high then Pump Flow is high"; rules = char(rule1, rule2, rule3);fis = newfis("Water Tank Fuzzy Controller");fis = addvar(fis, water_level);fis = addvar(fis, pump_flow);fis = addrule(fis, rules);% 模糊控制器输入water_level_value = 70;% 运行模糊推理系统pump_flow_value = evalfis([water_level_value], fis);disp(["Water level: " num2str(water_level_value) "%"]); disp(["Pump flow: " num2str(pump_flow_value)]);```在这个简单的例子中,我们使用了Fuzzy Logic Toolbox来定义输入和输出变量以及规则,并运行模糊推理系统来计算输出值。
matlab下模糊控制器设计步骤
Matlab模糊控制工具箱为模糊控制器的设计提供了一种非常便捷的途径,通过它我们不需要进行复杂的模糊化、模糊推理及反模糊化运算,只需要设定相应参数,就可以很快得到我们所需要的控制器,而且修改也非常方便。
首先我们在Matlab的命令窗口(command window)中输入fuzzy,回车就会出来这样一个窗口。
下面我们都是在这样一个窗口中进行模糊控制器的设计。
1.确定模糊控制器结构:即根据具体的系统确定输入、输出量。
这里我们可以选取标准的二维控制结构,即输入为误差e和误差变化ec,输出为控制量u。
注意这里的变量还都是精确量。
相应的模糊量为E,EC和U,我们可以选择增加输入(Add Variable)来实现双入单出控制结构。
2.输入输出变量的模糊化:即把输入输出的精确量转化为对应语言变量的模糊集合。
首先我们要确定描述输入输出变量语言值的模糊子集,如{NB,NM,NS,ZO,PS,PM,PB},并设置输入输出变量的论域,例如我们可以设置误差E(此时为模糊量)、误差变化EC、控制量U的论域均为{-3,-2,-1,0,1,2,3};然后我们为模糊语言变量选取相应的隶属度函数。
在模糊控制工具箱中,我们在Member Function Edit中即可完成这些步骤。
首先我们打开Member Function Edit窗口.然后分别对输入输出变量定义论域范围,添加隶属函数,以E为例,设置论域范围为[-3 3],添加隶属函数的个数为7.然后根据设计要求分别对这些隶属函数进行修改,包括对应的语言变量,隶属函数类型。
3.模糊推理决策算法设计:即根据模糊控制规则进行模糊推理,并决策出模糊输出量。
首先要确定模糊规则,即专家经验。
对于我们这个二维控制结构以及相应的输入模糊集,我们可以制定49条模糊控制规则(一般来说,这些规则都是现成的,很多教科书上都有),如图。
制定完之后,会形成一个模糊控制规则矩阵,然后根据模糊输入量按照相应的模糊推理算法完成计算,并决策出模糊输出量。
如何使用Matlab进行模糊逻辑控制系统设计
如何使用Matlab进行模糊逻辑控制系统设计使用Matlab进行模糊逻辑控制系统设计摘要:模糊逻辑控制是一种模拟人类认知规则和思维方式的控制方法。
它可以处理不确定性和模糊性,并在不确定的环境中实现智能控制。
本文将介绍如何利用Matlab软件进行模糊逻辑控制系统设计,包括模糊逻辑原理、建立模糊控制器、模糊推理和控制器的优化。
1. 引言2. 模糊逻辑原理2.1 模糊集合和隶属函数2.2 模糊规则2.3 模糊推理3. 建立模糊控制器3.1 输入和输出变量定义3.2 规则库的建立3.3 建立模糊控制器4. 模糊推理4.1 模糊化4.2 模糊推理4.3 去模糊化5. 模糊控制器的优化5.1 控制器参数优化5.2 控制规则优化6. 实例分析7. 结论1. 引言现代工业控制系统中,需要根据不确定性和模糊性的环境来实现自适应和智能的控制。
模糊逻辑控制是一种基于模糊集合和模糊规则的控制方法,能够处理模糊的输入和模糊的输出。
Matlab是一款功能强大的数学软件,提供了丰富的工具箱用于模糊逻辑控制系统的设计和模拟。
在本文中,我们将介绍如何使用Matlab进行模糊逻辑控制系统设计的方法和步骤。
2. 模糊逻辑原理2.1 模糊集合和隶属函数模糊逻辑控制的核心是模糊集合和隶属函数的定义和运算。
模糊集合是一种特殊的集合,其中的元素具有模糊性和不确定性,可以用隶属函数来表示。
隶属函数描述了一个元素对一个模糊集合的隶属程度,通常以曲线、图像或数学方程的形式表示。
2.2 模糊规则模糊规则是模糊逻辑控制的基本规则。
它采用IF-THEN的形式,其中IF部分是输入变量的模糊集合,THEN部分是输出变量的模糊集合。
模糊规则通常是基于专家知识和经验得到的,可以用模糊控制的方式来实现复杂的控制逻辑。
2.3 模糊推理模糊推理是根据输入变量和模糊规则来获得输出变量的过程。
在模糊推理中,通过模糊化、模糊推理和去模糊化三个步骤来实现。
模糊化将输入变量映射为模糊集合,模糊推理使用模糊规则来计算输出变量的模糊集合,去模糊化将模糊集合映射为具体的输出值。
模糊控制在matlab中的实例
模糊控制在matlab中的实例以下是一个简单的模糊控制器在 MATLAB 中的实例:假设你有一个被控对象,它的输出值 y 取决于输入值 u。
你想要设计一个模糊控制器来控制该对象。
首先,你需要定义模糊控制器的输入和输出变量以及它们的隶属度函数。
示例中,我们定义了两个输入变量 x1 和 x2 以及一个输出变量y,每个变量都由三个隶属度函数组成。
```matlab% 定义输入和输出变量及其隶属度函数x1 = fuzzyvar("input", [-5 5], "bellmf", [1 2 3]);x2 = fuzzyvar("input", [-5 5], "trimf", [-4 0 4]);y = fuzzyvar("output", [-10 10], "trimf", [-8 0 8]);```接下来,我们需要定义规则库。
规则库是一系列模糊规则的集合,每条规则由前提和结论组成。
在这个示例中,我们定义了九条规则,将输入变量 x1 和 x2 映射到输出变量 y。
```matlab% 定义规则库ruleList = ["If (x1 is 1) and (x2 is 1) then (y is -7)";"If (x1 is 1) and (x2 is 2) then (y is -9)";"If (x1 is 1) and (x2 is 3) then (y is -9)";"If (x1 is 2) and (x2 is 1) then (y is -5)";"If (x1 is 2) and (x2 is 2) then (y is -7)";"If (x1 is 2) and (x2 is 3) then (y is -8)";"If (x1 is 3) and (x2 is 1) then (y is -3)";"If (x1 is 3) and (x2 is 2) then (y is -5)";"If (x1 is 3) and (x2 is 3) then (y is -6)";];```现在我们可以创建模糊控制器,并将输入变量和输出变量与规则库相结合。
Matlab技术模糊控制方法
Matlab技术模糊控制方法随着科技的不断进步,控制系统在各个领域中起着至关重要的作用。
为了适应不同的应用场景,不同的控制方法也应运而生。
其中,模糊控制方法因其对系统非线性特性的适应性和可解释性而备受关注。
本文将详细介绍Matlab技术中的模糊控制方法,包括模糊集合的表示与运算、模糊推理规则的建立、模糊控制器的设计与优化。
第一部分:模糊集合与模糊运算在模糊控制中,首先需要将系统的输入和输出用模糊集合的形式表示。
模糊集合是用隶属度函数来描述的,隶属度函数表示了某个元素属于该模糊集的程度。
Matlab中提供了一些方便的工具和函数来实现模糊集合的表示和计算。
首先,我们需要定义模糊集合的隶属度函数。
常见的隶属度函数有三角形隶属度函数、梯形隶属度函数、高斯隶属度函数等。
可以使用Matlab中的fuzzify函数来定义这些函数,并通过plot函数来可视化。
接下来,我们可以使用Matlab中的模糊运算函数来进行模糊集合的运算,例如交集运算和并集运算。
这些函数包括min、max、prod等函数。
通过这些函数,我们可以方便地实现模糊集合的合并和比较。
第二部分:模糊推理规则的建立模糊推理规则是模糊控制中的核心部分,它将模糊集合的输入映射为输出。
在Matlab中,我们可以使用fuzzy规则编辑器来定义和管理模糊推理规则。
首先,我们需要确定输入和输出的模糊集合。
在fuzzy规则编辑器中,我们可以指定输入和输出变量,并为其分配模糊集合。
接着,我们可以添加模糊规则,每个模糊规则包括条件和结论两个部分。
条件部分是输入变量的模糊集合的组合,结论部分是输出变量的模糊集合。
在添加模糊规则之后,我们可以使用fuzzify函数将输入变量模糊化,并使用inference函数进行推理。
推理结果将以模糊集合的形式表示。
第三部分:模糊控制器的设计与优化在模糊控制中,模糊控制器是通过将输入模糊集合映射为输出模糊集合来实现控制目标的。
在Matlab中,我们可以使用fuzzy控制器编辑器来设计和优化模糊控制器。
《模糊控制》实验指导书
《模糊控制》实验指导书李士勇沈毅周荻邱华洲袁丽英实验名称:实验地点:指导教师:联系电话:Harbin Institute of Technology2005.3模糊控制实验指导书一、 实验目的利用Matlab 软件实现模糊控制系统仿真实验,了解模糊控制的查询表方法和在线推理方法的基本原理及实现过程,并比较模糊控制和传统PID 控制的性能的差异。
二、 实验要求设计一个二维模糊控制器分别控制一个一阶被控对象11)(11+=s T s G 和二阶被控对象)1)(1(1)(212++=s T s T s G 。
先用模糊控制器进行控制,然后改变控制对象参数的大小,观察模糊控制的鲁棒性。
为了进行对比,再设计PID 控制器,同样改变控制对象参数的大小,观察PID 控制的鲁棒性。
也可以用其他语言编制模糊控制仿真程序。
三、 实验内容(一)查询表式模糊控制器实验设计查询表法是模糊控制中的最基本的方法,用这种方法实现模糊控制决策过程最终转化为一个根据模糊控制系统的误差和误差变化(模糊量)来查询控制量(模糊量)的方法。
本实验利用了Matlab 仿真模块——直接查询表(Direct look-up table )模块(在Simulink 下的Functions and Tables 模块下去查找),将模糊控制表中的数据输入给 Direct look-up table ,如图1所示。
设定采样时间(例如选用0.01s ),在仿真中,通过逐步调整误差量化因子Ke ,误差变化的量化因子Kec 以及控制量比例因子Ku 的大小,来提高和改善模糊控制器的性能。
模糊控制器设计步骤:1、选定误差E和误差变化EC作为模糊控制器的输入(二维模糊控制器),控制量U作为模糊控制器的输出。
E,EC和U的模糊集及其论域定义如下:EC和U的模糊语言变量集均为{NB,NM,NS,ZO,PS,PM,PB}E的模糊语言变量集为{NB,NM,NS,NO,PO,PS,PM,PB}E和EC论域为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6}U的论域为{-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7}确定模糊变量的赋值表:对模糊变量赋值,就是确定论域内元素对模糊语言变量的隶属度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模糊推理输入输出曲面视图Surfview (Surface)
⑴ 模糊推理系统编辑器Fuzzy 处理最顶层构建问题,例如输入输出变量的数目、变量名等 激活(进入)方法:命令窗口(command window)执行 Fuzzy命令。
激活模糊推理系统系统编辑器 :
基本属性
输入模糊变量图形框 组成 模糊规则图形框
a=addvar(a,’input’,’service’,[0 10]);
②函数addmf
功能:向模糊推理系统的语言变量添加隶属度函数。
格式:a=addmf(a, varType, varIndex,mfName,mfType, mfParams)
说明:隶属度函数只能为模糊推理系统中已经存在的某 一语言变量的语言值添加隶属度函数。参数列表中,a为 模糊推理系统对应的矩阵变量名, varType指定语言变量 类型的字符串(如‘input’或‘output’); varIndex 指定语言变量编号的数字;mfName指定隶属度函数名称; mfType指定隶属度函数类型; mfParams指定隶属度函数 的参数。
例:a=newfis(‘tipper’);
a=addvar(a,’input’,’service’,[0 10]); a=addmf(a,’input’,1,’poor’,’guassmf’,[1.5 0]); a=addmf(a,’input’,1,’good’,’guassmf’,[1.5 5]); a=addmf(a, ’input’,1,’excellent’,’guassmf’,[1.5 注意:对于每个语言变量的隶属度函数按该函数被添加的顺 10]); 序编号,编号从1开始,依次递增。
min prod (乘积法)
3. 输出的合成计算Aggregation(模糊规则综合采用的方法) max prober(a,b)=a+b-ab Aggregation sum(求和法) prober (概率法)
4. 逆模糊化计算(Defuzzification)
centroid(重心法) bisector(面积平分法) lom(最大隶属度函数中的取最大值法) som(最大隶属度函数中的取最小值法)
④函数zmf 功能:建立Z型隶属度函数。
格式:y=zmf(x,[a b])
说明:曲线在(a,b)之间是光滑的样条曲线,在a左 段为1,b右段为0,跳跃点是(a+b)/2。参数x指定变量论 域范围。 例: x=0:0.1:10; y=zmf(x, [2 8]); plot(x,y) xlable(‘zmf,P=[2 8]’)
③ 函数gaussmf 功能:建立高斯型隶属度函数。
格式:y=gaussmf(x,[sig c])
其中:参数x指定变量论域范围,参数c决定了函数的中心 点,sig决定了函数曲线的宽度σ 。 高斯函数的表达式为: y e
1 x c 2 ( ) 2
例: x=0:0.1:10; y=gaussmf(x, [2 5]); plot(x,y) xlable(‘gaussmf,P=[2 5]’)
x=0:0.1:10; y=trimf(x, [3 6 8]); plot(x,y) xlable(‘trimf,P=[3 6 8]’)
②函数trapmf(trap表示trapezium梯形)
功能:建立梯形隶属度函数。
格式:y=trapmf(x,[a b c d])
其中:参数x指定变量论域范围,参数a,b, c和d指定梯形隶 属度函数的形状,该函数在b,c点处取最大值1,a,d点为0。 例: x=0:0.1:10; y=trapmf(x, [1 5 7 8]); plot(x,y) xlable(‘trapmf,P=[1 5 7 8]’)
mom(平均最大隶属度法)
⑵ 在命令窗口键 入mfedit可激活隶 属度函数编辑器
MATLAB的FIS结构和存储 1、FIS(模糊推理系统)结构 模糊推理系统是以一种FIS的结构来表示和存储的 ①GUI工具 访问方法 ②函数 ③结构名.成员名 2、存储( .fis文件) 访问 readfis-读 writefis-写
双击
双击
Mfedit Ruleedit
Mfedit
输出模糊变量图形框
双击
基本属性包括:
1. 模糊集合合成运算(连接词的运算) min(最小法) ① and prod(乘积法)
② or
max(最大法) prober(概率法)
prober(b)=a+b-ab
2. 蕴涵计算(Implication)
2、模糊逻辑系统输入输出变量及隶属度函数的添加 ①函数addvar 功能:向模糊推理系统中添加语言变量。 格式:a=addvar(a, varType, varName, varBounds) 说明:参数列表中,a为模糊推理系统对应的矩阵变量名, varType用于指定语言变量的类型为字符型(如‘input’ 或‘output’); varName用于指定语言变量的名; varBounds用于指定语言变量的论域范围。 注意:对于添加到同一个模糊推理系统的语言变量,按 先后顺序自动编号,编号从1开始,逐渐递增。对于分属 于输入与输出的不同语言变量则独立地分别编号。 例:a=newfis(‘tipper’); //创建并返回一个新的FIS系 统
MATLAB模糊逻辑工具箱 命令行函数(以 .m文件存放)
工具
建立模糊逻辑推理系统
图形交互工具(GUI-Graphical User Interface)
(图形用户界面)
接口仿真逻辑模块(Simulink环境) 图形交互工具箱提供的图形化工具有五类: 模糊推理系统编辑器Fuzzy 隶属度函数编辑器Mfedit (Membership function) 模糊规则编辑器Ruleedit 模糊规则观察器Ruleview
命令函数
1、隶属度函数 ①函数trimf(表示triangular membership function) 功能:建立三角形隶属度函数。 格式:y=trimf(x,[a b c])
其中:参数x指定变量论域范围,参数a,b和c指定三角形 函数的形状,该函数在b点处取最大值1,a,c点为0。 例:建立三角形隶属度函数并绘制曲线。
⑤函数smf 功能:建立S型隶属度函数。
格式:y=smf(x,[a b])
说明:曲线在(a,b)之间是光滑的样条曲线,在a左 段为0,b右段为1,跳跃点是(a+b)/2。参数x指定变量论 域范围。 例: x=0:0.1:10; y=smf(x, [2 8]); plot(x,y) xlable(‘smf,P=[2 8]’)