当前位置:文档之家› (完整版)MATLABS函数的调用实例

(完整版)MATLABS函数的调用实例

(完整版)MATLABS函数的调用实例
(完整版)MATLABS函数的调用实例

期末作业

1.求解微分方程????

?????=++++=++=81024321.31.

232221.1x x x x x x x x x x x ,初始条件1230x x x ===。要求交mdl 文件及仿真结果的截图。

解:用Simulink 连接的仿真图如下所示:

求解出的x1,x2,x3的解如下图(a )所示的仿真结果:

2.当电源电压)30100sin(10)(+=t t x πV 时,求解表达式y(t)的波形:

y x dt t dy 314)(-+=,其中y(0)=1。要求交mdl 文件及仿真结果的截图。 解:用Simulink 连接的仿真图如下所示:

仿真结果如下图(b )所示:

3.使用S 函数实现y=5*x+3,建立仿真模型并得出仿真结果。要求交mdl 文件,S 函数及仿真结果的截图。

解:用Simulink 连接的仿真图如下所示:

S 函数的代码如下:

function [sys,x0,str,ts] = mysfun3 (t,x,u,flag)

switch flag,

case 0,

[sys,x0,str,ts]=mdlInitializeSizes;

case 1,

sys=mdlDerivatives(t,x,u);

case 2,

sys=mdlUpdate(t,x,u);

case 3,

sys=mdlOutputs(t,x,u);

case 4,

sys=mdlGetTimeOfNextVarHit(t,x,u); case 9,

sys=mdlTerminate(t,x,u);

otherwise

error(['Unhandled flag = ',num2str(flag)]); end

function [sys,x0,str,ts]=mdlInitializeSizes sizes = simsizes;

sizes.NumContStates = 0;

sizes.NumDiscStates = 0;

sizes.NumOutputs = 1;

sizes.NumInputs = 1;

sizes.DirFeedthrough = 1;

sizes.NumSampleTimes = 1;

sys = simsizes(sizes);

x0 = [];

str = [];

ts = [0 0];

function sys=mdlDerivatives(t,x,u)

sys = [];

function sys=mdlUpdate(t,x,u)

sys = [];

function sys=mdlOutputs(t,x,u)

sys = 5*u+3;

function sys=mdlGetTimeOfNextVarHit(t,x,u) sampleTime = 1;

sys = t + sampleTime;

function sys=mdlTerminate(t,x,u)

sys = [];

仿真结果如下图(c)所示:

4.已知某系统的状态方程如下:[]x y u x x 32

1,101300120211-=??

??

?

?????+?????

?????---=?

试用S 函数建立其仿真模型,并求其单位阶跃响应曲线。 解:用Simulink 连接的仿真图如下所示:

S 函数的代码如下:

function [sys,x0,str,ts] =mysfun4(t,x,u,flag)

switch flag,

case 0,

[sys,x0,str,ts]=mdlInitializeSizes;

case 1,

sys=mdlDerivatives(t,x,u);

case 2,

sys=mdlUpdate(t,x,u);

case 3,

sys=mdlOutputs(t,x,u);

case 4,

sys=mdlGetTimeOfNextVarHit(t,x,u);

case 9,

sys=mdlTerminate(t,x,u);

otherwise

DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag)); end

function [sys,x0,str,ts]=mdlInitializeSizes sizes = simsizes;

sizes.NumContStates = 3;

sizes.NumDiscStates = 0;

sizes.NumOutputs = 1;

sizes.NumInputs = 1;

sizes.DirFeedthrough = 0;

sizes.NumSampleTimes = 1;

sys = simsizes(sizes);

x0 = [0;0;0];

str = [];

ts = [0 0];

function sys=mdlDerivatives(t,x,u)

x(1)=1*x(1)-1*x(2)-2*x(3)+u;

x(2)=2*x(2)-1*x(3);

x(3)=3*x(3)+u;

sys =x;

function sys=mdlUpdate(t,x,u)

sys = [];

function sys=mdlOutputs(t,x,u)

sys = 1*x(1)-2*x(2)+3*x(3);

function sys=mdlGetTimeOfNextVarHit(t,x,u) sampleTime = 1;

sys = t + sampleTime;

function sys=mdlTerminate(t,x,u)

sys = [];

仿真结果如下图(d)所示:

VFP常见编程实例(免费下载)

VFP常见编程实例 1、1-100的累加 ** 求1到100的累加值 CLEAR s=0 i=1 DO WHILE i<=100 s=s+i i=i+1 &&一定记住先累加后循环ENDDO ?s RETURN 2、阶乘 ** 求5的阶乘 CLEAR j=1 i=1 DO WHILE i<=5 j=j*i

i=i+1 ENDDO ?j RETURN 3、求阶乘和 ** 求1至5的阶乘和CLEAR s=0 i=1 j=1 DO WHILE i<=5 j=j*i s=s+j i=i+1 ENDDO ?s RETURN 4、条件定位

** 查询定位记录指针在赵伟上 CLEAR USE 学生 LOCATE FOR 姓名="赵伟" IF FOUND() DISPLAY ELSE CANCEL ENDIF CONTINUE 5、用scan语句查询定位 ** 用scan语句查询定位记录在赵伟上 CLEAR SCAN FOR 姓名="赵伟" DISPLAY ENDSCAN RETURN 6、用scan语句扫描符合条件的记录,并显示出来** 把年龄小于30岁的人显示出来

