文档库 最新最全的文档下载
当前位置:文档库 › 体系结构实验报告-hbu

体系结构实验报告-hbu

体系结构实验报告-hbu
体系结构实验报告-hbu

实验一流水线中的相关

实验目的

1. 熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点;

2. 加深对计算机流水线基本概念的理解;

3. 进一步了解DLX基本流水线各段的功能以及基本操作;

4. 加深对数据相关、结构相关的理解,了解这两类相关对CPU性能的影响;

5. 了解解决数据相关的方法,掌握如何使用定向技术来减少数据相关带来的暂停。

实验平台

WinDLX模拟器

实验内容和步骤

(做实验前请先认真阅读WinDLX教程)

1.用WinDLX模拟器执行下列三个程序(任选一个):

●求阶乘程序fact.s

●求最大公倍数程序gcm.s

●求素数程序prim.s

分别以步进、连续、设置断点的方式运行程序,观察程序在流水线中的执行情况,观察CPU中寄存器和存储器的内容。熟练掌握WinDLX的操作和使用。

注意:fact.s中调用了input.s中的输入子程序。load程序时,要两个程序一起装入(都select后再点击load)。gcm.s也是如此。

2.用WinDLX运行程序structure_d.s,通过模拟:

●找出存在结构相关的指令对以及导致结构相关的部件;

●记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百

分比;

●论述结构相关对CPU性能的影响,讨论解决结构相关的方法。

3.在不采用定向技术的情况下(去掉Configuration菜单中Enable Forwarding选项前的勾

选符),用WinDLX运行程序data_d.s。记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。

4.在采用定向技术的情况下(勾选Enable Forwarding),用WinDLX再次运行程序data_d.s。

重复上述3中的工作,并计算采用定向技术后性能提高的倍数。

预备知识

1. WinDLX

WinDLX模拟器是一个图形化、交互式的DLX流水线模拟器,能够演示DLX流水线是如何工作的。该模拟器可以装载DLX汇编语言程序(后缀为“.s”的文件),然后单步、设断点或是连续执行该程序。CPU的寄存器、流水线、I/O和存储器都可以用图形表示出来,

以形象生动的方式描述DLX流水线的工作过程。模拟器还提供了对流水线操作的统计功能,便于对流水线进行性能分析。

有关WinDLX的详细介绍,见WinDLX教程。

2. 熟悉WinDLX指令集和WinDLX源代码的编写

3. 复习和掌握教材中相应的内容

(1)DLX基本流水线

(2)流水线的结构相关与数据相关

●结构相关:当指令在重叠执行过程中,硬件资源满足不了指令重叠执行的要求,

发生资源冲突时,将产生“结构相关”。

●数据相关:当一条指令需要用到前面指令的执行结果,而这些指令均在流水线中

重叠执行时,就可能引起“数据相关”。

(3)定向技术的主要思想:在发生数据相关时,等待前面计算结果的指令并不一定真的马上就用到该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令

需要它的地方,就可以避免暂停。

WinDLX实验报告

1.实验目的:

1)熟悉计算机流水线基本概念

2)了解DLX基本流水线的各段的功能

3)了解各种不同指令在流水线中的实际流动情况

4)对流水线做性能分析

5)了解影响流水线效率的因素——数据相关、结构相关、控制相关,了解相关的种类

6)了解解决数据相关的方法

2.实验内容:

1)在仿真器上分别运行单条指令:Load指令、Store指令、分支指令、寄存器ALU指令、立即数ALU指令,记录它们在流水线中的执行情况

2)仿真器运行一段无相关的程序,记录它的执行情况,计算流水线的加速比、吞吐率与效率。

3)在仿真器运行一段程序,统计该程序在流水线中出现的各种相关个数,及其引起的流水线暂停周期数

4)通过在流水线中设置定向路径来消除数据相关,运行程序并统计在流水线中出现的相关个数,及其引起的流水线暂停周期数

5)通过对程序进行编译优化并结合其他相关解决方法——分支预测与延迟槽,运行程序并统计在流水线中出现的相关个数,及其引起的流水线暂停周期

数。

3.实验步骤:

整个实验分三部分来做:

1.)熟悉WinDLX的使用

用WinDLX模拟器执行求阶乘程序fact.s。这个程序说明浮点指令的使用。该程序从标准输入读入一个整数,求其阶乘,然后将结果输出。

该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。

实验结果:

在载入fact.s和input.s之后,不设置任何断点运行。

a.不采用重新定向技术,我们得到的结果

b.采用定向技术,我们得到的结果:

从上面的数据我们可以看出定向的作用:

在定向技术存在的情况下Statistics 窗口中的各种统计数字:总的周期数(215) 和暂停数(17 RAW, 25 Control, 12 Trap; 54 Total)

在定向技术不存在时候,控制暂停和Trap 暂停仍然是同样的值,而RAW暂停从17变成了53,总的模拟周期数增加到236。所以定向技术带来的加速比:

236 / 215 = 1.098

DLX forwarded比DLX not forwarded快9.8%。

2)不相关的程序

下面是一段不相关的程序,一共6条指令

ADDI R5, R5, 1

SUBI R4, R4, 1

AND R3, R3, R3

XOR R7, R7, R7

ADDI R8, R8, 1

ADDI R9, R9, 1

在WinDLX中执行的结果如下:

如上图所示:

6条指令一共执行了10个周期,而每个指令都需要5个周期来完成。故可得加速比:5*6/10=3

实际吞吐率:

流水线由5段组成,完成6条指令,m=5,n=6

T=5△t+(6-1) △t=10△t

Tp=n/T=3/(5△t),即为实际吞吐率。

效率:E=1/(1+(m-1)/n)=TP*△t=3/5

3)存在相关的程序

a.数据相关

先给出一个存在数据相关的程序:

LHI R2, (A>>16) & 0xFFFF

ADDUI R2, R2, A & 0xFFFF

LHI R3, (B>>16)&0xFFFF

ADDUI R3, R3, B&0xFFFF

loop:

LW R1, 0 (R2)

ADD R1, R1, R3

SW 0(R2), R1

LW R5, 0 (R1)

ADDI R5, R5, #10

ADDI R2, R2, #4

SUB R4, R3, R2

BNEZ R4, loop

TRAP #0

A: .word 0, 4, 8, 12, 16, 20, 24, 28, 32, 36

B: .word 9, 8, 7, 6, 5, 4, 3, 2, 1, 0

没有采用定向技术时运行该程序:得到

程序执行了202个周期,10个数据相关引起的时钟周期RAW stall为104个。

暂停时钟周期数占总执行周期数的百分比=51.48%

采用定向技术时运行该程序:得到

程序执行了128个周期,共有6个数据相关引起的时钟周期RAW stall为30个。

暂停时钟周期数占总执行周期数的百分比=23.44%

可见通过定向技术,减少了数据相关,缩短了程序的执行周期,整个性能为原来的1.57倍。

b.结构相关

下面这段程序存在结构相关

ADDI R5, R5, 1

SUBI R4, R4, 1

AND R3, R3, R3

XOR R7, R7, R7

ADDI R8, R8, 1

ADDI R9, R9, 1

MULT R1,R5,R4

MULT R2,R3,R7

执行之后得到的clock cycle programe

Statistics:

可见1个结构相关引起了4个stall,占总共20个CYCLE 的20%

