Fisher线性判别分析实验(模式识别与人工智能原理实验1)

Fisher线性判别分析实验(模式识别与人工智能原理实验1)
Fisher线性判别分析实验(模式识别与人工智能原理实验1)

实验1 Fisher 线性判别分析实验

一、摘要

Fisher 线性判别分析的基本思想:通过寻找一个投影方向(线性变换,线性组合),将高维问题降低到一维问题来解决,并且要求变换后的一维数据具有如下性质:同类样本尽可能聚集在一起,不同类的样本尽可能地远。

Fisher 线性判别分析,就是通过给定的训练数据,确定投影方向W 和阈值y0,即确定线性判别函数,然后根据这个线性判别函数,对测试数据进行测试,得到测试数据的类别。

二、算法的基本原理及流程图 1 基本原理

(1)W 的确定

各类样本均值向量mi

样本类内离散度矩阵i S 和总类内离散度矩阵w

S

12w S S S =+

样本类间离散度矩阵b S

在投影后的一维空间中,各类样本均值T i i m '= W m 。样本类内离散度和总类内离散度

T T i i w w S ' = W S W S ' = W S W 。样本类间离散度T b b S ' = W S W 。

Fisher 准则函数满足两个性质:

·投影后,各类样本内部尽可能密集,即总类内离散度越小越好。 ·投影后,各类样本尽可能离得远,即样本类间离散度越大越好。

根据这个性质确定准则函数,根据使准则函数取得最大值,可求出W :

-1w 12W = S (m - m ) 。

(2)阈值的确定

实验中采取的方法:012y = (m ' + m ') / 2。 (3)Fisher 线性判别的决策规则

对于某一个未知类别的样本向量x ,如果y=W T

·x>y0,则x ∈w1;否则x ∈w2。

x 1

m x, 1,2

i

i X i

i N ∈=

=∑T x S (x m

)(x m ), 1,2

i

i i

i X i ∈=

--=∑T

1212S (m m )(m m )b =--

2 流程图

方差标准化(归一化处理)

一个样本集中,某一个特征的均值与方差为: 归一化:

三、实验要求

寻找数据进行实验,并分析实验中遇到的问题和结论,写出实验报告。

得到每个类的均值向量

计算类内的离散度,总的离散度

计算总离散度的逆矩阵

计算投影向量和阈值

载入测试数据

归一化处理

判断测试数据类别

归一化处理

载入训练数据

1

2

2

1

11()

i l

i ji

j l ji i j x x l s x x l ====-∑∑i i

i i

x x x s -=

Fisher判别分析原理详解

Fisher判别分析原理详解 说起Fisher判别分析,不得不提到一个大神级人物! Ronald Aylmer Fisher (1890~1962) 英国统计学家和遗传学家 主要著作有:《根据孟德尔遗传方式的亲属间的相关》、《研究者用的统计方法》、《自然选择的遗传理论》、《试验设计》、《近交的理论》及《统计方法和科学推理》等。他一生在统计生物学中的功绩是十分突出的。 ?生平 1890年2月17日生于伦敦,1962年7月29日卒于澳大利亚阿德莱德。 1912年毕业于剑桥大学数学系,后随英国数理统计学家J.琼斯进修了一年统计力学。他担任过中学数学教师,1918年任罗坦斯泰德农业试验站统计试验室主任。 1933年,因为在生物统计和遗传学研究方面成绩卓著而被聘为伦敦大学优生学教授。 1943年任剑桥大学遗传学教授。

1957年退休。 1959年去澳大利亚,在联邦科学和工业研究组织的数学统计部作研究工作。 大神解决的问题 ?Fisher 线性判别函数的提出: 在用统计方法进行模式识别时,许多问题涉及到维数,在低维空间可行的方法,在高维空间变得不可行。因此,降低维数就成为解决实际问题的关键。Fisher 的方法,就是解决维数压缩问题。 对xn的分量做线性组合可得标量 yn=wTxn,n=1,2,…,Ni 得到N个一维样本yn组成的集合。从而将多维转换到了一维。 考虑把d维空间中的数据点投影到一条直线上去的问题,需要解决的两个问题: (1)怎样找到最好的投影直线方向;(2)怎样向这个方向实现投影,这个投影变 换就是要寻求的解向量w*。这两个问题就是Fisher方法要解决的基本问题。?判别分析的一些基本公式 Fisher判别分析用于两类或两类以上间的判别,但常用于两类间判别。 Fisher判别函数表达式(多元线性函数式): 判别函数的系数是按照组内差异最小和组间差异最大同时兼顾的原则来确定判别函数的。 Fisher判别准则: 判别临界点: Fisher判别分析思想: 1. 类间差异大,类内变异小, 最大 2. 方差分析的思想:以下值最大 ?Fisher判别的原理 分析w1方向之所以比w2方向优越,可以归纳出这样一个准则,即向量w的方向选择应能使两类样本投影的均值之差尽可能大些,而使类内样本的离散程度尽可能小。这就是Fisher准则函数的基本思路。如下图:

线性系统理论Matlab实践仿真报告

