引用 在SIMULINK里把模糊逻辑生成查寻表(原创)??
2010-06-09 00:14:48|??分类: matlab |??标签: |字号大中小?订阅
本文引用自foundy《在SIMULINK里把模糊逻辑生成查寻表(原创)》
?
引用
foundy 的 在SIMULINK里把模糊逻辑生成查寻表(原创)
???????????????????????????????????????????????????????????? 李会先
?? ?先申明下,针对那些抄袭者,把这些想法和工作毫无遮掩的用于商业目的家伙将受到公众发自内心的鄙视!我们面临的社会,真的需要一种踏实的精神,而不是抄来抄去,骗来骗去,仍然是伪劣产品!
???????? 在如何在MATLAB下把模糊推理系统转化为查询表(原创) 里,使用MATLAB2007b,同样的任务,使用新版本,其实操作更为简单,我还是以MATLAB下的模糊控制水位系统做演示(MATLAB 2009a),但有些操作或者解释被简化了,不清楚请参看如何在MATLAB下把模糊推理系统转化为查询表(原创) :
??? 第一步:运行MATLAB 2009a。
??? 第二步:在MATLAB菜单下Help 里点击Demo,到下面图示:
?
第三步:在Toolboxes里的Fuzzy Logic里打开Demo “Water Level Control in? a Tank”,把仿真停止时间设置为0.2,运行一次,停止。把该模型另存为桌面文件,使用默认文件名。
第四步:然后新建一个模型文件,把Water Level Control in? a Tank模型里的模糊控制模块考到新文件来。最后的样子如下,也把该文件保存在桌面,使用默认文件名。
第五步:点SIMULINK界面里Tools\SystemTest 进入系统测试界面。
?
第六步:在红框栏右边把第四步保存的模型加进来,也就是这个模型是我们要测试的模型。鼠标选中Main Test项,在菜单象Insert\Test Element\Simulink,而后样子如下:
第七步:在Test Vectors 项里定义两个测试向量,变量名使用默认的。TestVector1=[-1:0.1:1],?TestVector1=[-0.1:0.02:0.1],在Test Variables 里定义测试变量,st_signal。 如下图:
?
?第八步:把测试向量TestVector1=[-1:0.1:1],?TestVector1=[-0.1:0.02:0.1]分别映射到第四步所建模糊控制器的输入口in1, int2,做为输入测试信号。把测试变量st_signal映射到模糊控制器输出口out1.这就步操作是,在测试界面左端选中Simulink项。设置后的界面如下:
输入测试向量到模糊模型输入口映射:
?
模糊控制器输出保存映射:
?
?
第九步,在测试界面点Save Results项,设置如下:
?第十步,运行测试,注意在Main Test(231 Iterations)(231次迭代,运算代价),等待测试结束。
??第十一步,测试成功结束后,在系统测试界面点Tools\Test Results Viewer,点工具栏里的Surf Plot表面画,X,Y ,Z分别设置为TestVector1,TestVector1,st_signal.点Plot按钮,看到如下图:
???
第十二步,把TestVector1,TestVector1,st_signal输出到MATLAB空间,在Test Results Viewer界面左端,右击st_signal跳出弹出菜单,点Export,同理对TestVector1,TestVector1执行同样操作。
第十三步,在MATLAB命令窗键入whos命令,点开变量st_signal.看看有什么?如下吧:
6个21X11个表,我们列出第六个:
?
???第十四步,回到第三步的SIMULINK水位模糊控制模型,从SIMULINK库里把二维查询表拖一个到模型,把原来模型的模糊控制器去掉,包括它前面的那个MUX也去掉。点开查询表如下设置:
第十五步:最后用查询表代替模糊控制器的模型如下,你可以模拟查看控制效果了,阶跃测试是一般的测试方法,自己去实验吧。
?
使用图像识别技术的水位模糊控制装置1
在SIMULINK里优化模糊逻辑隶属函数参数