为了避免结构相关,可以考虑采用资源重复的方法,比如,在流水线机器中设置相互独立的指令存储器和数据存储器,也可以将CACHE分割成指令CACHE 和数据CACHE。

c.指令调度:

首先,通过Configuration菜单中的“Floating point stages”选项,把除法单元数设置为3,把加法﹑乘法﹑除法的延迟设置为3个时钟周期。

给出调度前的程序sch_bef:

.data

.global ONE

ONE: .word 1

.text

.global main

main:

lf f1,ONE ;turn divf into a move

cvti2f f7,f1 ;by storing in f7 1 in

nop ;floating-point format

divf f1,f8,f7 ;move Y=(f8) into f1

divf f2,f9,f7 ;move Z=(f9) into f2

addf f3,f1,f2

divf f10,f3,f7 ;move f3 into X=(f10)

divf f4,f11,f7 ;move B=(f11) into f4

divf f5,f12,f7 ;move C=(f12) into f5

multf f6,f4,f5

divf f13,f6,f7 ;move f6 into A=(f13) Finish:

trap 0

运行之后可以得到结果:

调度之后的程序sch_aft:

.data

.global ONE

ONE: .word 1

.text

.global main

main:

lf f1,ONE ;turn divf into a move cvti2f f7,f1 ;by storing in f7 1 in nop ;floating-point format

divf f1,f8,f7 ;move Y=(f8) into f1 divf f2,f9,f7 ;move Z=(f9) into f2 divf f4,f11,f7 ;move B=(f11) into f4 divf f5,f12,f7 ;move C=(f12) into f5 addf f3,f1,f2

multf f6,f4,f5

divf f10,f3,f7 ;move f3 into X=(f10) divf f13,f6,f7 ;move f6 into A=(f13) Finish:

trap 0

运行之后得到:

可以看出经过调度之后

运行周期从27减少到21,而且减少了相关。

实验总结:

通过本实验,基本掌握了WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点,对于体系结构这门课程的学习和后面的实验还是很有帮助的。

Win-DLX 计算机系统结构课程设计教程

徐洁王华编

电子科技大学计算机学院

2006年5月

目录

实验一熟悉WinDLX的使用 (2)

实验二结构相关 (4)

实验三数据相关…………………………………………………………. .6

实验四指令调度 (8)

附录实验报告 (10)

实验一汇编源程序的上机调试操作基础训练

一.实验目的:

通过本实验,熟练掌握WinDLX模拟器的操作和使用,熟悉DLX指令集结构及其特点。

二.实验内容:

(一)WinDLX的安装:

1. WinDLX是一个基于Windows的模拟器, 能够演示DLX流水线是如何工作的。

WinDLX 包含windlx.exe和windlx.hlp文件。同时,还需要一些扩展名为.s 的汇编代码文件。按以下步骤在Windows下安装WinDLX:

⑴ WinDLX创建目录,例如D:\WINDLX

⑵解压WinDLX软件包或拷贝所有的WinDLX文件(至少包含 windlx.exe,

windlx.hlp)到这个WinDLX 目录。

2. 启动和配置WinDLX:

双击WinDLX图标,将出现一个带有六个图标的主窗口,双击这些图标会弹出子

窗口.

为了初始化模拟器, 点击File菜单中的Reset all菜单项,弹出一个“Reset

DLX”对话框。然后点击窗口中的“确认”按钮即可。

(二)程序介绍

1.求阶乘程序fact.s

这个程序说明浮点指令的使用。该程序从标准输入读入一个整数,求其

阶乘,然后将结果输出。

该程序中调用了input.s中的输入子程序,这个子程序用于读入正整数。

2.程序gcm.s

gcm.s程序从标准输入读入两个整数,求他们的greatest common measure,然后将结果写到标准输出。

3. 求素数程序prim.s

prim.s程序计算若干个整数的素数。

三.实验要求:

实验前要做好充分准备,包括WinDLX安装与调试步骤、程序运行方法,以及对模拟结果的分析等。

四.试验步骤

1.启动WinDLX模拟器.装入测试程序之前,先初始化WinDLX.

2.以运行求阶乘程序fact.s为例, 选择File / Load Code or Data,按如下步骤操作,可将fact.s和input.s这两个程序装入主存:

将fact.s和input.s拷贝到WinDLX目录,

◆点击fact.s

◆点击select按钮

◆点击input.s

◆点击select按钮

◆点击load按钮

3.点击主窗口中的Execution开始运行。

4.程序gcm.s和prim.s的运行过程同上。

五. 试验报告:

通过上述使用WinDLX,总结WinDLX的特点。

实验二结构相关

一.实验目的:

通过本实验,加深对结构相关的理解,了解结构相关对CPU性能的影响。二.实验内容:

1. 用WinDLX模拟器运行程序structure_d.s 。

2. 通过模拟,找出存在结构相关的指令对以及导致结构相关的部件。

3.由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。

4.论述结构相关对CPU性能的影响,讨论解决结构相关的方法。

三.实验原理:

结构相关是指因为程序的执行方向可能被改变而引起的相关。可能改变程序执行方向的指令通常有无条件转移、一般条件转移、复合条件转移、子程序调用、中断等。

1.无条件转移

无条件转移指令一般能够在指令分析器中就执行完成,因此一般对指令执行部件的工作不会造成影响。

2.条件转移

条件转移指令有两种:一般条件转移指令和复合条件转移指令。

对于一般条件转移指令,相关最严重的情况发生在条件码是上一条指令产生的。转移不成功对先行控制器的影响不大,而转移成功时,不仅指令执行过程变成了完全串行,而且要作废已经取到先行指令缓冲栈中的大量指令,从而白白增加了处理机与主存之间的通信量。

对于复合条件转移指令,如果转移不成功,则就象一条普通的运算型指令一样。如果转移成功,不仅要全部或部分作废先行指令缓冲栈中已经预取的指令,还可能要作废先行操作栈中的指令和先行读数栈中的操作数,作废当前在指令分析器中分析的指令。

四.WinDLX的窗口配置:

1.Statistics 窗口:

将待运行程序装入主存后按F5使程序完成执行,出现消息"Trap #0 occurred" 表明最后一条指令trap 0 已经执行,Trap指令中编号“0”没有

定义,只是用来终止程序。双击图标Statistics。Statistics 窗口提供各个方面的信息:模拟中硬件配置情况、暂停及原因、条件分支、Load/Store指令、浮点指令和traps。窗口中给出事件发生的次数和百分比。

2.WinDLX可以在多种配置下工作。你可以改变流水线的结构和时间要求、存储器大小和其他几个控制模拟的参数。点击Configuration / Floating Point Stages(点击Configuration打开菜单,然后点击Floating Point Stages菜单项),选择如下标准配置:

Count Delay

Addition Units:

Multiplication Units:

Division Units:

点击Configuration /

应设置为0x8000,然后,点击OK返回主窗口。

在Configuration菜单中的其他三个配置也可以设置,它们是:Symbolic addresses, Absolute Cycle Count 和Enable Forwardin g。点击相应菜单项后,在它的旁边将显示一个小钩。

五.实验要求:

实验前要做好充分准备,包括WinDLX安装与调试步骤、程序运行方法,以及对模拟结果的分析等。

六.实验报告:

1、程序运行说明。

2、存在结构相关的指令对以及导致结构相关的部件说明。