SCAN FOR 年龄<30 DISPLAY ENDSCAN RETURN 7、查找男性职工 ** 查找男性职工CLEAR LOCATE FOR 性别="男" DO WHILE FOUND() DISPLAY CONTINUE ENDDO RETURN ** 查找男性职工CLEAR LOCATE FOR 性别="男" DO WHILE NOT EOF() DISPLAY CONTINUE

模糊控制详细讲解实例

一、速度控制算法: 首先定义速度偏差-50 km/h ≤e (k )≤50km/h ,-20≤ec (i )= e (k )- e (k-1)≤20,阀值e swith =10km/h 设计思想:油门控制采用增量式PID 控制算法,刹车控制采用模糊控制算法,最后通过选择规则进行选择控制量输入。 选择规则: e (k )<0 ① e (k )>- e swith and throttlr_1≠0 选择油门控制 ② 否则:先将油门控制量置0,再选择刹车控制 0

VFP函数大全

VFP函数大全 %运算符用于计算并返回两个数值表达式相除之后的余数 $(包含)运算符用于进行字符表达式之间的包含关系运算,如果一个字符表达式包含在另一个字符表达式之中,则函数返回真 ABS() 计算并返回指定数值表达式的绝对值 ACLASS() 用于将一个对象的父类名放置于一个内存数组中 ACOPY() 把一个数组的元素拷贝到另一个数组中 ACOS() 计算并返回一个指定数值表达式的余弦值 ADATABASES() 用于将所有打开的数据库名和它的路径存入一个内在变量数组中 ADB OBJECT S() 用于把当前数据库中的连接、表或SQL视图的名存入内存变量数组中 ADEL() 用于从一维数据中删除一个元素,或从二维数组中删除一行或者一列元素 ADIR() 将文件的有关信息存入指定的数组中,然后返回文件数 AELEMENT() 通过元素的下标,返回元素号 AFIELDS 将当前的结构信息存入数组中,然后返回表中的字段数 AFONT() 将可用字体的信息存入数组中 AERROR() 用于创建包含VFP或ODBC错误信息的内存变量 AINS() 在一维数组中插入一个元素或在二维数组中插入一行或一列元素 AINSTANCE() 用于将类的所有实例存入内存变量数组中,然后返回数组中存放的实例数 ALEN() 返回数组中元素、行或者列数 ALIAS() 返回当前工作区或指定工作区内表的别名 ALLTRIM() 从指定字符表达式的首尾两端删除前导和尾随的空格字符,然后返回截去空格后的字符串 AMEMBERS() 用于将对象的属性、过程和成员对象存入内存变量数组中

ANSITOOEM() 将指定字符表达式中的每个字符转换为MS-DOS(OEM)字符集中对应字符 APRINTERS() 将Print Manager中安装的当前打印机名存入内存变量数组中 ASC() 用于返回指定字符表达式中最左字符的ASCII码值 ASCAN() 搜索一个指定的数组,寻找一个与表达式中数据和数据类型相同的数组元素 ASELOBJ() 将活动的Form设计器当前控件的对象引用存储到内存变量数组中 ASIN() 计算并返回指定数值表达式反正弦值 ASORT() 按升序或降序排列数组中的元素 ASUBSCRIPT() 计算并返回指定元素号的行或者列坐标 AT() 寻找字符串或备注字段在另一字符串或备注字段中的第一次出现,并返回位置 ATAN() 计算并返回指定数值表达式的反正切值 ATC() 寻找字符串或备注字段中的第一次出现,并返回位置,将不考虑表达式中字母的大小写 ATCLINE() 寻找并返回一个字符串表达式或备注字段在另一字符表达式或备注字段中第一次出现的行号。不区分字符大小写 ATLINE() 寻找并返回一个字符表达式或备注字段在另一字符表达式或备注字段中第一次出现的行号ATN2() 根据指定的值返回所有4个像限内的反正切值 AUSED() 用于将一次会话期间的所有表别名和工作区存入变量数组之中 BAR() 从用DEFINE POPUP命令定义的菜单中返回最近所选择的菜单项的编号,或返回一个从VFP菜单所选择的一个菜单命令 BARCOUNT() 返回DEFINE POPUP命令所定义的菜单中的菜单项数,或返回VFP系统菜单上的菜单项数 BARPROMPT() 返回一个菜单项的有关正文 BETWEEN() 确定指定的表达式是否介于两个相同类型的表达式之间 BITAND() 返回两个数值表达式之间执行逐位与(AND)运算的结果 BITCLEAR() 清除数值表达式中的指定位,然后再返回结果值 BITLSHIFT() 返回将数值表达式左移若干位后的结果值

模糊控制详细讲解实例之欧阳歌谷创作

一、速度控制算法: 欧阳歌谷(2021.02.01) 首先定义速度偏差-50 km/h≤e(k)≤50km/h,-20≤ec(i)=e(k)-e(k-1)≤20,阀值eswith=10km/h 设计思想:油门控制采用增量式PID控制算法,刹车控制采用模糊控制算法,最后通过选择规则进行选择控制量输入。 选择规则: e(k)<0 ①e(k)>-eswith and throttlr_1≠0 选择油门控制 ②否则:先将油门控制量置0,再选择刹车控制 0