线性系统理论Matlab实验报告 1、本题目是在已知状态空间描述的情况下要求设计一个状态反馈控制器,从而使得系统具 有实数特征根,并要求要有一个根的模值要大于5,而特征根是正数是系统不稳定,这样的设计是无意义的,故而不妨设采用状态反馈后的两个期望特征根为-7,-9,这样满足题目中所需的要求。 (1)要对系统进行状态反馈的设计首先要判断其是否能控,即求出该系统的能控性判别矩阵,然后判断其秩,从而得出其是否可控; 判断能控程序设计如下: >> A=[-0.8 0.02;-0.02 0]; B=[0.05 1;0.001 0]; Qc=ctrb(A,B) Qc = 0.0500 1.0000 -0.0400 -0.8000 0.0010 0 -0.0010 -0.0200 Rc=rank(Qc) Rc =2 Qc = 0.0500 1.0000 -0.0400 -0.8000 0.0010 0 -0.0010 -0.0200 得出结果能控型判别矩阵的秩为2,故而该系统是完全可控的,故可以对其进行状态反馈设计。 (2)求取状态反馈器中的K,设的期望特征根为-7,-9; 其设计程序如下: >> A=[-0.8 0.02;-0.02 0]; B=[0.05 1;0.001 0]; P=[-7 -9]; k=place(A,B,P) k = 1.0e+003 * -0.0200 9.0000 0.0072 -0.4500 程序中所求出的k即为所求状态反馈控制器的状态反馈矩阵,即由该状态反馈矩阵所构成的状态反馈控制器能够满足题目要求。 2、(a)要求求该系统的能控型矩阵,并验证该系统是不能控的。

编译原理实验报告语法分析程序的设计

编译原理实验报告语法分析程序的设计 文档编制序号:[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]

实验5语法分析程序的设计(2) 一、实验目的 通过设计、编制、调试一个典型的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握常用的语法分析中算法优先分析方法。 二、实验内容 设计一个文法的算法优先分析程序,判断特定表达式的正确性。 三、实验要求 1、给出文法如下: G[E] E->T|E+T; T->F|T*F; F->i|(E); +*()i + * ( ) i 21)直接存放,2)为优先关系建立优先函数,这里由学生自己选择一种方式; 1、给出算符优先分析算法如下: k:=1; S[k]:=‘#’; REPEAT 把下一个输入符号读进a中; IF S[k]∈V T THEN j:=k ELSE j:=k-1; WHILE S[j] a DO BEGIN

REPEAT Q:=S[j]; IF S[j-1]∈V T THEN j:=j-1 ELSE j:=j-2 UNTIL S[j] Q 把S[j+1]…S[k]归约为某个N; k:=j+1; S[k]:=N; END OF WHILE; IF S[j] a OR S[j] a THEN BEGIN k:=k+1;S[k]:=a END ELSE ERROR UNTIL a=‘#’ 1、根据给出算法,利用适当的数据结构实现算符优先分析程序; 2、利用算符优先分析程序完成下列功能: 1)手工将测试的表达式写入文本文件,每个表达式写一行,用“;”表示结束; 2)读入文本文件中的表达式; 3)调用实验2中的词法分析程序搜索单词; 4)把单词送入算法优先分析程序,判断表达式是否正确(是否是给出文法的语言),若错误,应给出错误信息; 5)完成上述功能,有余力的同学可以对正确的表达式计算出结果。四、实验环境 PC微机 DOS操作系统或 Windows 操作系统 Turbo C 程序集成环境或 Visual C++ 程序集成环境 五、实验步骤

Fisher判别分析

对案例中小企业的破产模型做Fisher判别分析 江义114113001059 一问题:对企业的运行状态利用Fisher判别进行分类 选取四个经济指标用于判断企业处于破产状态还是正常运行状态,具体数据如下,其中类别1表示破产状态,类别2表示正常运行状态 X1总负债率X2收益率指 标 X3短期 支付能 力 X4生产 效率指 标 类别 -0.45 -0.41 1.09 0.45 1 -0.56 -0.31 1.51 0.16 1 0.06 0.02 1.01 0.4 1 -0.07 -0.09 1.45 0.26 1 0.38 0.11 3.27 0.55 2 0.19 0.05 2.25 0.33 2 0.32 0.07 4.24 0.63 2 0.04 0.01 1.5 0.71 2 -0.06 -0.06 1.37 0.4 1 0.07 -0.01 1.37 0.34 2 -0.13 -0.14 1.42 0.44 1 0.15 0.06 2.23 0.56 2 0.16 0.05 2.31 0.2 2 0.29 0.06 1.84 0.38 带测定 0.54 0.11 2.33 0.48 带测定 二、程序如下:(R语言) > data=read.table("E:/bac/qiye.txt",header=T) > data1=c(rep(1,6),rep(2,7)) > data2=as.factor(data1) > data$class=data2 > attach(data) > names(data) [1] "X1" "X2" "X3" "X4" "class" > library(MASS) > data.lda=lda(class~X1+X2+X3+X4) > data.lda Call: lda(class ~ X1 + X2 + X3 + X4) Prior probabilities of groups: 1 2 0.4615385 0.5384615 Group means:

全维状态观测器的设计

实 验 报 告 课程 线性系统理论基础 实验日期 2016年 6月 6 日 专业班级 姓名 学号 同组人 实验名称全维状态观测器的设计 评分 批阅教师签字 一、实验目的 1、 学习用状态观测器获取系统状态估计值的方法,了解全维状态观测器的 极点对状态的估计误差的影响; 2、 掌握全维状态观测器的设计方法; 3、 掌握带有状态观测器的状态反馈系统设计方法。 二、实验内容 开环系统? ??=+=cx y bu Ax x &,其中 []0100001,0,10061161A b c ????????===????????--???? a) 用状态反馈配置系统的闭环极点:5,322-±-j ; b) 设计全维状态观测器,观测器的极点为:10,325-±-j ; c) 研究观测器极点位置对估计状态逼近被估计值的影响; d) 求系统的传递函数(带观测器及不带观测器时); 绘制系统的输出阶跃响应曲线。 三、实验环境 MATLAB6、5 四、实验原理(或程序框图)及步骤