3、查看Statistics窗口中的各种统计数字,记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。

实验三数据相关

一.实验目的

通过本实验,加深对数据相关的理解,掌握如何使用定向技术来减少数据相关带来的暂停。

二.实验内容

1.在不采用定向技术的情况下(通过Configuration菜单中的Enable

Forwarding选项设置),用WinDLX模拟器运行程序data_d.s 。

4.记录数据相关引起的暂停时钟周期数以及程序执行的总时钟周期数,计算暂停时钟周期数占总执行周期数的百分比。

5.采用定向技术的情况下,用WinDLX模拟器再次运行程序data_d.s。三.实验要求:

实验前要做好充分准备,包括WinDLX安装与调试步骤、程序运行方法,以及对模拟结果的分析等。

四.实验原理:

1.三种数据相关:“先读后写”、“先写后读”和“写-写”相关。

2.在流水线中建立专用数据路径来避免数据相关的基本原理是数据重定向。五.WinDLX的窗口配置:

1.Statistics 窗口:

将待运行程序装入主存后按F5使程序完成执行,出现消息"Trap #0 occurred" 表明最后一条指令trap 0 已经执行,Trap指令中编号“0”没有定义,只是用来终止程序。双击图标Statistics。Statistics 窗口提供各个方面的信息:模拟中硬件配置情况、暂停及原因、条件分支、Load/Store指令、浮点指令和traps。窗口中给出事件发生的次数和百分比。

2.Code窗口:

双击图标Code,你将看到代表存储器内容的三栏信息,从左到右依次为:地址(符号或数字)、命令的十六进制机器代码和汇编命令。点击主窗口中的Execution开始模拟。在出现的下拉式菜单中,点击Single Cycle或按F7键,模拟就向前执行一步。

3.Breakpoint 窗口:

当通过Code 窗口观察代码时(如果未打开,双击图标Code),你会看到接

下来的几条指令几近一样,它们都是sw-操作:将寄存器中的数写入存储器中。重复按F7 将很枯燥,因此,我们使用断点加快此过程。

现在,请指向Code 窗口中包含命令trap 0x5的0x0000015c行,此命令是写屏幕的系统调用。单击命令行,然后点击主窗口菜单Code,单击Set Breakpoint (确保命令行仍被标记!),将弹出一个新的"Set Breakpoint" 窗口。通过此窗口,你可以选择命令运行到流水线的哪一阶段时,程序停止执行。缺省为ID段。点击OK关闭窗口。

在Code窗口中,trap 0x5行上出现了"BID" ,它表示当本指令在译码段时,程序中止执行。

如果想查看已定义的断点,你只要单击图标Reakpoints,将弹出一个小窗口,其中显示了所有断点。重新使窗口图标化。

现在你只要点击Execution / Run或按F5,模拟就继续运行。会出现一个对话框提示你"ID-Stage: reached at Breakpoint #1",按“确认”按钮关闭。

点击Clock cycle diagram窗口中的trap 0x5行,你将看到模拟正处于时钟周期14。trap 0x5行如下所示:

原因是:无论何时遇到一条trap指令时,DLX 处理器中的流水线将被清空。在Information窗口(双击trap行弹出)中,在IF段显示消息"3 stall(s) because of Trap-Pipeline-Clearing!"。(不要忘了按OK关闭窗口)。

指令trap 0x5已经写到屏幕上,你可以通过点击主窗口菜单条上的Execute / Display DLX-I/O来查看。

六.实验报告:

1.程序data_d.s装入主存运行后记录下Statistics 窗口中的各种统计数字:总的周期数和暂停数( RAW,Control,Trap,Total),然后关闭窗口。

2.点击Configuration中的Enable Forwarding使定向无效(去掉小钩),打开断点Breakpoints 图标并点击Breakpoints 菜单,删除所有断点,然后

按F5,键入20后,按Enter ,程序一直运行到结束。

3.再次打开Statistics 窗口,记下新的统计数字。计算暂停时钟周期数占总执行周期数的百分比。计算采用定向技术后性能提高的倍数。

实验四指令调度

一.实验目的

通过本实验,加深对指令调度的理解,了解指令调度技术对CPU性能改进的好处。

二.实验内容

1. 通过Configuration菜单中的“Floating point stages”选项,把除法单元数设

置为3,把加法﹑乘法﹑除法的延迟设置为3个时钟周期。

2. 用WinDLX模拟器运行调度前的程序sch-before.s 。记录程序执行过程

中各种相关发生的次数以及程序执行的总时钟周期数。

3. 用WinDLX模拟器运行调度后的程序sch-after.s ,记录程序执行过程中

各种相关发生的次数以及程序执行的总时钟周期数。

4. 根据记录结果,比较调度前和调度后的性能。

5. 论述指令调度对于提高CPU性能的意义。

三.实验要求:

实验前要做好充分准备,包括WinDLX安装与调试步骤、程序运行方法,以及对模拟结果的分析等。

四.实验原理:

在非线形流水线中,由于存在有反馈回路,当一个任务在流水线中流过时,在同一个功能段中可能要经过多次。因此不能每一个时钟周期向流水线输入一个新任务,否则会发生在同一个时刻有几个任务争用同一个功能段的情况。这种情况称为功能部件冲突,或流水线冲突。]

为了避免冲突,一般采用延迟输入新任务的方法。应该间隔多少时钟周期向流水线输入一个新任务就是非线性流水线的调度问题。

非线性流水线调度的就是找出一个最小的循环周期,按照这周期向流水线输入新任务,流水线的各个功能段都不会发生冲突,而且流水线的吞吐率和效率最高。

五.WinDLX的窗口配置:

点击Configuration / Floating Point Stages(点击Configuration打开菜单,然

后点击Floating Point Stages菜单项),选择如下标准配置:

Addition Units:

Multiplication Units:

Division Units:

在本实验中,将标准配置更改为以下配置:

Addition Units:

Multiplication Units:

Division Units:

六.实验报告:

1.将程序sch-before.s装入主存后运行后,记录程序运行过程中各种相关发生的次数以及程序执行的总时钟周期数。

2.将程序sch-after.s装入主存后运行后,记录程序执行过程中各种相关发生的次数以及程序执行的总时钟周期数。

3.根据记录结果,比较调度前和调度后的性能。

电子科技大学实验报告

【精品实验报告】软件体系结构设计模式实验报告