E/EC和U取相同的隶属度函数即: 说明:边界选择钟形隶属度函数,中间选用三角形隶属度函数,图像略 实际EC和E输入值若超出论域范围,则取相应的端点值。 3.模糊控制规则 由隶属度函数可以得到语言值隶属度(通过图像直接可以看出)如下表: 表1:E/EC和U语言值隶属度向量表 设置模糊规则库如下表: 表2:模糊规则表 3.模糊推理 由模糊规则表3可以知道输入E与EC和输出U的模糊关系,这里我取两个例子做模糊推理如下: if (E is NB) and (EC is NM) then (U is PB) 那么他的模糊关系子矩阵为:

模糊控制规则表生成程序

模糊控制规则表生成程序 %偏差E的赋值表 E=[1.0 0.8 0.7 0.4 0.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.3 0.7 1.0 0.7 0.2 0.0 0.0 0.0 0.0 0.0 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.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.6 0.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.7 1.0 0.7 0.3 0.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.4 0.7 0.8 1.0]; %偏差变换率EC的赋值表 Ec=[1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0]; %输出U的赋值表 u=[1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.3 0.7 1.0 0.7 0.3 0.0 0.0

vfp中api函数调用实例

vfp中api函数调用实例 我们在vfp编程时,为了弥补vfp本身功能的不足,常常会用到win32api函数来对vfp 的功能进行扩展,例如取得系统信息、对注册表进行操作等,但由于win32api函数是c++的数据结构形式,在调用时与vfp的数据格式有所不同,因此在调用时往往会产生问题。下面,笔者就在vfp如何调用win32api函数,并就一些常用的win32api函数调用实例作一具体介绍。 一、vfp中调用win32api函数的格式 vfp中调用win32api函数的命令主要是declare-dll和clear dlls两个。 1.declare-dll 它用于注册外部windows 32位动态链接库(.dll)中的一个函数。 语法: declare [cfunctiontype] functionname in libraryname [as aliasname] [cparamtype1 [@] paramname1, cparamtype2 [@] paramname2, ...] 说明: cfunctiontype 指定该函数返回值的类型,其类型代码如下: short16位整数 integer32位整数 single32位浮点数 double64位浮点数 string字符串 functionname指定在要注册使用的32位函数名。注意functionname区分大小写。 如果该函数名与visual foxpro的保留字相同,应使用as参数另起别名。 in libraryname 指定该函数所在的外部动态链接库文件名,如果libraryname为win32api时,vfp将依次查找:kernel32.dll、gdi32.dll、user32.dll、mpr.dll及advapi32.dll 等动态链接库文件名。 as aliasname 为当api函数的名称与visual foxpro的保留字相同时,另取aliasname别名,另取的别名是不区分大小写的。 cparametertype1 [@] paramname1, cparametertype2 [@] paramname2, ... 指定传递给被调用的32位.dll函数的参数类型及参数名称。其类型代码如cfunctiontype,如果要以传址方法传递参数则应在参数名前加上@。 2. clear dlls 释放所有利用declare-dll命令所装入的动态链接库。 一旦申明win32api函数成功,就可以和一般函数一样用?xxx()、=xxx() 来使用。 二、vfp中常用win32api函数调用实例 1.利用win32api函数获取指定磁盘的卷标: stor 0 to c—var,c—cd,c—qf c—disk=′c:\′ &&指定磁盘 declare integer getvolumeinformation in win32api string @,string @,integer,; integer @, integer @, integer @, string @, integer xx=getvolumeinformation(c—disk,″ ″,20,@c—var,@c—cd,@c—qf,0,0) clear dlls 返回值: xx〈〉0 获取指定磁盘的卷标成功,反之则未成功。

模糊控制的应用实例与分析

模糊控制的应用 学院实验学院 专业电子信息工程 姓名 指导教师___________ 日期20门年9月20日 在自动控制中,包括经典理论和现代控制理论中有一个共同的特点,即控制器的综合设计都要建立在被控对象准确的数学模型(如微分方程等)

的基础上,但是在实际工业生产中,很多系统的影响因素很多,十分复杂。建立精确的数学模型特别困难,甚至是不可能的。这种情况下,模糊控制的诞生就显得意头重大,模糊控制不用建立数学模型,根据实际系统的输入输出的结果数据,参考现场操作人员的运行经验,就可对系统进行实时控制。模糊控制实际上是一种非线性控制,从属于智能控制的范畴。现代控制系统中的的控制能方便地解决工业领域常见的非线性、时变、在滞后、强耦合、变结构、结束条件苛刻等复杂问题。可编程控制器以其高可靠性、编程方便、耐恶劣环境、功能强大等特性很好地解决了工业控制领域普遍关心的可靠、安全、灵活、方便、经济等问题,这两者的结合,可在实际工程中广泛应用。 所谓模糊控制,其定义是是以模糊数学作为理论基础,以人的控制经验作为控制的知识模型,以模糊集合、模糊语言变量以及模糊逻辑推理作为控制算法的一种控制。模糊控制具有以下突出特点: ⑴模糊控制是一种基于规则的控制,它直接采用语言型控制规则,出发点 是现场操作人员的控制经验或相关专家的知识,在设计中不需要建立被控对象的精确的数学模型,因而使得控制机理和策略易于接受与理解,设计简单,便于应用 ⑵由工业过程的定性认识出发,比较容易建立语言控制规则,因而模糊控 制对那些数学模型难以获取,动态特性不易掌握或变化非常显著的对象非常适用。

⑶基于模型的控制算法及系统设计方法,由于出发点和性能指标的不同, 容易导致较大差异;但一个系统语言控制规则却具有相对的独立性,利用这些控制规律间的模糊连接,容易找到折中的选择,使控制效果优于常规控制器。 ⑷模糊控制是基于启发性的知识及语言决策规则设计的,这有利于模拟人 工控制的过程和方法,增强控制系统的适应能力,使之具有一定的智能水平。 ⑸模糊控制系统的鲁棒性強,干扰和参数变化对控制效果的影响被大大减 弱,尤其适合于非线性、时变及纯滞后系统的控制。 由于有着诸多优点,模糊理论在控制领域得到了广泛应用。下面我们就以下示例介绍模糊控制在实际中的应用: 电机调速控制系统见图1,模糊控制器的输入变量为实际转速与转速给定值之间的差值e及其变化率仝,输出变量为电机的电压变化量u。图2为电机调试输出结果,其横坐标为时间轴,纵坐标为转速。当设定转速为2 OOOr / s时,电机能很快稳定运行于2 OOOr / s;当设定转速下降到1 OOOr / s时,转速又很快下降到1 OOOr / s稳定运 行。

vfP 函数练习题

第二章练习题 一、选择题。 1. 就关系数据描述语言来说,Visual FoxPro属于______数据库管理系统。 A)问答式B)语言描述式 C)域描述语句式D)关系描述语句式 2. 下列______符号不能作为Visual FoxPro中的变量名。 A)ABCDEFG B)K1234 C)12ASDFG D)xyz 3. 日期型数据长度固定为______个字符。 A)10B)12 C)8 D)6 4. 在Visual FoxPro数据库文件中,逻辑型、日期型、备注型数据的宽度分别是______。 A)1,8,128 B)2,8,10 C)1,8,10 D)1,8,任意 5. 以下4个符号中,______是Visual FoxPro中的一个常量。 A)T B)TOP C).T. D)TO 6. Visual FoxPro中,表达式: 2*3^2+2*8/4+3^2的值为______。 A)64 B)31 C)49 D)22 7. 下列4个式子中,______不是Visual FoxPro中的表达式。 A)05/23/88 B)"2002" C)X+Y D)XYZ='5' AND ABC=5 8. 将逻辑值赋给内存变量X的正确方法是______。 A)X="T" B)STORE "T" TO X C)X=TRUE D)STORE .T. TO X 9. 设M="324.2",?43+&M的结果是______。 A)43 B)324.2 C)43324.2 D)367.2 10. 设A=123,B=456,K="A+B",则表达式l+&K的值是______。 A)1123456 B)580 C)1+A+B D)579 11. 顺序键入以下命令,显示结果为______。 STORE "14.31" TO X Y=INT(&X+5) ?Y A)20 B)14.315 C)14.31 D)19 12. Visual FoxPro中的索引文件分为单索引文件和复合索引文件,其中复合索引文件的扩展名为______。A)IDX B)EDX C)CDX D)NDX 13. 用于存储内存变量的文件扩展名为______。 A)FPT B)PRG C)FMT D)MEM 14. Visual FoxPro函数INT(RAND()*10)的值是在______范围内的整数。 A)(0,1)B)(1,10)C)(0,10)D)(1,9) 15. 数学式子sin25°写成Visual FoxPro表达式是______。 A)SIN25 B)SIN(25)C)SIN(25°)D)SIN(25*PI/180) 16. 设某数据库有100条记录。用函数EOF ( ) 测试结果为.T.,此时,当前记录号为______。 A)100 B)101 C)99D)1 17. 在下列表达式中,结果为日期类型的正确表达式是______。 A)DATE() + 25 B)DA TE() + TIME() C)DATE() – CTOD("06/11/2002") D)365 – DATE() 18. 执行如下命令: ?LEN(TRIM("北京市□□□")) 结果是______(其中□表示一个空格)。 A)6 B)3 C)9 D)10 19. 执行下列命令: M="ABCDabcd" ?SUBSTR(M,INT(LEN(M)/2+1),2) 输出结果是______。 A)AB B)ab C)bc D)abcd 20. Visual FoxPro数据库文件中,函数ROUND(1234.567,2)的值是______。 A)1234.57 B)1234.56 C)1235 D)1234 21. 执行下列命令后显示的结果是______。 A=CTOD("05/23/89") B=CTOD("05/03/89") ?B-A A)20 B)-20 C)“05/20/89” D)“05/-20/89” 22. 执行下列命令后显示的结果是______。 STR="VFoxPr数据库" ?SUBSTR(STR,LEN(STR)/2+1,6) A)VFoxPrB)数据库C)数据D)Pr数据 23. 执行下列命令后显示的结果是______。 X="Visual FoxPro is OK" ?AT("Fox",X) A)8B)6 C)FoxPro D)Visual 24. 函数STUFF("数据库",5,6,"管理系统")的结果是______。 A)数据库管理系统B)数据管理系统C)管理系统D)库系统 25. FoxPro数据库管理系统的数据模型是______。 A)概念型B)网状型C)关系型D)层次型 26. 下面4条叙述中,正确的叙述是______。 A)在命令窗口中被赋值的变量都是全局变量 B)在上级程序定义的变量在被调用的下级程序中无效 C)在程序中,用DECLARE定义的数组为全局变量 D)在程序中,用DIMENSION定义的数组为全局变量 27. 下面4条叙述中,正确的叙述是______。 A)在命令窗口中被赋值的变量均为局部变量 B)在命令窗口中用PRIV ATE命令说明的变量均为局部变量 C)在被调用的下级程序中用PUBLIC命令说明的变量都是全局变量 D)在程序中用PRIVA TE命令说明的变量均为全局变量 28. 下面4条叙述中,正确的叙述是______。 A)局部变量不可以与全局变量同名,但可以与上级程序中的局部变量同名 1