利用状态反馈可以使闭环系统的极点配置在所希望的位置上,其条件就是必须对全部状态变量都能进行测量,但在实际系统中,并不就是所有状态变量都能测量的,这就给状态反馈的实现造成了困难。因此要设法利用已知的信息(输出量y 与输入量x),通过一个模型重新构造系统状态以对状态变量进行估计。该模型就称为状态观测器。若状态观测器的阶次与系统的阶次就是相同的,这样的状态观测器就称为全维状态观测器或全阶观测器。 设系统完全可观,则可构造如图4-1所示的状态观测器 图4-1 全维状态观测器 为求出状态观测器的反馈ke 增益,与极点配置类似,也可有两种方法: 方法一:构造变换矩阵Q,使系统变成标准能观型,然后根据特征方程求出k e ; 方法二:就是可 采用Ackermann 公式: []T o e Q A k 1000)(1Λ-Φ=,其中O Q 为可观性矩阵。 利用对偶原理,可使设计问题大为简化。首先构造对偶系统 ???=+=ξ ηξξT T T b v c A & 然后可由变换法或Ackermann 公式求出极点配置的反馈k 增益,这也可

编译原理实验报告

编译原理实验报告 班级 姓名: 学号: 自我评定:

实验一词法分析程序实现 一、实验目的与要求 通过编写和调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将字符形式的源程序流转化为一个由各类单词符号组成的流的词法分析方法。 二、实验内容 根据教学要求并结合学生自己的兴趣和具体情况,从具有代表性的高级程序设计语言的各类典型单词中,选取一个适当大小的子集。例如,可以完成无符号常数这一类典型单词的识别后,再完成一个尽可能兼顾到各种常数、关键字、标识符和各种运算符的扫描器的设计和实现。 输入:由符合或不符合所规定的单词类别结构的各类单词组成的源程序。 输出:把单词的字符形式的表示翻译成编译器的内部表示,即确定单词串的输出形式。例如,所输出的每一单词均按形如(CLASS,VALUE)的二元式编码。对于变量和常数,CLASS字段为相应的类别码;VALUE字段则是该标识符、常数的具体值或在其符号表中登记项的序号(要求在变量名表登记项中存放该标识符的字符串;常数表登记项中则存放该常数的二进制形式)。对于关键字和运算符,采用一词一类的编码形式;由于采用一词一类的编码方式,所以仅需在二元式的CLASS字段上放置相应的单词的类别码,VALUE字段则为“空”。另外,为便于查看由词法分析程序所输出的单词串,要求在CLASS字段上放置单词类别的助记符。 三、实现方法与环境 词法分析是编译程序的第一个处理阶段,可以通过两种途径来构造词法分析程序。其一是根据对语言中各类单词的某种描述或定义(如BNF),用手工的方式(例如可用C语言)构造词法分析程序。一般地,可以根据文法或状态转换图构造相应的状态矩阵,该状态矩阵同控制程序便组成了编译器的词法分析程序;也可以根据文法或状态转换图直接编写词法分析程序。构造词法分析程序的另外一种途径是所谓的词法分析程序的自动生成,即首先用正规式对语言中的各类单词符号进行词型描述,并分别指出在识别单词时,词法分析程序所应进行的语义处理工作,然后由一个所谓词法分析程序的构造程序对上述信息进行加工。如美国BELL实验室研制的LEX就是一个被广泛使用的词法分析程序的自动生成工具。 总的来说,开发一种新语言时,由于它的单词符号在不停地修改,采用LEX等工具生成的词法分析程序比较易于修改和维护。一旦一种语言确定了,则采用手工编写词法分析程序效率更高。 四、实验设计 1)题目1:试用手工编码方式构造识别以下给定单词的某一语言的词法分析程序。 语言中具有的单词包括五个有代表性的关键字begin、end、if、then、else;标识符;整型常数;六种关系运算符;一个赋值符和四个算术运算符。参考实现方法简述如下。 单词的分类:构造上述语言中的各类单词符号及其分类码表。 表I 语言中的各类单词符号及其分类码表 单词符号类别编码类别码的助记符单词值

二阶倒立摆实验报告

. I 线性系统实验报告 : 院系:航天学院 学号: . .

2015年12月

1.实验目的 1)熟悉Matlab/Simulink仿真; 2)掌握LQR控制器设计和调节; 3)理解控制理论在实际中的应用。 倒立摆研究的意义是,作为一个实验装置,它形象直观,简单,而且参数和形状易于改变;但它又是一个高阶次、多变量、非线性、强耦合、不确定的绝对不稳定系统的被控系统,必须采用十分有效的控制手段才能使之稳定。因此,许多新的控制理论,都通过倒立摆试验对理论加以实物验证,然后在应用到实际工程中去。因此,倒立摆成为控制理论中经久不衰的研究课题,是验证各种控制算法的一个优秀平台,故通过设计倒立摆的控制器,可以对控制学科中的控制理论有一个学习和实践机会。 2.实验容 1)建立直线二级倒立摆数学模型 对直线二级倒立摆进行数学建模,并将非线性数学模型在一定条件下化简成线性数学模型。对于倒立摆系统,由于其本身是自不稳定的系统,实验建立模型存在一定的困难,但是经过小心的假设忽略掉一些次要的因素后,倒立摆系统就是一个典型的运动的刚体系统,可以在惯性坐标系应用经典力学理论建立系统的动