【精品实验报告】软件体系结构设计模式实验报告软件体系结构 设计模式实验报告 学生姓名: 所在学院: 学生学号: 学生班级: 指导老师: 完成日期: 一、实验目的 熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计模式,包括组合模式、外观模式、代理模式、观察者模式和策略模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。 二、实验内容 使用PowerDesigner和任意一种面向对象编程语言实现组合模式、外观模式、代理模式、观察者模式和策略模式,包括根据实例绘制模式结构图、编写模式实例实现代码,运行并测试模式实例代码。 (1) 组合模式 使用组合模式设计一个杀毒软件(AntiVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件TextFile、图片文件ImageFile、视频文件VideoFile。绘制类图并编程模拟实现。 (2) 组合模式 某教育机构组织结构如下图所示: 北京总部 教务办公室湖南分校行政办公室 教务办公室长沙教学点湘潭教学点行政办公室

教务办公室行政办公室教务办公室行政办公室 在该教育机构的OA系统中可以给各级办公室下发公文,现采用 组合模式设计该机构的组织结构,绘制相应的类图并编程模拟实现,在客户端代码中模拟下发公文。(注:可以定义一个办公室类为抽象叶子构件类,再将教务办公室和行政办公室作为其子类;可以定义一个教学机构类为抽象容器构件类,将总部、分校和教学点作为其子类。) (3) 外观模式 某系统需要提供一个文件加密模块,加密流程包括三个操作,分别是读取源文件、加密、保存加密之后的文件。读取文件和保存文件使用流来实现,这三个操作相对独立,其业务代码封装在三个不同的类中。现在需要提供一个统一的加密外观类,用户可以直接使用该加密外观类完成文件的读取、加密和保存三个操作,而不需要与每一个类进行交互,使用外观模式设计该加密模块,要求编程模拟实现。参考类图如下: reader = new FileReader();EncryptFacadecipher = new CipherMachine();writer = new FileWriter();-reader: FileReader-cipher: CipherMachine-writer: FileWriter +EncryptFacade () +fileEncrypt (String fileNameSrc,: voidString plainStr=reader.read(fileNameSrc); String fileNameDes)String

体系结构实验报告

中南大学软件学院 软件体系结构 设计模式实验报告 学生姓名:宋昂 所在学院:软件学院 学生学号: 3901080115 学生班级:软件0801 指导老师:刘伟 完成日期: 2010-12-7

一、实验目的 熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计模式,包括简单工厂模式、工厂方法模式、抽象工厂模式、单例模式和适配器模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。 二、实验内容 使用PowerDesigner和任意一种面向对象编程语言实现简单工厂模式、工厂方法模式、抽象工厂模式、单例模式和适配器模式,包括根据实例绘制模式结构图、编写模式实例实现代码,运行并测试模式实例代码。 (1) 简单工厂模式 使用简单工厂模式设计一个可以创建不同几何形状(Shape)的绘图工具类,如可创建圆形(Circle)、方形(Rectangle)和三角形(Triangle) 对象,每个几何图形都要有绘制draw()和擦除erase()两个方法,要求在绘制不支持的几何图形时,提示一个UnsupportedShapeException,绘制类图并编程实现。 (2) 简单工厂模式 使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数“M”,则返回一个Man 对象,如果传入参数“W”,则返回一个Woman对象,使用任意一种面向对象编程语言实现该场景。现需要增加一个新的Robot类,如果传入参数“R”,则返回一个Robot对象,对代码进行修改并注意女娲的变化。 (3) 工厂方法模式 某系统日志记录器要求支持多种日志记录方式,如文件记录、数据库记录等,且用户可以根据要求动态选择日志记录方式,现使用工厂方法模式设计该系统。用代码实现日志记录器实例,如果在系统中增加一个中的日志记录方式——控制台日志记录(ConsoleLog),绘制类图并修改代码,注意增加新日志记录方式过程中原有代码的变化。

数字信号处理实验报告

一、实验名称:基本信号的产生 二、实验目的:I 利用MATLAB 产生连续信号并作图 II 利用MATLAB 产生离散序列并作图 III 利用MATLAB 进行噪声处理 三、 实验内容: I 利用MATLAB 产生下列连续信号并作图 ①X(t)=-2u(t-1),-1=0); plot(t,x); 图形如右: ② X(t)=-(e^-0.1t)*sin(2/3*t),0