模糊控制程序实例学习资料

5.2.2.6 模糊控制器设计实例 1、单输入模糊控制器的设计 【例5.12】已知某汽温控制系统结构如图5.10所示,采用喷水减温进行控制。设计单输入模糊控制器,观察定值扰动和内部扰动的控制效果。 R = 图5.10 单回路模糊控制系统 按表5-2确定模糊变量E 、U 的隶属函数,按表5-3确定模糊控制规则,选择温度偏差e 、控制量u 的实际论域:[ 1.5,1.5]e u =∈-,则可得到该系统的单输入模糊控制的仿真程序如FC_SI_main.m 所示,仿真结果如图5.11所示。 设温度偏差e 、控制量u 的实际论域:[ 1.5,1.5]e u =∈-,选择e 、u 的等级量论域为 {3,2,1,0,1,2,3}E U ==---+++ 量化因子2) 5.1(5.13 2=--?= K 。 选择模糊词集为{NB,NS,ZO,PS,PB },根据人的控制经验,确定等级量E ,U 的隶属函数曲线如图5-8 所示。根据隶属函数曲线可以得到模糊变量E 、U 的赋值表如表5-3所示。 图5-8 E ,U 的隶属函数曲线 -3 -2 -1 1 2 3

依据人手动控制的一般经验,可以总结出一些控制规则,例如: 若误差E 为O ,说明温度接近希望值,喷水阀保持不动; 若误差E 为正,说明温度低于希望值,应该减少喷水; 若误差E 为负,说明温度高于希望值,应该增加喷水。 若采用数学符号描述,可总结如下模糊控制规则: 若E 负大,则U 正大; 若E 负小,则U 正小; 若E 为零,则U 为零; 若E 正小,则U 负小; 若E 正大,则U 负大。 写成模糊推理句: if E=NB then U=PB if E=NS then U=PS if E=ZO then U=ZO if E=PS then U=NS if E=PB then U=NB 由上述的控制规则可得到模糊控制规则表,如表5-4所示。 表5-4 模糊控制规则表 模糊控制规则实际上是一组多重条件语句,它可以表示从误差论域E 到控制量论域U 的模糊关系R 。 按着上述控制规则,可以得到该温度偏差与喷水阀门开度之间的模糊关系R : ()()()()() E U E U E U E U E U R E U NB PB NS PS ZO ZO PS NS PB NB - - =?=?????U U U U 计算模糊关系矩阵R 的子程序如F_Relation_1.m 所示。 %模糊关系计算子程序F_Relation_1.c function [R,mfe,mfu,ne,nu,Me]=F_Relation_1 %#############################输入模糊变量赋值表(表5-3)############################ ne=7;%等级量e 的个数 nu=7;%等级量u 的个数 Me=[0 0 0 0 0 0.5 1;0 0 0 0 1 0.5 0;0 0 0.5 1 0.5 0 0; 0 0.5 1 0 0 0 0;1 0.5 0 0 0 0 0]; Mu=Me; %##定义模糊变量及其语言值 1=PB,2=PS,3=O,4=NS,5=NB ,并输入模糊控制规则表(表5-4)## mfc=5;%模糊变量E 的语言值个数,控制规则表列数

选取一个模糊控制的实例讲解

选取一个模糊控制的实例讲解,有文章,有仿真,有详细的推导过程。 一.实验题目:基于模糊控制系统的单级倒立摆 二.实验目的与要求: 倒立摆是联结在小车上的杆,通过小车的运动能保持竖立不倒的一种装置,它是一个典型的非线性、快速、多变量和自然不稳定系统,但是我们可以通过对它施加一定的控制使其稳定。对它的研究在理论上和方法上都有其重要意义。倒立摆的研究不仅要追求增加摆的级数,而且更重要的是如何发展现有的控制方法。同时, 它和火箭的姿态控制以及步行机器 人的稳定控制有很多相似之处,由此研究产生的理论和方法对一般工业过程也有广泛用途。 本文研究了倒立摆的控制机理,用Lagrange 方法推导了一级倒立摆的数学模型,这为研究多级和其它类型的倒立摆甚至更高层次的控制策略奠定了一个良好的基础。对系统进行了稳定性、可控性分析,得出倒立摆系统是一个开环不稳定但可控的系统的结论。 本文主要研究用极点配置、最优控制和模糊控制方法对倒立摆进行稳定控制。最优控制方法是基于状态反馈,但能实现输出指标最优的一种控制方法,方法和参数调节较简单,有着广泛的应用。模糊控制有不依赖于数学模型、适用于非线性系统等优点,所以本文尝试了用模糊控制对倒立摆进行控制,以将先进的控制方法用于实际中。 同时,对倒立摆系统的研究也将遵循从建模到仿真到实控,软硬件结合的系统的控制流程。在这过程中,借助数学工具Matlab7及仿真软件Simulink,作了大量的仿真研究工作,仿真结果表明系统能跟踪输入,并具有较好的抗干扰性。最后对实验室的倒立摆装置进行了软、硬件的调试,获得了较好的控制效果。 三.实验步骤: 1.一级倒立摆系统模型的建立 在忽略了空气阻力、各种摩擦之后(这也是为了保证Lagrange 方程的建立),可 将一级倒立摆系统抽象为由小车和匀质杆组成的系统,本系统设定如下: 小车质量M;摆杆质量m,长为l;小车在x 轴上移动;摆与竖直方向夹角为θ,规定正方向如图所示;加在小车x 轴上的力为F;

vfp调用word OR excel

vfp调用word OR excel(二) 10.从VFP中导出数据的几种方法! 答:当VFP处理好数据后,这时你可以用多种方法将这些数据导出,以便被其它应用程序(如Excel等)所用。下面向你简单介绍几种导出数据的方法: 1.用“导出数据”对话框。你可以从VFP主菜单中选择“文件/导出…”打开 “导出”对话框,在该对话框中的“来源”框中输入表名(c:\vfp\students.dbf ),在“类型”中指定要导出数据的类型(Microsoft Excel),在“到”框中输入 导出的路径和文件名(C:\excel\aa.xls),然后按“确定”即可。这时你如果查看command窗口,可发现以下代码: COPY TO C:\excel\aa.XLS TYPE XL5 2.用COPY TO命令。COPY TO命令的工作对象是VFP中的表,它要依据“TYPE”项才知道要产生哪一类导出文件。对于上面的导出过程,可用以下方法实现:USE students COPY TO C:\excel\aa.XLS TYPE XL5 12.在VFP6中,如何调用已经存在的WORD文件? oW = CREATEOBJECT([word.basic]) with oW .Apprestore() .Appmaximize() .fileopen("路径+文件名.扩展名") ENDWITH 13.打开word文件的控件? 用RUN /N3 C:\WORD.EXE 文档路径 C:\WORD.EXE是我自己写的,你用时换成WORD的真正路径就行了!

比如用WORD 打开SD.DOC 就写 RUN /N3 C:\WORD.EXE C:\SD.DOC 另:TXLS_EOLE = CREATEOBJECT('word.application') TXLS_EOLE.Documents.Open('文件名.doc') TXLS_EOLE.Visible=.t. 注意:别忘了关闭哦 TXLS_EOLE.Documents.close &&关闭文档 TXLS_EOLE.quit &&关闭word RELEASE TXLS_EOLE &&释放对象 再者: fw=alltrim(this.value) if file('&fw') *documents.open filename('&fw') wrdapp = createobject("word.application") wrdapp.visible=.t. *wrdapp.documents.add wrdapp.documents.open(alltrim(this.value)) else messagebox(fw+chr(13)+'文件不存在,请确认',0+16,'文件路径出错') RETURN(.F.) ENDIF 14.在表单中创建一个编辑框,用来显示WORD文档! 做一个按扭,在CLICK中写:THISFORM.EDIT1.value=FILETOSTR(GETFILE('DOC')) 这个不也行,而且还简单 15.强烈建议:直接使用ole可以在表单中打开word,建议不使用这种办法,改为利用api 用windows默认的程序打开word,数据库只存储word文档所在的位置和名字。

模糊控制算法c程序

由于项目需要,需要模糊控制算法,之前此类知识为0,经过半个多月的研究,终于有的小进展。开始想从强大的互联网上搜点c代码来研究下,结果搜遍所有搜索引擎都搜不到,以下本人从修改的模糊控制代码,经过自己修改后可在,运行!输入e表示输出误差,ec表示误差变化率,经过测试具有很好的控制效果,对于非线性系统和数学模型难以建立的系统来说有更好的控制效果!现将其公开供大家学习研究! #include <> #include"" #define PMAX 100 #define PMIN -100 #define DMAX 100 #define DMIN -100 #define FMAX 100 /*语言值的满幅值*/ int PFF[4]={0,12,24,48}; /*输入量D语言值特征点*/ int DFF[4]={0,16,32,64}; /*输出量U语言值特征点*/ int UFF[7]={0,15,30,45,60,75,90}; /*采用了调整因子的规则表,大误差时偏重误差,小误差时偏重误差变化*/ /*a0=,a1=,a2=,a3= */ int rule[7][7]={ //误差变化率 -3,-2,-1, 0, 1, 2, 3 // 误差 {-6,-6,-6,-5,-5,-5,-4,}, // -3 {-5,-4,-4,-3,-2,-2,-1,}, // -2 {-4,-3,-2,-1, 0, 1, 2,}, // -1 {-4,-3,-1, 0, 1, 3, 4,}, // 0 {-2,-1, 0, 1, 2, 3, 4,}, // 1 { 1, 2, 2, 3, 4, 4, 5,}, // 2 { 4, 5, 5, 5, 6, 6, 6}}; // 3 /**********************************************************/ int Fuzzy(int P,int D) /*模糊运算引擎*/ { int U; /*偏差,偏差微分以及输出值的精确量*/ unsigned int PF[2],DF[2],UF[4]; /*偏差,偏差微分以及输出值的隶属度*/ int Pn,Dn,Un[4]; long temp1,temp2; /*隶属度的确定*/ /*根据PD的指定语言值获得有效隶属度*/

vfp中地常用函数与命令

VFP常用的命令和函数 1.数据库操作语言 使用可以CLOSE 命令关闭各种类型的文件。 DBC( ) 函数返回当前数据库的名称和路径。SQLCANCEL( ) 函数请求取消一条正在执行的 SQL 语句。SQLCOMMIT( ) 函数提交一个事务处理。SQLCONNECT( ) 函数建立一个对数据源的连接。SQLDISCONNECT( ) 函数结束一个对数据源的连接。SQLEXEC( ) 函数发送一条 SQL 语句到数据源中处理。SQLGETPROP( ) 函数获取一个活动连接的当前设置。 SQLMORERESULTS( ) 函数如果存在多个可用的结果集,则将另一个结果集复制到Visual FoxPro 临时表(cursor)中。 SQLROLLBACK( ) 函数取消当前事务处理期间所做的任何更改。SQLSETPROP( ) 函数指定一个活动连接的设置。SQLSTRINGCONNECT( ) 函数使用一个连接字符串建立与数据源的连接。TABLEREVERT( ) 函数放弃对缓冲行、缓冲表或临时表(cursor)的修改。 TABLEUPDATE( ) 函数提交对缓冲行、缓冲表或临时表(cursor)适配器的修改。 字段操作语言 使用可以BLANK 命令清除字段中的数据。 DELETED( ) 函数指出一个记录是否被标记为删除。FCOUNT( ) 函数返回一个表中的字段数量。 FIELD( ) 函数根据编号返回表中的字段名。 GATHER 命令用来自指定源的数据替换记录中的数据。SCATTER 命令从当前记录中复制数据到指定的目标。SET EXACT 命令指定比较不同长度两个串时的规则。

模糊控制程序设计报告

模糊控制程序设计报告 自研112班 麻世博 2201100387 题目:已知被控对象为0.51()101 s G s e s ?=+。假设系统给定为阶跃值r =30,采样时间为0.5s ,系统的初始值r(0)=0。试分别设计: (1)常规的PID 控制器; (2)常规的模糊控制器; 分别对上述2种控制器进行Matlab 仿真,并比较控制效果 解答: 1 常规PID 控制器的设计与SIMULINK 仿真 如图1所示,使用SIMULINK 工具对已知系统的PID 控制系统进行仿真。 图1 PID 控制系统的SIMULIK 仿真 其中PID 控制器为离散型,采样时间T=0.5s ,参数P=14,I=3,D=0。阶跃信号幅值为30,被控对象传递函数为0.51()101 s G s e s ?=+。 该系统的阶跃响应如图2。

图2 PID控制系统的输出 该控制系统上升时间T r=1.5s,调节时间T s=8s,超调量σ%=70%,没有稳态误差。 该系统中PID控制器的输出曲线如图3。 图3 PID控制器的输出曲线 输出最大值为465,最小值为-208。 2 模糊控制器的设计 在本文中,我通过MATLAB提供的模糊逻辑工具箱(Fuzzy Logic Toolbox)编辑隶属函数、控制规则,设计了一个双输入单输出的模糊控制器,如下图所示。

图4 模糊控制器概览 2.1 隶属度函数的确立。 选择偏差E和偏差变化率EC作为控制器的输入,控制量U为输出。取E、EC和U的模糊子集为{NB, NM, NS, ZO, PS, PM, PL} ,它们的论域为{-3, -2, -1, 0, 1, 2, 3}。在 MATLAB的命令窗口输入命令Fuzzy,进入模糊逻辑编辑窗口。取输入量E、EC的隶属函数为高斯型(gaussmf),输出U的隶属函数为三角形(trimf),如下图所示。 图5 输入模糊变量E的隶属度函数

VFP中调用其他应用程序的方法

VFP中调用其他应用程序的方法 在用VFP进行应用程序设计中,经常需要调用其他的应用程序。这时候我们立即会想到RUN命令。使用RUN命令只需知道应用程序的文件名及其路径即可。 下面的示例是以最大化方式启动Windows目录下的图画板程序并同时打开c:\windows\Bubbles.bmp文件: RUN/n3 C:\Windows\Pbrush.exe c:\windows\Bubbles.bmp RUN命令的参数用法可以参考Visual FoxPro的帮助文件。 但是令人失望的是,在实际开发时我们常常无法确定所需要启动的应用程序的文件名及其安装的路径。比如我们需要启动用户机器上的浏览器并连接到某一个网址,该机器可能安装的是IE,也可能是NetScape,还有可能是其他的浏览器软件,安装的路径更是无从确定。下面给出我在工作中找到的两种解决方法,这两种方法都是通过Win32 API函数来解决问题,因此其解决思路也可以用到其他编程语言中去。 (一)从注册表中获取被调用软件的名称及路径。 我们只需要提供被调用的软件所处理的文件类型(由文件扩展名来确定),即可通过查找注册表中该软件注册的可以处理的文件类型的数据项来得到该软件的文件名及安装路径。 *主函数 PROCEDURE lookreg

Parameter filetype && 文件类型 * 申明要用到的API 函数 DECLARE Integer RegOpenKey IN Win32API ; Integer nHKey, String @cSubKey, Integer @nResult DECLARE Integer RegCloseKey IN Win32API ; Integer nHKey DECLARE Integer RegQueryvalueEx IN Win32API ; Integer nHKey, String lpszvalueName, Integer dwReserved,; Integer @lpdwType, String @lpbData, Integer @lpcbData #DEFINE HKEY_CLASSES_ROOT -2147483648 #DEFINE C_EXTNOFOUND_LOC "查找失败!" LOCAL cExtn,cAppKey,cAppName,nErrNum LOCAL oReg,regfile cAppKey = "" cAppName = "" nCurrentKey = 0 nErrNum =GetAppPath (filetype,@cAppKey,@cAppName)

VFP命令、函数及程序语句大全

VFP命令、函数及程序语句大全.txt16生活,就是面对现实微笑,就是越过障碍注视未来;生活,就是用心灵之剪,在人生之路上裁出叶绿的枝头;生活,就是面对困惑或黑暗时,灵魂深处燃起豆大却明亮且微笑的灯展。17过去与未来,都离自己很遥远,关键是抓住现在,抓住当前。VFP命令、函数及程序语句大全(1) 学过VFP(Microsoft Visual FoxPro)的朋友都知道它是微软公司开发的数据库管理系统。它 经历了从dBASE、FoxBASE、FoxPro直到VFP的发展过程。本文便以VFP 6.0为例介绍它的命令、函数 及程序语句,为学习VFP的朋友提供必要的学习参考,也为已经精通VFP的朋友提供复习的好机会。 一、主要命令: 1、CREATE 作用:建立一个新的表。 格式:CREATE [<文件>|?](注意,命令字符可取前面四个字符,后面可省略不写,即CREA,下 同;中括号表示其中的参数是可选的;|管道符号表示两个参数只能选择一个,不能同时选择,下 同。) 说明:文件指建立以.dbf为扩展名的VFP数据库文件,在命令后面加上一个问号表示系统会弹出 对话框,要求用户输入想要建立的表名。在命令中不加文件名或问号系统也会弹出对话框,要求用 户输入想要建立的表名。 2、MODIFY STRUCTURE 作用:显示表文件结构,并允许修改此表的结构。 格式:MODIFY STRUCTURE 说明:只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。 3、APPEND 作用:在当前表的尾部(无论表中有无记录)追加记录(在当前表指当前正使用的表)。 格式:APPEND [BLANK] 说明:在APPEND命令后面加上BLANK参数表示在当前表的尾部添加一条空白记录。无BLANK 参数 时,表示在当前表的尾部添加一条记录并要求用户输入相应的字段内容。 4、INSERT 作用:在表文件中间插入一个新记录。 格式:INSERT [BEFORE] [BLANK] 说明:INSERT 在当前记录后插入一记录; INSERT BEFORE 在当前记录前插入一记录; INSERT BEFORE BLANK 在当前记录前插入一空记录。 INSERT - SQL命令追加记录 INSERT INTO 表名[(字段1[,字段2…])];

模糊控制程序实例

5.2.2.6模糊控制器设计实例 1、单输入模糊控制器的设计 【例5.12】已知某汽温控制系统结构如图 5.10所示,采用喷水减温进行控制。设计单输入模糊控 制器,观察定值扰动和内部扰动的控制效果。 图5.10单回路模糊控制系统 按表5-2确定模糊变量E U的隶属函数,按表5-3确定模糊控制规则,选择温度偏差e、控制量u 的实际论域:e =u € [ —1.5,1.5],则可得到该系统的单输入模糊控制的仿真程序如FC_SI_main.m所示,仿真结果如图5.11所示。 设温度偏差e、控制量u的实际论域:e = u ? [-1.5,1.5],选择e、u的等级量论域为 E =U ={-3^2,-1,0, 1, 2, 3} 2汇3 量化因子K 1 2。 1.5 -(-1.5) 选择模糊词集为{NB,NS,ZO,PS,PB},根据人的控制经验,确定等级量E,U的隶属函数曲线如图 5-8所示。根据隶属函数曲线可以得到模糊变量E、U的赋值表如表5-3所示。 图5-8 E, U的隶属函数曲线

依据人手动控制的一般经验,可以总结出一些控制规则,例如: 若误差E为0,说明温度接近希望值,喷水阀保持不动;若误差明温度低于希望值,应该减少喷水; 若误差明温度高于希望值,应该增加喷水。 若采用数学符号描述,可总结如下模糊控制规则: 若E负大,则U正大; 若E负小,贝U U正小; 若E为零,则U为零; 若E正小,则U负小; 若E正大,则U负大。 写成模糊推理句: if E=NB then U=PB if E=NS then U=PS if E=Z0 then U=Z0 if E=PS then U=NS if E=PB then U=NB 由上述的控制规则可得到模糊控制规则表,如表5-4所示。 模糊控制规则实际上是一组多重条件语句,它可以表示从误差论域旦到控制量论域U的模糊关系R。 按着上述控制规则,可以得到该温度偏差与喷水阀门开度之间的模糊关系R: R=E U =(NB E PB U)U(NS E PS U)U(Z0E Z0U)U(PS E NS U)U(PB E NB U) 计算模糊关系矩阵R的子程序如F_Relation_1.m 所示。

相关主题
文本预览
相关文档 最新文档