力学方程。对于直线二级倒立摆,由于其复杂程度,在这里利用拉格朗日方程推导运动学方程。 由于模型的动力学方程中存在三角函数,因此方程是非线性的,通过小角度线性化处理,将动力学非线性方程变成线性方程,便于后续的工作的进行。 2)系统的MATLAB仿真 依据建立的数学模型,通过MATLAB仿真得出系统的开环特性,采取相应的控制策略,设计控制器,再加入到系统的闭环中,验证控制器的作用,并进一步调试。控制系统设计过程中需要分析容主要包括得出原未加控制器时系统的极点分布,系统的能观性,能控性。 3)LQR控制器设计与调节实验 利用线性二次型最优(LQR)调节器MATLAB仿真设计的参数结果对平面二阶倒立摆进行实际控制实验,参数微调得到较好的控制效果,记录实验曲线。 4)改变控制对象的模型参数实验 调整摆杆位置,将摆杆1朝下,摆杆2朝上修改模型参数、起摆条件和控制参数,重复3的容。 3.实验步骤

北京科技大学编译原理实验报告

编译原理实验报告 学院: 计算机与通信工程学院专业: 计算机科学与技术 班级: 学号: 姓名: 实验成绩:

词法分析 一、实验目的 设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。 二、实验要求 2.1 待分析的简单的词法 (1)关键字: begin if then while do end 所有的关键字都是小写。 (2)运算符和界符 := + - * / < <= <> > >= = ; ( ) # (3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义: ID = letter (letter | digit)* NUM = digit digit* (4)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。 2.2 各种单词符号对应的种别码: 输入:所给文法的源程序字符串。 输出:二元组(syn,token或sum)构成的序列。 其中:syn为单词种别码; token为存放的单词自身字符串; sum为整型常数。 例如:对源程序begin x:=9: if x>9 then x:=2*x+1/3; end #的源文件,经过词法分析后输出如下序列: (1,begin)(10,x)(18,:=)(11,9)(26,;)(2,if)…… 三、词法分析程序的算法思想: 算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。 3.1 主程序示意图:

3.2词法分析程序流程图: 四、词法分析程序的C++语言程序源代码: #include"stdio.h" #include"stdlib.h" #include"string.h" #define _KEY_WORD_END "waiting for your expanding" typedef struct 开始 变量初始化 是否文件结束? 返回 拼数 Syn=11 返回 拼字符串 是否是关键字? Syn 为对应关键字的单词种别码 Syn=10 给不同的符号相同的 Syn 值 报错 是 否 数字 字母 是 否 运算符, 界符等 其他

Fisher判别函数