-1.5-1 -0.5 0.5 1 1.5 2 II 利用MATLAB 产生下列离散序列并作图 ① X(t)=1,-5<=t<=5 else 0,-15<=t<=15 MATLAB 程序如下: k= -15: 15; x=[zeros(1,10),ones(1,11),zeros(1,10)]; stem(k,x) 图形如下: ② X(t)=0.9^k*(cos(0.25*pi*k)+sin(0.25*pi*p),-20

模式识别第二次上机实验报告

北京科技大学计算机与通信工程学院 模式分类第二次上机实验报告 姓名:XXXXXX 学号:00000000 班级:电信11 时间:2014-04-16

一、实验目的 1.掌握支持向量机(SVM)的原理、核函数类型选择以及核参数选择原则等; 二、实验内容 2.准备好数据,首先要把数据转换成Libsvm软件包要求的数据格式为: label index1:value1 index2:value2 ... 其中对于分类来说label为类标识,指定数据的种类;对于回归来说label为目标值。(我主要要用到回归) Index是从1开始的自然数,value是每一维的特征值。 该过程可以自己使用excel或者编写程序来完成,也可以使用网络上的FormatDataLibsvm.xls来完成。FormatDataLibsvm.xls使用说明: 先将数据按照下列格式存放(注意label放最后面): value1 value2 label value1 value2 label 然后将以上数据粘贴到FormatDataLibsvm.xls中的最左上角单元格,接着工具->宏执行行FormatDataToLibsvm宏。就可以得到libsvm要求的数据格式。将该数据存放到文本文件中进行下一步的处理。 3.对数据进行归一化。 该过程要用到libsvm软件包中的svm-scale.exe Svm-scale用法: 用法:svmscale [-l lower] [-u upper] [-y y_lower y_upper] [-s save_filename] [-r restore_filename] filename (缺省值:lower = -1,upper = 1,没有对y进行缩放)其中,-l:数据下限标记;lower:缩放后数据下限;-u:数据上限标记;upper:缩放后数据上限;-y:是否对目标值同时进行缩放;y_lower为下限值,y_upper为上限值;(回归需要对目标进行缩放,因此该参数可以设定为–y -1 1 )-s save_filename:表示将缩放的规则保存为文件save_filename;-r restore_filename:表示将缩放规则文件restore_filename载入后按此缩放;filename:待缩放的数据文件(要求满足前面所述的格式)。缩放规则文件可以用文本浏览器打开,看到其格式为: y lower upper min max x lower upper index1 min1 max1 index2 min2 max2 其中的lower 与upper 与使用时所设置的lower 与upper 含义相同;index 表示特征序号;min 转换前该特征的最小值;max 转换前该特征的最大值。数据集的缩放结果在此情况下通过DOS窗口输出,当然也可以通过DOS的文件重定向符号“>”将结果另存为指定的文件。该文件中的参数可用于最后面对目标值的反归一化。反归一化的公式为: (Value-lower)*(max-min)/(upper - lower)+lower 其中value为归一化后的值,其他参数与前面介绍的相同。 建议将训练数据集与测试数据集放在同一个文本文件中一起归一化,然后再将归一化结果分成训练集和测试集。 4.训练数据,生成模型。 用法:svmtrain [options] training_set_file [model_file] 其中,options(操作参数):可用的选项即表示的涵义如下所示-s svm类型:设置SVM 类型,默

软件设计模式与软件体系结构实验报告

《软件体系结构》大作业(1) 学院:软件学院 课程名称:软件体系结构 专业班级: 学生姓名:学号: 学生姓名:学号: 指导教师: 完成时间:年月日 评分表 1、叙述各小组成员完成本题目的分工协作情况。 小组中的每个成员都先理解题目要求及涉及的设计模式,并一起完成代码编写。另外,组长负责文档制作。 2、评分表 序号姓名评分是否组长 1 2 作业正文需要包括以下内容: 1、作业题目内容的详细描述。 2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的 软件体系结构名称及画出相应的体系结构图。

3、画出完成本题目所设计程序的设计类图;如还有其他图,也一并画出。 4、完成本题目所设计的程序代码。 5、程序运行的典型界面截图

1、作业题目内容的详细描述。 【作业2.1-1】例2.3为使用工厂方法模式设计的汽车保险管理应用程序实例。现在需要 扩展例2.3的设计图,添加一个名为LuxuryCarInsurance的类,并且需要编写此类和其他需要添加的类的代码,详细要求参见光盘的相应作业部分。 【作业2.1-1】在例2.4中,设计并且实现了豪华(Super)和中等(Medium)别墅(House)与公寓(Condo)的查询。要求在该设计的基础上,增加一个新的类SemiDetacher(半独立式楼宇),并且编写代码,实现相应的查询功能,详细要求参见光盘的相应作业部分。 2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的软件体系结构名称及画出相应的体系结构图。 【作业2.1-1】采用的是工厂方法模式 【作业2.1-2】采用的是抽象方法模式

信号处理实验报告、

第一题 如何用计算机模拟一个随机事件,并估计随机事件发生的概率以计算圆周率π。 解: (一)蒙特卡洛方法可用于近似计算圆周率:让计算机每次随机生成两个0到1之间的数,看以这两个实数为横纵坐标的点是否在单位圆内。生成一系列随机点,统计单位圆内的点数与总点数,(圆面积和外切正方形面积之比为π:4),当随机点取得越多时,其结果越接近于圆周率。 代码: N=100000000; x=rand(N,1); y=rand(N,1); count=0; for i=1:N if (x(i)^2+y(i)^2<=1) count=count+1; end end PI=vpa(4*count/N,10) PI = 3.1420384

蒙特卡洛法实验结果与试验次数相关,试验次数增加,结果更接近理论值 (二)18世纪,法国数学家布丰和勒可莱尔提出的“投针问题”,记载于布丰1777年出版的著作中:“在平面上画有一组间距为d的平行线,将一根长度为l (l

模式识别实验报告

模式识别实验报告

————————————————————————————————作者:————————————————————————————————日期:

实验报告 实验课程名称:模式识别 姓名:王宇班级: 20110813 学号: 2011081325 实验名称规范程度原理叙述实验过程实验结果实验成绩 图像的贝叶斯分类 K均值聚类算法 神经网络模式识别 平均成绩 折合成绩 注:1、每个实验中各项成绩按照5分制评定,实验成绩为各项总和 2、平均成绩取各项实验平均成绩 3、折合成绩按照教学大纲要求的百分比进行折合 2014年 6月

实验一、 图像的贝叶斯分类 一、实验目的 将模式识别方法与图像处理技术相结合,掌握利用最小错分概率贝叶斯分类器进行图像分类的基本方法,通过实验加深对基本概念的理解。 二、实验仪器设备及软件 HP D538、MATLAB 三、实验原理 概念: 阈值化分割算法是计算机视觉中的常用算法,对灰度图象的阈值分割就是先确定一个处于图像灰度取值范围内的灰度阈值,然后将图像中每个像素的灰度值与这个阈值相比较。并根据比较的结果将对应的像素划分为两类,灰度值大于阈值的像素划分为一类,小于阈值的划分为另一类,等于阈值的可任意划分到两类中的任何一类。 最常用的模型可描述如下:假设图像由具有单峰灰度分布的目标和背景组成,处于目标和背景内部相邻像素间的灰度值是高度相关的,但处于目标和背景交界处两边的像素灰度值有较大差别,此时,图像的灰度直方图基本上可看作是由分别对应于目标和背景的两个单峰直方图混合构成。而且这两个分布应大小接近,且均值足够远,方差足够小,这种情况下直方图呈现较明显的双峰。类似地,如果图像中包含多个单峰灰度目标,则直方图可能呈现较明显的多峰。 上述图像模型只是理想情况,有时图像中目标和背景的灰度值有部分交错。这时如用全局阈值进行分割必然会产生一定的误差。分割误差包括将目标分为背景和将背景分为目标两大类。实际应用中应尽量减小错误分割的概率,常用的一种方法为选取最优阈值。这里所谓的最优阈值,就是指能使误分割概率最小的分割阈值。图像的直方图可以看成是对灰度值概率分布密度函数的一种近似。如一幅图像中只包含目标和背景两类灰度区域,那么直方图所代表的灰度值概率密度函数可以表示为目标和背景两类灰度值概率密度函数的加权和。如果概率密度函数形式已知,就有可能计算出使目标和背景两类误分割概率最小的最优阈值。 假设目标与背景两类像素值均服从正态分布且混有加性高斯噪声,上述分类问题可以使用模式识别中的最小错分概率贝叶斯分类器来解决。以1p 与2p 分别表示目标与背景的灰度分布概率密度函数,1P 与2P 分别表示两类的先验概率,则图像的混合概率密度函数可用下式表示为

设计模式实验报告

实验一单例模式的应用 1 实验目的 1) 掌握单例模式(Singleton)的特点 2) 分析具体问题,使用单例模式进行设计。 2 实验内容和要求 很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。 通常客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象。如果在系统运行中,有很多地方都需要使用配置文件的内容,系统中会同时存在多份配置文件的内容,这会严重浪费内存资源。 事实上,对于AppConfig类,在运行期间,只需要一个对象实例就够了。那么应该怎么实现呢?用C#控制台应用程序实现该单例模式。绘制该模式的UML 图。 3 实验代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AppConfig { publicclass Singleton { privatestatic Singleton instance; private Singleton() {

} publicstatic Singleton GetInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } class Program { staticvoid Main(string[] args) { Singleton singletonOne = Singleton.GetInstance(); Singleton singletonTwo = Singleton.GetInstance(); if (singletonOne.Equals(singletonTwo)) { Console.WriteLine("singletonOne 和 singletonTwo 代表的是同一个实例"); } else { Console.WriteLine("singletonOne 和 singletonTwo 代表的是不同实例"); } Console.ReadKey(); } } } 4 实验结果

软件设计与体系结构实验报告

福建农林大学计算机与信息学院 实验报告 课程名称:软件设计与体系结构 姓名:陈宇翔 系:软件工程系 专业:软件工程 年级:2007 学号:070481024 指导教师:王李进 职称:讲师 2009年12月16日

实验项目列表

福建农林大学计算机与信息学院实验报告 学院:计算机与信息学院专业:软件工程系年级:2007 姓名:陈宇翔 学号:070481024 课程名称:软件设计与体系结构实验时间:2009-10-28 实验室田实验室312、313计算机号024 指导教师签字:成绩: 实验1:ACME软件体系结构描述语言应用 一、实验目的 1)掌握软件体系结构描述的概念 2)掌握应用ACMESTUDIO工具描述软件体系结构的基本操作 二、实验学时 2学时。 三、实验方法 由老师提供软件体系结构图形样板供学生参考,学生在样板的指导下修改图形,在老师的指导下进行软件体系结构描述。 四、实验环境 计算机及ACMESTUDIO。 五、实验内容 利用ACME语言定义软件体系结构风格,修改ACME代码,并进行风格测试。 六、实验操作步骤 一、导入Zip文档 建立的一个Acme Project,并且命名为AcmeLab2。如下图:

接着导入ZIP文档,导入完ZIP文档后显示的如下图: 二、修改风格 在AcmeLab2项目中,打开families下的TieredFam.acme.如下图: 修改组件外观 1. 在组件类型中,双击DataNodeT; 在其右边的编辑器中,将产生预览;选择Modify 按钮,将打开外观编辑器对话框。 2. 首先改变图形:找到Basic shape section,在Stock image dropdown menu中选 择Repository类型. 3. 在Color/Line Properties section修改填充颜色为深蓝色。 4. 在颜色对话框中选择深蓝色,并单击 [OK]. 5. 修改图形的边框颜色为绿色 7. 单击Label tab,在Font Settings section, 设置字体颜色为白色,单击[OK] 产生的图形如下图:

哈尔滨工程大学 语音信号处理实验报告

实 验 报 告 实验课程名称: 语音信号处理实验 姓名: 班级: 20120811 学号: 指导教师 张磊 实验教室 21B#293 实验时间 2015年4月12日 实验成绩 实验序号 实验名称 实验过程 实验结果 实验成绩 实验一 语音信号的端点检测 实验二 语音信号的特征提取 实验三 语音信号的基频提取

实验一 语音信号的端点检测 一、实验目的 1、掌握短时能量的求解方法 2、掌握短时平均过零率的求解方法 3、掌握利用短时平均过零率和短时能量等特征,对输入的语音信号进行端点检测。 二、实验设备 HP 计算机、Matlab 软件 三、实验原理 1、短时能量 语音信号的短时能量分析给出了反应这些幅度变化的一个合适的描述方法。对于信号)}({n x ,短时能量的定义如下: ∑ ∑∞ -∞ =∞ -∞ =*=-= -= m m n n h n x m n h m x m n w m x E )()()()()]()([222 2、短时平均过零率 短时平均过零率是指每帧内信号通过零值的次数。对于连续语音信号,可以 考察其时域波形通过时间轴的情况。对于离散信号,实质上就是信号采样点符号变化的次数。过零率在一定程度上可以反映出频率的信息。短时平均过零率的公式为: ∑∑-+=∞ -∞=--= ---=1)] 1(sgn[)](sgn[2 1 ) ()]1(sgn[)](sgn[21N n n m w w m n m x m x m n w m x m x Z 其中,sgn[.]是符号函数,即 ? ? ?<-≥=0)(10)(1 )](sgn[n x n x n x

软件体系结构实验报告

实验指导书 实验一 1、实验项目:软件体系结构设计(一) 某系统C/S风格客户端软件体系结构设计 2、实验目的:熟悉C/S风格的工作机制 3、实验内容:针对某个应用系统,选用C/S风格作为这个系统的软件体系结构 风格。熟悉C/S风格的工作机制,对所考察的系统进行C/S风格客户端软件体系结构设计。(针对不同的特定应用系统具体表述) 实验二 1、实验项目:软件体系结构设计(二) 某系统C/S风格服务器软件体系结构设计 2、实验目的:熟悉C/S风格的工作机制 3、实验内容:针对某个应用系统,选用C/S风格作为这个系统的软件体系结构 风格。熟悉C/S风格的工作机制,对所考察的系统进行C/S风格服务器软件体系结构设计。(针对不同的特定应用系统具体表述) 实验三 1、实验项目:UML建模 某系统UML建模 2、实验目的:深入理解UML建模的思想,熟悉UML建模方法 3、实验内容:作为实际应用前的一种演练,深入理解UML建模的思想,熟悉 UML建模方法,锻炼和培养分析问题、解决问题的能力。针对某个选定的应用系统,对其进行用例建模、对象类建模和状态图建模。 实验四 1、实验项目:某系统详细设计 2、实验目的:细化前期设计的有关结果,做出软件的详细规格说明 3、实验内容:详细设计(也叫过程设计)是软件设计的具体模块设计阶段,是 在作为软件开发前期设计的体系结构设计和总体设计的基础上进行的。目的是要细化前期设计的有关结果,做出软件的详细规格说明。要求具体地设计目标系统给个模块的实现过程。 实验五 1、实验项目:系统集成 2、实验目的:系统集成与总结 3、实验内容:综合考察前八次实验的内容,通盘考虑软件设计的整个过程,深 入理解软件体系结构的构建过程

工程信号处理实验报告

( 2011-2012 学年 第二学期) 重庆理工大学研究生课程论文 课程论文题目: 《工程信号处理实验报告》 课程名称 工程信号处理实验 课程类别 □学位课 非学位课 任课教师 谢明 所在学院 汽车学院 学科专业 机械设计及理念 姓名 李文中 学 号 50110802313 提交日期 2012年4月12日

工程信号处理实验报告 姓名:李文中学号:50110802313 实验报告一 实验名称:数据信号采集及采样参数选定 1实验目的 1.1了解信号采集系统的组成,初步掌握信号采集系统的使用。 1.2加深对采样定理的理解,掌握采样参数的选择方法 1.3了解信号采集在工程信号处理中的实际应用,及注意事项。 2 实验原理 2.1 模数转换及其控制 对模拟信号进行采集,就是将模拟信号转换为数字信号,即模/数(A/D)转换,然后送入计算机或专用设备进行处理。模数转换包括三个步骤:(1)采样,(2)量化,(3)编码。采样,是对已知的模拟信号按一定的间隔抽出一个样本数据。若间隔为一定时间 T,则称这种采样为等时间间隔采样。除特别注明外,一般都采用等时间间隔采样;量化,是一种用有限字长的数字量逼近模拟量的过程。编码,是将已经量化的数字量变为二进制数码,因为数字处理器只能接受有限长的二进制数。模拟信号经过这三步转换后,变成了时间上离散、幅值上量化的数字信号。A/D转换器是完成这三个步骤的主要器件。 在信号采集系统中,A/D 转换器与计算机联合使用完成模数转换。用计算机的时钟或用软件产生等间隔采样脉冲控制 A/D 转换器采样。A/D 转换器通过内部电路进行量化与编码,输出有限长的二进制代码。信号采集系统中,通常由以 A/D转换器为核心的接口电路及控制软件,进行信号采集控制。 *注这部分是由本实验所用的信号采集器自动完成的,以上也是实验器材-信号采集器的部分工作原理。以后实验中就不再赘述。 2.2 信号采集的参数选择

信号处理实验报告

数字信号处理 第四次实验报告 一、 实验目的 1.了解离散系统的零极点与系统因果性能和稳定性的关系 2.观察离散系统零极点对系统冲激响应的影响 3.熟悉MATLAB 中进行离散系统零极点分析的常用子函数 4.加深对离散系统的频率响应特性基本概念的理解 5.了解离散系统的零极点与频响特性之间的关系 6.熟悉MATLAB 中进行离散系统分析频响特性的常用子函数,掌握离散系统幅频响应和相频响应的求解方法。 二、实验过程 9.2已知离散时间系统函数分别为 ) 7.05.0)(7.05.0(3 .0)(1j z j z z z H ++-+-= )1)(1(3 .0)() 8.06.0)(8.06.0(3 .0)(32j z j z z z H j z j z z z H ++-+-= ++-+-= 求这些系统的零极点分布图以及系统的冲击响应,并判断系统因果稳定性。 %---------第一式-----------------------------------------------------------------------------% z1=[0.3,0]';p1=[-0.5+0.7j,-0.5-0.7j]';k=1; %z1零点向量矩阵,p1极点向量矩阵,k 系统增益系数---------------------------% [bl,al]=zp2tf(z1,p1,k); %将零极点增益函数转换为系统传递函数 subplot(3,2,1),zplane(bl,al); %zplane 显示离散系统的零极点分布图 ylabel('极点在单位圆内'); subplot(3,2,2),impz(bl,al,20); %impz 绘制系统的冲激响应图 %---------第二式-----------------------------------------------------------------------------% z2=[0,3,0]';p2=[-0.6+0.8j,-0.6-0.8j]'; %z2零点向量矩阵,p2极点向量矩阵---------------------------------------------------% [b2,a2]=zp2tf(z2,p2,k); %将零极点增益函数转换为系统传递函数 subplot(3,2,3),zplane(b2,a2); %zplane 显示离散系统的零极点分布图 ylabel('极点在单位圆上'); subplot(3,2,4),impz(b2,a2,20); %impz 绘制系统的冲激响应图 %---------第三式-----------------------------------------------------------------------------%

设计模式实验报告

计算机科学与技术学院 实验报告 课程名称:软件设计模式 专业:计算机科学与技术班级:班 学号: 姓名:

实验一单例模式的应用 1 实验目的 1) 掌握单例模式(Singleton)的特点 2) 分析具体问题,使用单例模式进行设计。 2 实验内容和要求 很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。 通常客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象。如果在系统运行中,有很多地方都需要使用配置文件的内容,系统中会同时存在多份配置文件的内容,这会严重浪费内存资源。 事实上,对于AppConfig类,在运行期间,只需要一个对象实例就够了。那么应该怎么实现呢?用C#控制台应用程序实现该单例模式。绘制该模式的UML图。 [代码截图]: namespace实验一_单例模式_ { class Program { static void Main(string[] args) { AppConfig appc1 = AppConfig.GetAppConfig(); AppConfig appc2 = AppConfig.GetAppConfig(); appc1.SetParameterA("hello"); appc2.SetParameterA("hi"); if (appc1.Equals(appc2)){ Console.WriteLine("appc1 和 appc2 代表的是同一个实例"); } else{ Console.WriteLine("appc1 和 appc2 代表的是不同实例"); } Console.WriteLine(appc1.GetParameterA()); Console.WriteLine(appc2.GetParameterA()); Console.ReadKey();

