模糊控制MATLAB实现具体过程(强势吐血推荐)
- 格式:ppt
- 大小:1.31 MB
- 文档页数:61
用 Matlab 的 Fuzzy 工具箱实现模糊控制Matlab, Fuzzy, 模糊控制, 工具箱用Matlab 中的Fuzzy 工具箱做一个简单的模糊控制,流程如下:1、创建一个FIS (Fuzzy Inference System ) 对象,a = newfis(fisName,fisType,andMethod,orMethod,impMethod, aggMethod,defuzzMethod)一般只用提供第一个参数即可,后面均用默认值。
2、增加模糊语言变量a = addvar(a,'varType','varName',varBounds)模糊变量有两类:input 和output。
在每增加模糊变量,都会按顺序分配一个index,后面要通过该index 来使用该变量。
3、增加模糊语言名称,即模糊集合。
a = addmf(a,'varType',varIndex,'mfName','mfType',mfParams)每个模糊语言名称从属于一个模糊语言。
Fuzzy 工具箱中没有找到离散模糊集合的隶属度表示方法,暂且用插值后的连续函数代替。
参数mfType 即隶属度函数(Membership Functions),它可以是Gaussmf、trimf、trapmf等,也可以是自定义的函数。
每一个语言名称也会有一个index,按加入的先后顺序得到,从 1 开始。
4、增加控制规则,即模糊推理的规则。
a = addrule(a,ruleList)其中ruleList 是一个矩阵,每一行为一条规则,他们之间是ALSO 的关系。
假定该FIS 有N 个输入和M 个输出,则每行有N+M+2 个元素,前N 个数分别表示N 个输入变量的某一个语言名称的index,没有的话用0 表示,后面的M 个数也类似,最后两个分别表示该条规则的权重和个条件的关系,1 表示AND,2 表示OR。
如何利用Matlab进行模糊控制引言近年来,随着科技的不断发展,模糊控制作为一种重要的控制方法,在各个领域得到了广泛的应用。
而Matlab作为一款功能强大的数学工具软件,对于模糊控制的实现提供了便捷的支持。
本文将介绍如何利用Matlab进行模糊控制,以及其在实际应用中的优势和局限性。
一、模糊控制简介模糊控制是一种基于模糊逻辑的控制方法,它通过将模糊规则应用于控制系统,使其能够对不确定性和模糊信息进行处理。
与传统的精确控制方法相比,模糊控制更适用于处理复杂系统或无法精确建模的系统。
二、Matlab中的模糊控制工具箱Matlab提供了专门的模糊控制工具箱,可以方便地实现模糊控制系统的建模、仿真和优化等操作。
在Matlab的模糊控制工具箱中,主要包括两个核心部分:模糊推理引擎和模糊控制器。
1. 模糊推理引擎模糊推理引擎是模糊控制系统的核心部分,它负责根据输入和模糊规则,对系统进行推理和输出控制量。
在Matlab中,可以使用命令"newfis"来创建一个新的模糊控制系统,然后通过定义输入和输出变量、设定隶属函数和模糊规则等步骤,来构建一个完整的模糊控制系统。
2. 模糊控制器模糊控制器是模糊控制系统的具体实现,它将模糊推理引擎与输入输出之间的映射关系结合起来。
在Matlab中,可以使用命令"newfis"创建一个新的模糊控制系统,然后使用"addInput"和"addOutput"来添加输入和输出变量,最后通过设定隶属函数和模糊规则等步骤,来实现模糊控制器的搭建。
三、模糊控制的实际应用模糊控制在实际应用中有着广泛的应用领域,例如机器人控制、汽车导航、电力系统等。
下面将以一个模拟小车控制的实例来介绍如何利用Matlab进行模糊控制。
假设有一个小车需要根据距离和角度来控制其行驶方向和速度。
首先要定义输入和输出变量,这里我们将距离划分为近、中、远三个模糊集,角度划分为左、中、右三个模糊集,行驶方向划分为左转、直行、右转三个模糊集,行驶速度划分为慢、中、快三个模糊集。
下面用一个简单的例子作介绍:(本例不是特别针对实现什么功能,只是为了介绍方便)第一部分创建一个模糊逻辑(.fis文件)第一步:打开模糊推理系统编辑器步骤:在Commond Window 键入fuzzy回车打开如下窗口,既模糊推理系统编辑器第二步:使用模糊推理系统编辑器本例用到两个输入,两个输出,但默认是一个输人,一个输出步骤:1、添加一个输入添加一个输出得如下图2、选择Input、output(选中为红框),在Name框里修改各输入的名称并将And method 改为prod,将Or method 改为probor提示:在命名时’_’在显示时为下标,可从上图看出。
第三步:使用隶属函数编辑器该编辑器提供一个友好的人机图形交互环境,用来设计和修改模糊推理系中各语言变量对应的隶属度函数的相关参数,如隶属度函数的形状、范围、论域大小等,系统提供的隶属度函数有三角、梯形、高斯形、钟形等,也可用户自行定义。
步骤:1、双击任何一个输入量(In_x、In_y)或输出量打开隶属度函数编辑器。
2、在左下处Range和Display Range处添加取值范围,本例中In_x和In_y的取值范围均为[0 10], Out_x和Out_y的取值范围均为[0 1]3、默认每个输入输出参数中都只有3个隶属度函数,本例中每个输入输出参数都需要用到五个,其余几个需要自己添加:选中其中一个输入输出参数点击Edit菜单,选Add MFS…打开下列对话框将MF type设置为trimf(三角形隶属度函数曲线,当然你也需要选择其他类型) 将Number of MFs设置为2点击OK按钮同样给其他三个加入隶属度函数4、选中任何一个隶属度函数(选中为红色),在Name中键入名称,在Type 中选择形状,在Params中键入范围,然后回车如下图:5、关闭隶属函数编辑器第四步:使用规则编辑器通过隶规则编辑器来设计和修改“IF...THEN”形式的模糊控制规则。
模糊控制在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进行模糊控制的步骤1. 定义模糊集合和模糊规则库使用Matlab进行模糊控制的第一步是定义模糊集合和模糊规则库。
模糊控制中的模糊集合可以通过Matlab的fuzzymf函数来定义,它可以根据实际问题选择三角形、梯形、高斯函数等不同形状的隶属函数。
模糊规则库则是描述输入和输出之间关系的集合,它由一组模糊规则构成。
在Matlab中,可以使用fuzzylut函数来定义模糊规则库。
这个函数需要指定输入和输出的隶属函数以及规则的后件。
2. 模糊化和模糊推理定义好模糊集合和模糊规则库之后,接下来就是进行模糊化和模糊推理的计算了。
在Matlab中,可以使用fuzzy函数进行模糊化的计算。
这个函数需要输入模糊集合、输入的隶属函数和对应的输入值,然后计算得到模糊输入。
模糊推理可以通过fuzzy函数结合模糊规则库进行计算。
这个函数需要输入模糊规则库、模糊输入和输出的隶属函数,然后计算得到模糊输出。
Matlab技术模糊控制方法随着科技的不断进步,控制系统在各个领域中起着至关重要的作用。
为了适应不同的应用场景,不同的控制方法也应运而生。
其中,模糊控制方法因其对系统非线性特性的适应性和可解释性而备受关注。
本文将详细介绍Matlab技术中的模糊控制方法,包括模糊集合的表示与运算、模糊推理规则的建立、模糊控制器的设计与优化。
第一部分:模糊集合与模糊运算在模糊控制中,首先需要将系统的输入和输出用模糊集合的形式表示。
模糊集合是用隶属度函数来描述的,隶属度函数表示了某个元素属于该模糊集的程度。
Matlab中提供了一些方便的工具和函数来实现模糊集合的表示和计算。
首先,我们需要定义模糊集合的隶属度函数。
常见的隶属度函数有三角形隶属度函数、梯形隶属度函数、高斯隶属度函数等。
可以使用Matlab中的fuzzify函数来定义这些函数,并通过plot函数来可视化。
接下来,我们可以使用Matlab中的模糊运算函数来进行模糊集合的运算,例如交集运算和并集运算。
这些函数包括min、max、prod等函数。
通过这些函数,我们可以方便地实现模糊集合的合并和比较。
第二部分:模糊推理规则的建立模糊推理规则是模糊控制中的核心部分,它将模糊集合的输入映射为输出。
在Matlab中,我们可以使用fuzzy规则编辑器来定义和管理模糊推理规则。
首先,我们需要确定输入和输出的模糊集合。
在fuzzy规则编辑器中,我们可以指定输入和输出变量,并为其分配模糊集合。
接着,我们可以添加模糊规则,每个模糊规则包括条件和结论两个部分。
条件部分是输入变量的模糊集合的组合,结论部分是输出变量的模糊集合。
在添加模糊规则之后,我们可以使用fuzzify函数将输入变量模糊化,并使用inference函数进行推理。
推理结果将以模糊集合的形式表示。
第三部分:模糊控制器的设计与优化在模糊控制中,模糊控制器是通过将输入模糊集合映射为输出模糊集合来实现控制目标的。
在Matlab中,我们可以使用fuzzy控制器编辑器来设计和优化模糊控制器。
模糊控制在matlab中的实例模糊控制是一种基于经验知识的控制方法,与传统的精确控制方法不同,它允许对系统的行为进行模糊描述,并通过一套模糊规则来对系统进行控制。
在实际应用中,模糊控制常常用于处理非线性、复杂和不确定的系统,例如温度控制、汽车制动系统等。
在MATLAB中,可以通过使用Fuzzy Logic Toolbox工具箱来实现模糊控制。
下面以一个简单的温度控制系统为例,来介绍如何在MATLAB中进行模糊控制的实现。
首先,需要定义模糊控制器的输入和输出变量,以及它们的模糊集合。
在温度控制系统中,可以定义温度作为输入变量,定义加热功率作为输出变量。
可以将温度的模糊集合划分为"冷"、"适中"和"热"三个模糊集合,将加热功率的模糊集合划分为"低"、"中"和"高"三个模糊集合。
```temperature = readfis('temperature.fis');temp_input = [-10, 40];temp_output = [0, 100];temperature_inputs = ["冷", "适中", "热"];temperature_outputs = ["低", "中", "高"];```然后,需要定义模糊规则。
模糊规则用于根据输入变量的模糊集合和输出变量的模糊集合之间的关系来确定控制规则。
例如,当温度为"冷"时,加热功率应该为"高"。
可以根据经验知识定义一系列模糊规则。
```rules = ["冷", "高";"适中", "中";"热", "低";];```接下来,需要定义模糊控制器的输入和输出变量值。