Fisher 判别函数的使用具体步骤 Fisher 多类判别模型 假定事物由p 个变量描述, 即: x=(p x x x ,...,,21)T 该种事物有G 个类型, 从每个类型中顺次抽取p n n n ,...,,21个样品, 共计n= ∑=G i i 1 n 个样品。 即从第g 类取了g n 个样品, g=1,2,?, G, 第g 类的第i 个样品, 用向量: gi x =(pgi gi gi x x ,...,,x 21)T (1) ( 1) 式中, 第一个下标是变量号, 第二个下标是类型号,第三个下标是样品号。设判别函数为: T x p p v x v x v x v =+++=...y 2211 (2) 其中: V=(p v v v ,...,21)T 按照组内差异最小, 组间差异最大同时兼顾的原则, 来确定判别函数系数。(中间推导过程不在这里介绍了) 最终就有个判别函数:,y x V T j j =1,...,2,1s j = 一般只取前M=min(G- 1,p)个, 即: M j x v x v x v y p pj j j j ,...,2,1,...2211=+++= (3) 根据上述M 个判别函数, 可对每一个待判样品做出判别。 ),...,,(x 020100p x x x= 其过程如下: 1、把x0 代入式(3) 中每一个判别函数, 得到M 个数 ,,...,2,1,...y 202101j 0M j x v x v x v p pj j j =+++= 记:T M y y y y ),...,,(020100= 2、把每一类的均值代入式(3)得 G g y y y y G g M j x v x v x v y M g g g g pg pg g g g g j g ,...,2,1),,...,,(,...2,1,,...,2,1,...212211====+++= 3、计算:∑=-=M j j j g g y y D 1 2 02 )(,从这G 个值中选出最小值:)(min 212g G g h D D ≤≤=。这样就把0 x 判为h 类。

编译原理实验报告二

编译原理实验报告 题目构造识别字符串的自动机学院 专业 班级 学号 学生姓名 指导教师 西安思源学院教务处制 二〇一年

实验二构造识别符号串的自动机 一、实验目的 1 掌握形式语言与自动机的概念 2 了解正规集及有穷自动机的关系 3 能构造识别相应符号串的自动机 4 能构造词法分析程序所识别的各类单词的自动机 二、实验环境 Microsoft Visual C++ 6.0 三、实验内容 1 用高级语言编写程序:该程序能接受C++所有的标识符。 2 用高级语言编写程序:该程序能接受C++所有的常数(整数和定点小数)。 3 用高级语言编写程序:该程序能接受C++的所有保留字。 4 用高级语言编写程序:该程序能接受C++的所有界符、运算符。 四、设计说明 void main() { void find_word(); void show_all(); void Input(); Input(); cout<<"运行结果如下"<'||ch[i]=='('||ch[i]==')') { c[t]=ch[i]; t++; k++; j++; } else if(ch[i]==' '||ch[i]=='\t') { b[k]=' ';

编译原理实验报告总结

学年第学期《编译原理》实验报告 学院(系):计算机科学与工程学院 班级:11303070A 学号:11303070*** 姓名:无名氏 指导教师:保密式 时间:2016 年7 月

目录 1.实验目的 (1) 2.实验内容及要求 (1) 3.实验方案设计 (1) 3.1 编译系统原理介绍 (1) 3.1.1 编译程序介绍 (2) 3.1.2 对所写编译程序的源语言的描述 (2) 3.2 词法分析程序的设计 (3) 3.3 语法分析程序设计 (4) 3.4 语义分析和中间代码生成程序的设计 (4) 4. 结果及测试分析 (4) 4.1软件运行环境及限制 (4) 4.2测试数据说明 (5) 4.3运行结果及功能说明 (5) 5.总结及心得体会 (7)

1.实验目的 根据Sample语言或者自定义的某种语言,设计该语言的编译前端。包括词法分析,语法分析、语义分析及中间代码生成部分。 2.实验内容及要求 (1)词法分析器 输入源程序,输出对应的token表,符号表和词法错误信息。按规则拼单词,并转换成二元形式;滤掉空白符,跳过注释、换行符及一些无用的符号;进行行列计数,用于指出出错的行列号,并复制出错部分;列表打印源程序;发现并定位词法错误; (2)语法分析器 输入token串,通过语法分析,寻找其中的语法错误。要求能实现Sample 语言或自定义语言中几种最常见的、基本的语法单位的分析:算术表达式、布尔表达式、赋值语句、if语句、for语句、while语句、do while语句等。 (3)语义分析和中间代码生成 输入token串,进行语义分析,修改符号表,寻找其中的语义错误,并生 成中间代码。要求能实现Sample语言或自定义语言中几种最常见的、基本的语法单位的分析:算术表达式、布尔表达式、赋值语句、if语句、for语句、while 语句、do while语句等。 实验要求:功能相对完善,有输入、输出描述,有测试数据,并介绍不足。3.实验方案设计 3.1 编译系统原理介绍 编译器逐行扫描高级语言程序源程序,编译的过程如下: (1).词法分析 识别关键字、字面量、标识符(变量名、数据名)、运算符、注释行(给人看的,一般不处理)、特殊符号(续行、语句结束、数组)等六类符号,分别归类等待处理。 (2).语法分析 一个语句看作一串记号(Token)流,由语法分析器进行处理。按照语言的文法检查判定是否是合乎语法的句子。如果是合法句子就以内部格式保存,否则报错。直至检查完整个程序。 (3).语义分析 语义分析器对各句子的语法做检查:运算符两边类型是否相兼容;该做哪些类型转换(例如,实数向整数赋值要"取整");控制转移是否到不该去的地方;是

系统的能控性,能观测性,稳定性分析

实验报告 课程线性系统理论基础实验日期年月日 专业班级姓名学号同组人 实验名称系统的能控性、能观测性、稳定性分析及实现评分 批阅教师签字 一、实验目的 加深理解能观测性、能控性、稳定性、最小实现等观念。掌握如何使用MATLAB进行以下分析和实现。 1、系统的能观测性、能控性分析; 2、系统的稳定性分析; 3、系统的最小实现。 二、实验内容 (1)能控性、能观测性及系统实现 (a)了解以下命令的功能;自选对象模型,进行运算,并写出结

果。 gram, ctrb, obsv, lyap, ctrbf, obsvf, minreal ; (b )已知连续系统的传递函数模型,182710)(23++++=s s s a s s G ,当a 分别取-1,0,1时,判别系统的能控性与能观测性; (c )已知系统矩阵为???? ??????--=2101013333.06667.10666.6A ,??????????=110B ,[]201=C ,判别系统的能控性与能观测性; (d )求系统18 27101)(23++++= s s s s s G 的最小实现。 (2)稳定性 (a )代数法稳定性判据 已知单位反馈系统的开环传递函数为:) 20)(1()2(100)(+++=s s s s s G ,试对系统闭环判别其稳定性 (b )根轨迹法判断系统稳定性 已知一个单位负反馈系统开环传递函数为 ) 22)(6)(5()3()(2+++++=s s s s s s k s G ,试在系统的闭环根轨迹图上选择一点,求出该点的增益及其系统的闭环极点位置,并判断在该点系统闭环的稳定性。 (c )Bode 图法判断系统稳定性

编译原理词法分析实验报告

词法分析器实验报告 一、实验目的 选择一种编程语言实现简单的词法分析程序,设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。 二、实验要求 待分析的简单的词法 (1)关键字: begin if then while do end 所有的关键字都是小写。 (2)运算符和界符 : = + - * / < <= <> > >= = ; ( ) # (3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义: ID = letter (letter | digit)* NUM = digit digit* (4)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。 各种单词符号对应的种别码: 表各种单词符号对应的种别码 词法分析程序的功能: 输入:所给文法的源程序字符串。 输出:二元组(syn,token或sum)构成的序列。 其中:syn为单词种别码; token为存放的单词自身字符串; sum为整型常数。 例如:对源程序begin x:=9: if x>9 then x:=2*x+1/3; end #的源文件,经过词法分析后输出如下序列: (1,begin)(10,x)(18,:=)(11,9)(26,;)(2,if)…… 三、词法分析程序的算法思想: 算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根

据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。 主程序示意图: 主程序示意图如图3-1所示。其中初始包括以下两个方面: ⑴关键字表的初值。 关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下: Char *rwtab[6] = {“begin”, “if”, “then”, “while”, “do”, “end”,}; 图3-1 (2)程序中需要用到的主要变量为syn,token和sum 扫描子程序的算法思想: 首先设置3个变量:①token用来存放构成单词符号的字符串;②sum用来整型单词;③syn 用来存放单词符号的种别码。扫描子程序主要部分流程如图3-2所示。

编 译 原 理 实 验 报 告

编译原理实验报告 课程:编译原理 系别:计算机系 班级:11网络 姓名:王佳明 学号:110912049 教师:刘老师 实验小组:第二组 1

实验一熟悉C程序开发环境、进行简单程序的调试 实验目的: 1、初步了解vc++6.0环境; 2、熟悉掌握调试c程序的步骤: 实验内容: 1、输入下列程序,练习Turbo C 程序的编辑、编译、运行。 #include main() { printf(“Programming is fun.\n”); } 2、分析程序,预测其运行结果,并上机检测你的预测。 #include main() { printf(“*\n”); printf(“* * *\n”); printf(“* * * * *\n”); printf(“* * * * * * *\n”); } 3、下面是一个加法程序,程序运行时等待用户从键盘输入两个整数,然后求出它们的和并输出。观察运行结果(程序输出),上机验证该程序。 #include main() { int a,b,c; printf(“Please input a,b:”); scanf(“%d,%d”,&a,&b); c=a+b; printf(“%d+%d=%d\n”,a,b,c); } 2

实验二词法分析器 一、实验目的: 设计、编制、调试一个词法分析子程序-识别单词,加深对词法分析原理的理解。 二、实验要求: 1.对给定的程序通过词法分析器弄够识别一个个单词符号,并以二元式(单词种别码,单词符号的属性值)显示。而本程序则是通过对给定路径的文件的分析后以单词符号和文字提示显示。 2.本程序自行规定: (1)关键字"begin","end","if","then","else","while","write","read", "do", "call","const","char","until","procedure","repeat" (2)运算符:"+","-","*","/","=" (3)界符:"{","}","[","]",";",",",".","(",")",":" (4)其他标记如字符串,表示以字母开头的标识符。 (5)空格、回车、换行符跳过。 在屏幕上显示如下: ( 1 , 无符号整数) ( begin , 关键字) ( if , 关键字) ( +, 运算符) ( ;, 界符) ( a , 普通标识符) 三、使用环境: Windows下的visual c++6.0; 四、调试程序: 1.举例说明文件位置:f:、、11.txt目标程序如下: begin x:=9 if x>0 then x:=x+1; while a:=0 do 3

系统的能控性、能观测性、稳定性分析

实 验 报 告 课程 线性系统理论基础 实验日期 年 月 日 专业班级 学号 同组人 实验名称 系统的能控性、能观测性、稳定性分析及实现 评分 批阅教师签字 一、实验目的 加深理解能观测性、能控性、稳定性、最小实现等观念。掌 握如何使用MATLAB 进行以下分析和实现。 1、系统的能观测性、能控性分析; 2、系统的稳定性分析; 3、系统的最小实现。 二、实验内容 (1)能控性、能观测性及系统实现 (a )了解以下命令的功能;自选对象模型,进行运算,并写出结 果。 gram, ctrb, obsv, lyap, ctrbf, obsvf, minreal ; (b )已知连续系统的传递函数模型,18 2710)(23++++=s s s a s s G ,当a 分别取-1,0,1时,判别系统的能控性与能观测性;

(c )已知系统矩阵为???? ??????--=2101013333.06667.10666.6A ,??????????=110B ,[]201=C ,判别系统的能控性与能观测性; (d )求系统18 27101)(23++++= s s s s s G 的最小实现。 (2)稳定性 (a )代数法稳定性判据 已知单位反馈系统的开环传递函数为:) 20)(1()2(100)(+++=s s s s s G ,试对系统闭环判别其稳定性 (b )根轨迹法判断系统稳定性 已知一个单位负反馈系统开环传递函数为 ) 22)(6)(5()3()(2+++++=s s s s s s k s G ,试在系统的闭环根轨迹图上选择一点,求出该点的增益及其系统的闭环极点位置,并判断在该点系统闭环的稳定性。 (c )Bode 图法判断系统稳定性 已知两个单位负反馈系统的开环传递函数分别为 s s s s G s s s s G 457.2)(,457.2)(232231-+=++= 用Bode 图法判断系统闭环的稳定性。 (d )判断下列系统是否状态渐近稳定、是否BIBO 稳定。 []x y u x x 0525,100050250100010-=????? ?????+??????????-=

fisher判别式

Fisher 线性判别式 前面讲过的感知器准则、最小平方和准则属于用神经网络的方法解决分类问题。下面介绍一种新的判决函数分类方法。 由于线性判别函数易于分析,关于这方面的研究工作特别多。历史上,这一工作是从R.A.Fisher 的经典论文(1936年)开始的。我们知道,在用统计方法进行模式识别时,许多问题涉及到维数,在低维空间行得通的方法,在高维空间往往行不通。因此,降低维数就成为解决实际问题的关键。Fisher 的方法,实际上涉及维数压缩。 如果要把模式样本在高(d )维的特征向量空间里投影到一条直线上,实际上就是把特征空间压缩到一维,这在数学上容易办到。另外,即使样本在高维空间里聚集成容易分开的群类,把它们投影到一条任意的直线上,也可能把不同的样本混杂在一起而变得无法区分。也就是说,直线的方向选择很重要。 在一般情况下,总可以找到某个最好的方向,使样本投影到这个方向的直线上是最容易分得开的。如何找到最好的直线方向,如何实现向最好方向投影的变换,是Fisher 法要解决的基本问题。这个投影变换就是我们寻求的解向量* w 。 1.线性投影与Fisher 准则函数 在21/w w 两类问题中,假定有n 个训练样本),....,2,1(n k x k =其中1n 个样本来自i w 类型,2n 个样本来自j w 类型,21n n n +=。两个类型的训练样本分别构成训练样本的子集1X 和2X 。 令:k T k x w y =,n k ,...,2,1= (4.5-1) k y 是向量k x 通过变换w 得到的标量,它是一维的。实际上,对于给定的w ,k y 就是判决函数的值。 由子集1X 和2X 的样本映射后的两个子集为1Y 和2Y 。因为我们关心的是w 的方向,可以令1||||=w ,那么k y 就是k x 在w 方向上的投影。使1Y 和2Y 最容易区分开的w 方向正是区分超平面的法线方向。如下图: 图中画出了直线的两种选择,图(a)中,1Y 和2Y 还无法分开,而图(b)的选择可以使1Y 和2Y 区分开来。所以图(b)的方向是一个好的选择。 下面讨论怎样得到最佳w 方向的解析式。 各类在d 维特征空间里的样本均值向量: ∑∈= i k X x k i i x n M 1,2,1=i (4.5-2) 通过变换w 映射到一维特征空间后,各类的平均值为: ∑∈= i k Y y k i i y n m 1,2,1=i (4.5-3) 映射后,各类样本“类内离散度”定义为: 2 2 () k i i k i y Y S y m ∈= -∑ ,2,1=i (4.5-4) 显然,我们希望在映射之后,两类的平均值之间的距离越大越好,而各类的样本类内离散度越小越好。因此,定义Fisher

编译原理实验报告一

实验一词法分析程序实现 一、实验目得与要求 通过编写与调试一个词法分析程序,掌握在对程序设计语言得源程序进行扫描得过程中,将字符流形式得源程序转化为一个由各类单词符号组成得流得词法分析方法 二、实验内容 基本实验题目:若某一程序设计语言中得单词包括五个关键字begin、end、if、then、else;标识符;无符号常数;六种关系运算符;一个赋值符与四个算术运算符,试构造能识别这些单词得词法分析程序(各类单词得分类码参见表I)。 表I语言中得各类单词符号及其分类码表 输入:由符合与不符合所规定得单词类别结构得各类单词组成得源程序文件。 输出:把所识别出得每一单词均按形如(CLASS,VALUE)得二元式形式输出,并将结果放到某个文件中。对于标识符与无符号常数,CLASS字段为相应得类别码得助记符;V AL UE字段则就是该标识符、常数得具体值;对于关键字与运算符,采用一词一类得编码形式,仅需在二元式得CLASS字段上放置相应单词得类别码得助记符,V ALUE字段则为“空". 三、实现方法与环境 词法分析就是编译程序得第一个处理阶段,可以通过两种途径来构造词法分析程序.其一就是根据对语言中各类单词得某种描述或定义(如BNF),用手工得方式(例如可用C语言)构造词法分析程序。一般地,可以根据文法或状态转换图构造相应得状态矩阵,该状态矩阵连同控制程序一起便组成了编译器得词法分析程序;也可以根据文法或状态转换图直接编写词法分析程序。构造词法分析程序得另外一种途径就是所谓得词法分析程序得自动生成,即首先用正规式对语言中得各类单词符号进行词型描述,并分别指出在识别单词时,词法分析程

状态观测器的设计——报告

东南大学自动化学院 实 验 报 告 课程名称: 自动控制基础 实验名称: 状态观测器的设计 院 (系): 自动化学院 专 业: 自动化 姓 名: 吴静 学 号: 08008419 实 验 室: 机械动力楼417室 实验组别: 同组人员: 实验时间:2011年05月13日 评定成绩: 审阅教师: 一、实验目的 1. 理解观测器在自动控制设计中的作用 2. 理解观测器的极点设置 3. 会设计实用的状态观测器 二、实验原理 如果控制系统采用极点配置的方法来设计,就必须要得到系统的各个状态,然后才能用状态反馈进行极点配置。然而,大多数被控系统的实际状态是不能直接得到的,尽管系统是可以控制的。怎么办?如果能搭试一种装置将原系统的各个状态较准确地取出来,就可以实现系统极点任意配置。于是提出了利用被控系统的输入量和输出量重构原系统的状态,并用反馈来消除原系统和重构系统状态的误差,这样原系统的状态就能被等价取出,从而进行状态反馈,达到极点配置改善系统的目的,这个重构的系统就叫状态观测器。 另外,状态观测器可以用来监测被控系统的各个参量。 观测器的设计线路不是唯一的,本实验采用较实用的设计。 给一个被控二阶系统,其开环传递函数是G (s )=12 (1)(1)K T s T s ++ ,12 K K K =观测器如图示。

设被控系统状态方程 构造开环观测器,X ∧ Y ∧ 为状态向量和输出向量估值 由于初态不同,估值X ∧ 状态不能替代被控系统状态X ,为了使两者初态跟随,采用输出误差反馈调节,加入反馈量H(Y-Y)∧ ,即构造闭环观测器,闭环观测器对重构造的参数误差也有收敛作用。 也可写成 X =(A-HC)X +Bu+HY Y CX ? ∧ ∧ ∧∧ = 只要(A-HC )的特征根具有负实部,状态向量误差就按指数规律衰减,且极点可任意配置,一般地,(A-HC )的收敛速度要比被控系统的响应速度要快。工程上,取小于被控系统最小时间的3至5倍,若响应太快,H 就要很大,容易产生噪声干扰。 实验采用X =A X +Bu+H(Y-Y)? ∧ ∧∧ 结构,即输出误差反馈,而不是输出反馈形式。 取:1212min 35 20,5,2,0.5,0.2K K T T t λ-= =====,求解12g g ?????? 三、实验设备: THBDC-1实验平台 THBDC-1虚拟示波器 Matlab/Simulink 软件 四、实验步骤 按要求设计状态观测器 (一) 在Matlab 环境下实现对象的实时控制 1. 将ZhuangTai_model.mdl 复制到E:\MATLAB6p5\work 子目录下,运行matlab ,打开ZhuangTai_model.mdl 注:‘实际对象’模块对应外部的实际被控对象,在simulink 下它代表计算机与外部接口: ● DA1对应实验面板上的DA1,代表对象输出,输出通过数据卡传送给计算机; ● AD1对应实验面板上的AD1,代表控制信号,计算机通过数据卡将控制信号送给实际对象;

编译原理实验报告

《编译原理》实验报告软件131 陈万全132852

一、需求分析 通过对一个常用高级程序设计语言的简单语言子集编译系统中词法分析、语法分析、语义处理模块的设计、开发,掌握实际编译系统的核心结构、工作流程及其实现技术,获得分析、设计、实现编译程序等方面的实际操作能力,增强设计、编写和调试程序的能力。 通过开源编译器分析、编译过程可视化等扩展实验,促进学生增强复杂系统分析、设计和实现能力,鼓励学生创新意识和能力。 1、词法分析程序设计与实现 假定一种高级程序设计语言中的单词主要包括五个关键字begin、end、if、then、else;标识符;无符号常数;六种关系运算符;一个赋值符和四个算术运算符,试构造能识别这些单词的词法分析程序。 输入:由符合和不符合所规定的单词类别结构的各类单词组成的源程序文件。 输出:把所识别出的每一单词均按形如(CLASS,VALUE)的二元式形式输出,并将结果放到某个文件中。对于标识符和无符号常数,CLASS字段为相应的类别码的助记符;VALUE字段则是该标识符、常数的具体值;对于关键字和运算符,采用一词一类的编码形式,仅需在二元式的CLASS字段上放置相应单词的类别码的助记符,VALUE字段则为“空”。 2、语法分析程序设计与实现 选择对各种常见高级程序设计语言都较为通用的语法结构——算术表达式的

一个简化子集——作为分析对象,根据如下描述其语法结构的BNF定义G2[<算术表达式>],任选一种学过的语法分析方法,针对运算对象为无符号常数和变量的四则运算,设计并实现一个语法分析程序。 G2[<算术表达式>]: <算术表达式>→<项> | <算术表达式>+<项> | <算术表达式>-<项> <项>→<因式>|<项>*<因式>|<项>/<因式> <因式>→<运算对象> | (<算术表达式>) 若将语法范畴<算术表达式>、<项>、<因式>和<运算对象>分别用E、T、F和i 代表,则G2可写成: G2[E]:E → T | E+T | E-T T → F | T*F | T/F F → i | (E) 输入:由实验一输出的单词串,例如:UCON,PL,UCON,MU,ID······输出:若输入源程序中的符号串是给定文法的句子,则输出“RIGHT”,并且给出每一步分析过程;若不是句子,即输入串有错误,则输出“ERROR”,并且显示分析至此所得的中间结果,如分析栈、符号栈中的信息等,以及必要的出错说明信息。 3、语义分析程序设计与实现 对文法G2[<算术表达式>]中的产生式添加语义处理子程序,完成运算对象是简单变量(标识符)和无符号数的四则运算的计值处理,将输入的四则运算转换为四元式形式的中间代码。 输入:包含测试用例(由标识符、无符号数和+、?、*、/、(、)构成的算术表达式)的源程序文件。 输出:将源程序转换为中间代码形式表示,并将中间代码序列输出到文件中。 若源程序中有错误,应指出错误信息 二、设计思路 1、词法分析程序设计与实现 1)单词分类 为了编程的实现。我们假定要编译的语言中,全部关键字都是保留字,程序员不得将它们作为源程序中的标识符;作了这些限制以后,就可以把关键字和标识符的识别统一进行处理。即每当开始识别一个单词时,若扫视到的第一个字符为字母,则把后续输入的字母或数字字符依次进行拼接,直至扫视到非字母、数字字符为止,以期获得一个尽可能长的字母数字字符串,然后以此字符串查所谓保留字表(此保留字表要事先造好),若查到此字符串,则取出相应的类别码;反之,则表明该字符串应为一标识符。

相关文档
最新文档