数字信号处理实验报告(同名22433)

《数字信号处理》 实验报告 课程名称:《数字信号处理》 学院:信息科学与工程学院 专业班级:通信1502班 学生姓名:侯子强 学号:0905140322 指导教师:李宏 2017年5月28日

实验一 离散时间信号和系统响应 一. 实验目的 1. 熟悉连续信号经理想采样前后的频谱变化关系,加深对时域采样定理的理解 2. 掌握时域离散系统的时域特性 3. 利用卷积方法观察分析系统的时域特性 4. 掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对离散信号及系统响应进行频域分析 二、实验原理 1. 采样是连续信号数字化处理的第一个关键环节。对采样过程的研究不仅可以了解采样前后信号时域和频域特性的变化以及信号信息不丢失的条件,而且可以加深对离散傅里叶变换、Z 变换和序列傅里叶变换之间关系式的理解。 对连续信号()a x t 以T 为采样间隔进行时域等间隔理想采样,形成采样信号: ?()()()a a x t x t p t = 式中()p t 为周期冲激脉冲,$()a x t 为()a x t 的理想采样。 ()a x t 的傅里叶变换为μ ()a X j Ω: 上式表明将连续信号()a x t 采样后其频谱将变为周期的,周期为Ωs=2π/T 。也即采样信 号的频谱μ()a X j Ω是原连续信号xa(t)的频谱Xa(jΩ)在频率轴上以Ωs 为周期,周期延拓而成 的。因此,若对连续信号()a x t 进行采样,要保证采样频率fs ≥2fm ,fm 为信号的最高频率,才可能由采样信号无失真地恢复出原模拟信号 计算机实现时,利用计算机计算上式并不方便,因此我们利用采样序列的傅里叶变换来实现,即 ()() n P t t nT δ∞ =-∞ = -∑μ1()()*() 21 ()n a a a s X j X j P j X j jn T π∞ =-∞ Ω=ΩΩ= Ω-Ω∑μ()()|j a T X j X e ωω=ΩΩ=

模式识别实验报告(一二)

信息与通信工程学院 模式识别实验报告 班级: 姓名: 学号: 日期:2011年12月

实验一、Bayes 分类器设计 一、实验目的: 1.对模式识别有一个初步的理解 2.能够根据自己的设计对贝叶斯决策理论算法有一个深刻地认识 3.理解二类分类器的设计原理 二、实验条件: matlab 软件 三、实验原理: 最小风险贝叶斯决策可按下列步骤进行: 1)在已知 ) (i P ω, ) (i X P ω,i=1,…,c 及给出待识别的X 的情况下,根据贝叶斯公式计 算出后验概率: ∑== c j i i i i i P X P P X P X P 1 ) ()() ()()(ωωωωω j=1,…,x 2)利用计算出的后验概率及决策表,按下面的公式计算出采取i a ,i=1,…,a 的条件风险 ∑== c j j j i i X P a X a R 1 )(),()(ωω λ,i=1,2,…,a 3)对(2)中得到的a 个条件风险值) (X a R i ,i=1,…,a 进行比较,找出使其条件风险最小的 决策k a ,即()() 1,min k i i a R a x R a x == 则 k a 就是最小风险贝叶斯决策。 四、实验内容 假定某个局部区域细胞识别中正常(1ω)和非正常(2ω)两类先验概率分别为 正常状态:P (1ω)=; 异常状态:P (2ω)=。 现有一系列待观察的细胞,其观察值为x : 已知先验概率是的曲线如下图:

)|(1ωx p )|(2ωx p 类条件概率分布正态分布分别为(-2,)(2,4)试对观察的结果 进行分类。 五、实验步骤: 1.用matlab 完成分类器的设计,说明文字程序相应语句,子程序有调用过程。 2.根据例子画出后验概率的分布曲线以及分类的结果示意图。 3.最小风险贝叶斯决策,决策表如下: 结果,并比较两个结果。 六、实验代码 1.最小错误率贝叶斯决策 x=[ ] pw1=; pw2=; e1=-2; a1=; e2=2;a2=2; m=numel(x); %得到待测细胞个数 pw1_x=zeros(1,m); %存放对w1的后验概率矩阵 pw2_x=zeros(1,m); %存放对w2的后验概率矩阵

设计模式实验报告-建造者模式

建造者模式 建造者 建造者设计模式定义了处理其他对象的复杂构建的对象设计。 问题:创建复杂对象时候,构造函数的创建会涉及通用体系结构判定。某些编程人员认为任何构造函数都应当执行适当的逻辑以创建整个对象。另外一些编程人员则认识到将某些逻辑分解入其他方法才是有意义的。采用后一种样式设计的构造函数基本上是一系列请求实例化的方法。上述两种解决方案都不是特别灵活。事实上,它们根本就是错误的解决方案。 解决方案:我们可以基于一组业务逻辑的结果来构造对象。在示例中,对象只有特定的部分必须被创建。如果完全定义对象的所有部分,那么可能导致完全预见不能的结果。 多个方法调用的复杂性问题在使用之处似乎并非太严重,但该复杂性却是缓慢增长的。如果需要经常调用这些方法,那么就应当创建一个Builder对象。 UML MyObject MyObjectBuilder -MyObject:MyObect +complexFunctionA() +createInstanceOfMyObject() +complexFunctionB() +buideMyObject(configurationOptions) +getBuiltMyObject() *MyObject类具有能够完全实现对象构造的两个方法。为了具有完整的Myobject对象,需要执行complexFunctionA()和complexFunctionB()方法。 * MyObjectBuilder类包含一个名为createInstanceOfMyObject()的方法。这个类负责创建Myobject类的一个简单实例。需要注意没有用于进一步构造的配置选项。这个类还存储MyObjectBuilder类创建的实例中的私有实例。 *buildMyObject()方法接受参数configurationOption。这个方法用于调用在MyObjectBuilder 对象中存储的MyObject对象的complexFunctionA()和complexFunctionB()方法。 *getBuildObject()方法返回MyObjectBuilder对象内部Myobject对象的私有实例,该实例既是完整的,也是正常构建的。 示例代码演示: _type=$type; } public function setSize($size) {

《语音信号处理》实验报告

盛年不重来,一日难再晨。及时宜自勉,岁月不待人。 中南大学 信息科学与工程学院 语音信号处理 实验报告 指导老师:覃爱娜 学生班级:信息0704 学生名称:阮光武 学生学好:0903070430 提交日期:2010年6月18日

实验一 语音波形文件的分析和读取 一、实验的任务、性质与目的 本实验是选修《语音信号处理》课的电子信息类专业学生的基础实验。通过实验: (1)掌握语音信号的基本特性理论:随机性,时变特性,短时平稳性,相关性等; (2)掌握语音信号的录入方式和*.WAV音波文件的存储结构; (3)使学生初步掌握语音信号处理的一般实验方法。 二、实验原理和步骤: WAV文件格式简介 WAV文件是多媒体中使用了声波文件的格式之一,它是以RIFF格式为标准。每个WAV文件的头四个字节就是“RIFF”。WAV文件由文件头和数据体两大部分组成,其中文件头又分为RIFF/WAV文件标识段和声音数据格式说明段两部分。常见的WAV声音文件有两种,分别对应于单声道(11.025KHz采样率、8Bit的采样值)和双声道(44.1KHz采样率、16Bit的采样值)。采样率是指声音信号在“模拟→数字”转换过程中,单位时间内采样的次数;采样值是指每一次采样周期内声音模拟信号的积分值。对于单声道声音文件,采样数据为8位的短整数(short int 00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位和低八位分别代表左右两个声道。WAV文件数据块包含以脉冲编码调制(PCM)格式表示的样本。在单声道WAV文件中,道0代表左声道,声道1代表右声道;在多声道WAV文件中,样本是交替出现的。WAV文件的格式见表1。

模式识别实验报告

实验一Bayes 分类器设计 本实验旨在让同学对模式识别有一个初步的理解,能够根据自己的设计对贝叶斯决策理论算法有一个深刻地认识,理解二类分类器的设计原理。 1实验原理 最小风险贝叶斯决策可按下列步骤进行: (1)在已知)(i P ω,)(i X P ω,i=1,…,c 及给出待识别的X 的情况下,根据贝叶斯公式计算出后验概率: ∑== c j i i i i i P X P P X P X P 1 ) ()() ()()(ωωωωω j=1,…,x (2)利用计算出的后验概率及决策表,按下面的公式计算出采取i a ,i=1,…,a 的条件风险 ∑== c j j j i i X P a X a R 1 )(),()(ωω λ,i=1,2,…,a (3)对(2)中得到的a 个条件风险值)(X a R i ,i=1,…,a 进行比较,找出使其条件风险最小的决策k a ,即 则k a 就是最小风险贝叶斯决策。 2实验内容 假定某个局部区域细胞识别中正常(1ω)和非正常(2ω)两类先验概率分别为 正常状态:P (1ω)=0.9; 异常状态:P (2ω)=0.1。

现有一系列待观察的细胞,其观察值为x : -3.9847 -3.5549 -1.2401 -0.9780 -0.7932 -2.8531 -2.7605 -3.7287 -3.5414 -2.2692 -3.4549 -3.0752 -3.9934 2.8792 -0.9780 0.7932 1.1882 3.0682 -1.5799 -1.4885 -0.7431 -0.4221 -1.1186 4.2532 已知类条件概率密度曲线如下图: )|(1ωx p )|(2ωx p 类条件概率分布正态分布分别为(-2,0.25)(2,4)试对观察的结果进 行分类。 3 实验要求 1) 用matlab 完成分类器的设计,要求程序相应语句有说明文字。 2) 根据例子画出后验概率的分布曲线以及分类的结果示意图。 3) 如果是最小风险贝叶斯决策,决策表如下:

0308软件体系结构实验报告

河南工业大学实验报告 (2015~2016学年-第2学期) 课程名称:软件体系结构课程编号:51610192地点:6313/6316/6308/6320 一、实验目的: 验证C/S风格的工作机制。 二、实验内容: 针对某个应用系统,选用C/S风格作为这个系统的软件体系结构风格。熟悉C/S风格的工作机制,对所考察的系统进行C/S风格客户端软件体系结构设计的验证。(针对不同的特定应用系统具体表述)。 三.编程环境 Windows 7 Visual Studio | Dev-C++ Eclipse 四.实验代码 1.画棋盘 // 画横线 for (int i = 0; i <= ROWS; i++) { g.drawLine(MARGIN, MARGIN+ i * GRID_SPAN, MARGIN+ COLS* GRID_SPAN, MARGIN + i * GRID_SPAN); } for (int i = 0; i <= COLS; i++) {// 画竖线 g.drawLine(MARGIN + i * GRID_SPAN, MARGIN, MARGIN + i * GRID_SPAN, MARGIN + ROWS * GRID_SPAN); } 2.将鼠标点击转为网格索引 publicvoid mouseMoved(MouseEvent e) {

int x1 = (e.getX() - MARGIN + GRID_SPAN / 2) / GRID_SPAN; // 将鼠标点击的坐标位置转成网格索引 int y1 = (e.getY() - MARGIN + GRID_SPAN / 2) / GRID_SPAN; if (x1 < 0 || x1 >ROWS || y1 < 0 || y1 >COLS || gameOver || findChess(x1, y1)) setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); // 设置成默认状态 else setCursor(new Cursor(Cursor.HAND_CURSOR)); } 3.增加棋子 // ********************** 增加黑色棋子 public Point[] BlackAddChess(int x, int y) { if (!isBlack) { String msg = String.format("黑子已经落子,轮到白子"); JOptionPane.showMessageDialog(this, msg); returnnull; } else return addChess(x, y); } // ********************** 增加白色棋子 public Point[] WhiteAddChess(int x, int y) { if (isBlack) { String msg = String.format("白子已经落子,轮到黑子"); JOptionPane.showMessageDialog(this, msg); returnnull; } else return addChess(x, y); } 4.悔棋 publicvoid goback() { if (chessCount == 0) return; chessList[chessCount - 1] = null; chessCount--; if (chessCount> 0) { xIndex = chessList[chessCount - 1].getX(); yIndex = chessList[chessCount - 1].getY(); } isBlack = !isBlack;

相关文档
相关文档 最新文档