计算方法课程设计报告-- 数字图像匹配

计算方法课程设计报告-- 数字图像匹配
计算方法课程设计报告-- 数字图像匹配

计算方法课程设计报告-- 数字图像匹配

数字图像匹配

目录

一. 课题分析 (4)

二.算法设计 (5)

1.概念解释....................................................

5

2.数字图像匹配算法设计........................ (5)

⑴基于灰度的归一化匹配算法 (6)

⑵基于灰度的快速模板匹配算法 (8)

三.相应matlab程序设计. ...................... .. (10)

1.数字图像匹配相关函数.............. (10)

2.数字图像匹配函数................ .. (12)

(1) 基于灰度的归一化匹配算法 (12)

(2) 基于灰度的快速模板匹配算法 (14)

四.实验测试........................ ............. (18)

1. 基于灰度的归一化匹配算法 (18)

2. 基于灰度的快速模板匹配算法 (18)

五.试验结果评价............................ . (19)

六.实例解答.............................. (19)

七.实习心得体会.......................... .. (21)

参考文献 (22)

附录 (23)

附录一:testpipei_1.m(基于灰度的归一化匹配算法).... .... . (23)

附录二:testpipei_2(基于灰度的快速模板匹配算法).... .... . (23)

附录三:getOrder.m (二进制编码)............. .... ........ ......... (25)

附录四:gettezheng.m (求特征值) ........................ (27)

附录五:图片...................................... .... .. (29)

数字图像匹配

一. 课题分析

背景描述:

现代社会已进入信息时代,随着计算机技术、通信技术和数学的发展,图像信息处理能力和水平也不断提高,相应的也得到和更多关注、研究和更加广泛的应用。图像匹配是图像处理的一项关键技术,可广泛用于目标识别与跟踪、立体视觉、变化检测、车场车牌识别、人脸识别、机器人导航、测绘、等领域,已成为一门新兴的分支学科。由于拍摄时间、拍摄角度、自然环境的变化、多种传感器的使用和传感器本身的缺陷,使拍摄的图像不仅受噪声的影响,而且存在严重的灰度失真和几何畸变。在这种条件下,如何有效地进行图像匹配一直是人们研究的热点和难点。

实例问题:

现在来看一个很简单的问题:这边收集了八张很类似的照片(见picture文件夹中的k001.jpg---k008.jpg),还有一张小照片(见picture文件夹中的pipeitu.jpg),而现在只知道这张小照片,是从这些类似的照片中的某一张剪切下来得到的,问题是如何快速准确的找出这张小照片是从那一张照片中剪切下来的,以及确定出在原照片上所剪切的那个部位。显然由于这些照片是及其类似的,用肉眼是很难观察辨别出来的。而下面要讲的图像匹配技术就是一个处理类似问题的一项有效的技术。在此课程设计报告也将在最后运用图像匹配技术对这个问题做出回答。

图像匹配的概念:

图像匹配是指通过一定的匹配算法在两幅或多幅图像之间识别同名点,如二维图像匹配中通过比较目标区和搜索区中相同大小的窗口的相关系数,取搜索区中相关系数最大所对应的窗口中心点作为同名点。其实质是在基元相似性的条件下,运用匹配准则的最佳搜索问题。简单的讲就是,要判读一幅大图像中是否存在某种已知的图案,则以一幅与该图案有着相同尺寸和方向的小图像为模板,通过一定的算法可以在图中找到目标,确定其坐标位置。

开发环境:MATLAB 7.3.0

二.算法设计

1.概念解释:

①数字图像:数字图像是由被称做像素的小块区域组成的二维像素矩阵。一般可以把图像分成3种形式:单色图像,灰度图像和彩色图像。

②像素:表示图像颜色的最小单位,每个像素都是由一定长度的数字值来表示它的颜色和亮度。

③灰度图像:灰度图是指只含亮度信息,不含色彩信息的图像,就像平时看到的黑白照片:亮度由暗到明,变化是连续的。根据灰色的程度,可分为若干个等级,人眼可分的最多等级是64级。图像处理中常采用256个灰色等级。灰度图的每个像素的亮度用一个数值来表示,通常数值范围在0—255之间,即可用一个字节来表示,0代表纯黑,255代表纯白,而其他表示灰度,根据黑白所占的比例分布在0—255之间。

④点阵图:显示器的屏幕由可以发光的像素点组成. 并且从几何位置看, 所用这

些像素点构成一个矩形的阵列.利用计算机控制各像素点按我们指定的要求发光,就构成了我们需要的图形.这种方式构成的图形我们可称之为点阵图形。

⑤点阵图形的坐标系统:各像素点有一个坐标唯一指定了它的位置.如果点阵图形的大小是N×M, 那么它的点阵共有M行N 列, 每个像素点的位置就由它所在

的行和列的位置所唯一确定. 这个行和列的位置就给出了点阵图形的坐标系统. 按照前面的顺序, 第m行, 第n列的像素点顺序数就是m+(n-1)N.反之, 顺序数

为s的像素点在第s Mod N行, 第Int(s/N ) + 1列, 这里的s Mod N是s除以N后

的余数, Int( s/N ) 是s/N的整数部分.需要注意的是第m行, 第n列的像素点的坐标可能不是(m; n), 而是(m-1; n-1). 这是因为有时为了在计算机中处理的

方便, 像素点的行列的排序不是从1, 而是从0开始的. 我们常用的显示器的像

素坐标就是如此.

2.数字图像匹配算法设计:

图像匹配主要可分为以灰度为基础的匹配和以特征为基础的匹配。灰度匹配的基本思想:以统计的观点将图像看成是二维信号,采用统计相关的方法寻找信号间的相关匹配。利用两个信号的相关函数,评价它们的相似性以确定同名点。

灰度匹配通过利用某种相似性度量,如相关函数、协方差函数、差平方和、差绝对值和等测度极值,判定两幅图像中的对应关系。特征匹配是指通过分别提取两个或多个图像的特征(点、线、面等特征),对特征进行参数描述,然后运用所描述的参数来进行匹配的一种算法。

在此课程设计中我采用了两种基于灰度图像匹配算法: ① 基于灰度的模板匹配算法 ② 基于灰度的快速匹配算法。 ⑴基于灰度的归一化匹配算法

1 一般图像“归一化互相关函数”的定义

设两幅图像在坐标平面的区域D 上分别表示为f(x,y)(表示原图)和g(x,y)(表示模板图),这两幅图像在D 上的相似程度有两类计算方法。一类是差值测度,另一类是相关测度。

差值测度:这类测度几种常用的具体计算式如下:

1)max |(,)(,)|f x y g x y ε=- 2)|(,)(,)|D

f x y

g x y dxdy ε=-??

3)22[(,)(,)]D

f x y

g x y dxdy ε=-??

相关测度:(其性能比差值测度更为优良),以下是一步步得出“归一化互相关函数”的定义的过程。

将方差测度计算式展开如下:

22[(,)(,)]D

f x y

g x y dxdy ε=-??

=2(,)D

f x y dxdy ??+2(,)]D

g x y dxdy ??—2(,)(,)D

f x y

g x y dxdy ?? (*)

令:

2(,)(,)D

Df x y f x y dxdy =??

(,)2(,)(,)D

Dfg x y f x y g x y dxdy =??

2(,)(,)D

Dg x y g x y dxdy =??

Df(x,y)称为源图像中与模板对应区域的能量,它与像素位置(x,y )有关,

但随像素位置(x,y )的变化,Df(x,y)变化缓慢。Dfg(x,y)为模板与源图像对应区域的互相关,它随像素位置(x,y )的变化而变化,当模板g(j,k)和源图像中对应区域相匹配时取最大值。Dg(x,y)称为模板的能量,它与图像像素位置(x,y)无关,只用一次计算便可。显然,计算误差平方和测度可以减少计算量。

基于上述分析,若设Df(x,y)也为常数,则用Dfg(x,y)便可进行图像匹配,当Dfg(x,y)取最大值时,便可认为模板与图像是匹配的。但如果只简单地根据Dfg(x,y)的大小来进行图像匹配,则是不可靠。比如,有两幅图像g1(x ,y )和g2(x ,y );g1(x ,y )= f(x,y), (,)x y D ∈,g2(x ,y )=(,)

max x y f(x,y),(,)x y D ∈

显然,(,)1(,)(,)2(,)D

D

f x y

g x y dxdy f x y g x y dxdy ≤????。但是g1(x ,y )与 f(x,y),

完全相同。

在(*)式中,g (x ,y )为确定的模板图,(*)式的第二项2(,)(,)D

Dg x y g x y dxdy

=??是常数,可以将略去。然后再用2(,)D

f x y dxdy ??规格化,此时(*)式的第一项

为1,而规格化的(*)式的第三项就可以反映两图的相似程度,另外,由施瓦茨不等式:1

2

2

2

(,)(,)[(,).(,)]D

D

D

f x y

g x y dxdy f x y dxdy g x y dxdy ≤??????(当且仅当

g=cf 时等式才成立,其中c 为常数)。这样就很自然就得到“归一化互相关函数”的定义:

12

2

2

(,)(,)(,)[(,).(,)]

D

D

D

f x y

g x y dxdy

p x y f x y dxdy g x y dxdy =

??

????

用它来测度g(x,y)和f(x,y)的相似程度,显然,P 的上限是1,P 值越大,表示两者越相似。

2 数字图像的归一化相关测度匹配算法

对于数字图像,设f(x,y)为M ×N 的源图像,g(j,k)为J ×K(J ≤M,K ≤N)的模板图像,上述的公式的积分应用离散和代替,故归一化相关测度匹配算式为:

11

1111

22

0000

(,)(,)

(,)

[(,)][(,)]

J K

J K J K

j k j k

g j k f x j y k

P x y

f x j y k

g j k

--

----

====

?++

=

++?

∑∑

∑∑∑∑

下图给出了模板匹配的示意图,其中假设源图像f(x,y)和模板图像g(k,l)的原点都在左上角。对任何一个f(x,y)中的(x,y),根据上式都可以算得一个P(x,y).当x和y变化时,g(j,k)在源图像区域中移动并得出P(x,y)所有值。同样P(x,y)的上限是1,P(x,y)值越大,表示两者越相似。P(x,y)的最大值指出了与t(j,k)匹配的最佳位置,若从该位置开始在源图像中取出与模板大小相同的一个区域,便可得到匹配图像。

⑵基于灰度的快速模板匹配算法

1 局部灰度特征的编码与计算

首先将整幅图像划分为k×k尺寸且互不重叠的方块,k可根据问题任意选择,称该方块为R-块.如果图像的边长不是k的整数倍,则将最底部与最右边剩余的几行、几列裁剪掉(下文将说明这并不影响最终的匹配结果).对边长为H的图像,

共可得到H2/k2个R-块.对于R-块R

i

,S(R

i

)表示R

i

所包含像素的灰度值之和.

定义1. R-块(如图1中的R

5

所示)与其周围8个相邻的R-块(如图1中的

R

1

,R

2

,R

3

,R

4

,R

6

,R

7

,R

8

,R

9

所示)组成R-块的邻域.将R-块的邻域分为4个部分,分别

为D

1,D

2

,D

3

,D

4

(如图1所示),称为R-块的D-邻域.R-块R

5

分别属于4个D-邻域,即

D

1=R

1

∪R

2

∪R

4

∪R

5

;D

2

=R

4

∪R

5

∪R

7

∪R

8

;D

3

=R

5

∪R

6

∪R

8

∪R

9

;D

4

=R

2

∪R

3

∪R

5

∪R

6

.

对于每个D-邻域中的4个R-块,可规定一个顺序(如图2中所取的逆时针序).

对D

j 所包含的4个R-块的像素灰度值之和S(R

j1

),S(R

j2

),S(R

j3

),S(R

j4

)做排序,显然

共有4!=24种可能,每种排序结果可以用5位的二进制编码来表示,记作P(D

j

)∈{00000,00001,…,10111}.

图1

图2

将R-块R

i 所在的4个D-块的P(D

j

)做位串拼接,得到

F(R

i )=P(D

1

)P(D

2

)P(D

3

)P(D

4

),即

F(R

i

)=(P(D

1

)<<15)+(P(D

2

)<<10)+(P(D

3

)<<5)+P(D

4

).

其中,P(D

j )为R

i

所在的邻域D

j

的二进编码,<<为移位操作,其后面的数字表示移位

位数.

定义2. F(R

i )为R

i

块的20位二进制编码特征表示,简称R

i

块的编码.

对一幅图像,提取它所有R

i 块的编码,需要计算各个R-块的灰度值和S(R

i

)、

计算各个D-邻域的编码P(D

j )、计算各个R

i

块的编码F(R

i

)等共3步.图像最外一圈

的R

i

块的编码无定义.对于边长为H的图像,上述运算的时间复杂度为O(H2).

显然,F(R

i )表示R-块R

i

的灰度与相邻8个R-块灰度的分布(序)关系,体现了

图像灰度的相对值,因此对整体灰度值的变化具有相对的稳定性.通过对R-块尺寸k的选择,可以改变图像处理粒度的大小,以改变抵抗不同频率噪声的能力.

2 特征的匹配过程

定义3. 在待搜索图S上以模板T的长、宽为横向、纵向步长,从S的左上角开始按模板T的大小划分S得到的子图称为限制块,记作C i, j,其中(i,j)为限制块左上角顶点在搜索图S上的坐标.这样划分后,如果在搜索图S的右侧或底部有剩余部分,则相应地从S的最右侧开始向左,或从最底部开始向上划分出一列或一行限制块,使得全部限制块可以完全覆盖搜索图S.这样得到的图S上的限制块的数量为M2/H2。

定义4. 限制块C i,j与模板T都是尺寸为N×N的图像,各自的R-块特征集合用(N/k)阶方阵A(C i,j)与A(T)表示,称为特征编码矩阵,这里k为R-块的边长.在C i,j与T作特征比较时,即比较A(T)每一个元素与A(C i,j)中每一个元素是否相等,如果相等,则记下矩阵A(C i,j)中的行号、列号.

三.相应matlab程序设计

1.数字图像匹配相关函数:

①imread函数

功能:从图像文件(BMP,HDF,JPEG,PCX,TIFF,XWD等格式)中读入图像数据。

格式:A=imread(文件名,’图像文件格式’)

说明:文件名为指定图像文件名称的字符串。’图像文件格式’为图像文件格式的字符串。文件名必须在当前目录或MATLAB的work文件夹中,如果找不到则录找’文件名.图像文件格式’.A为无符号8位整数(uint8)。如果文件灰度图

像(详细解释见“算法设计”中的“概念解释”),则A为一个二维数组;如果文件是一个真彩色RGB图像,则A是一个三维数组(m×n×3)。

举例:A=imread('picture/k001.jpg');%读取存放在work文件夹下的picture 文件夹下的名为k001.jpg的图像,并将其整个点阵数据传给A。

注:在MATLAB中申请一个变量时不需要指定类型,其具体类型由系统自动判别②imwrite函数

功能:交图像写入图像文件(以BMP,HDF,JPEG,PCX,TIFF,XWD等格式)。

格式:imwrite(A,文件名,'图像文件格式’)

说明:文件名为指定图像文件名称的字符串。'图像文件格式’是指定图像文件的保存格式的字符串。如果A是一个无符号8位整数表示的灰度图像或真彩色图像,imwrite直接交数组A中的值写入文件。如果A为双精度浮点数,imwrite 首先使用uint8(round(255*A))自动将数组中的值变换为无符号8位整数,即交[0,1]范围内的浮点数变换为[0,255]范围内8位整数,然后写入文件。

③imshow函数

功能:图像显示

格式:imshow(I)

说明:在图形窗口显示I,其中I为用imread函数赋值的变量,是一个图形矩阵。

④rgb2gray函数

功能:转换RGB图像或颜色映像表为灰度图像。

格式:

I = rgb2gray(RGB)

说明:RGB为用imread函数赋值的变量,是一个图形矩阵;I为一个表示灰度图像的二维数组。

⑤size函数

功能:用来求出某一个变量的的大小参数

格式:[x,y]=size(I)

说明:I用imread函数赋值的变量,是一个图形矩阵且为灰度图像,x用来保存I的高度值,y用来保存I的宽度值。

⑥imcrop函数

功能:图像剪裁

格式:

Ⅰ:I2=imcrop(I)

Ⅱ:I2=imcrop(I,RECT)

说明:格式Ⅰ为交互方式,imcrop显示输入图像,等待用户用鼠标定义要剪裁的矩形。格式Ⅱ为非交互方式,对灰度图像进行非交互方式的剪裁操作,通过四元素向量RECT=[xmin ymin width height]指定剪裁矩阵,这些值是定义在坐标系中的,xmin和ymin是图像矩阵I的一处坐标,width是以此坐标为准向右的延伸的长度,height是以此坐标为准向下延伸的长度,由此构成要剪裁的矩形区域。

2.数字图像匹配函数

(1) 基于灰度的归一化匹配算法

①mean2函数

功能:求图像均值

格式:m=mean2(A)

说明:mean2函数可用来计算图像矩阵A的均值m,m是双精度标量。

举例: A=imread('Picture.bmp');

m=mean2(A);

运行结果:

m=

138.0552

②corr2函数

功能:求图像间相关系数

格式:r=cor2(A,B)

说明:corr2函数计算图像矩阵A与B的相关系数,矩阵A与B的大小相同,如均为:m×n。

计算公式如下:

22()()

(())(())

mn

mn m

n

mn mn m

n

m

n

A

A B B r A A B B --=

-?-∑∑∑∑∑∑

其中,A =mean2(A), B =mean2(B)。

相关系数是表示矩阵A 与B 的线性联系密切程度的一个统计量,相关系数值是小于等于1的正数。值为1时,表示矩阵A 与B 的线性联系最为密切,值为0时,表示矩阵A 与B 不相关,线性联系最最弱。 ③plot 函数

功能:在线性坐标系中绘制二维数据 格式:plot(x,y,’颜色’) 说明:x,y 可以为任意一个失量。 举例:

plot(1:100,4,'r');%在纵坐标为4处画一条平行于x 轴,长度为100的红色的线段

%其中1:100表示从1到100以默认值为1的速度递增,’r ’表示红色 ④hold 命令

功能:可以交图形添加到现有的图形中,从而实现图形的叠加。如果交hold 设置为ON ,则MATLAB 在绘图时交不再清除已经存在的图形,而是交新的数据直接加到当前图形中。当新的数据落在原来的坐标范围之外时,MATLAB 交自动进行坐标比例的调整。

⑤testpipei_1 (代码祥见附录一) 功能:实现两幅数字图像的匹配 实现细节:

Ⅰ:读取原图像(搜索图)和匹配图像(模板图) yuantu=imread('Picture.bmp');%读取原图像 pipeitu=imread('Pipeitu.bmp');%读取匹配图像 Ⅱ:将原图像和匹配图像灰度化,以便于计算 yuantu2gray=rgb2gray(yuantu);%将原图灰度化 pipeitu2gray=rgb2gray(pipeitu);%将匹配图灰度化

Ⅲ: 获取原图像和匹配图像的尺寸

[pipei_height,pipei_width]=size(pipeitu2gray);%获取匹配图象的大小尺寸,其值为[高,宽],将匹配图象的长度值赋给pipei_width,将匹配图象的宽度值赋给pipei_lenth

[yuantu_height,yuantu_width]=size(yuantu2gray);%获取原图象的大小尺寸,其值为[高,宽],将原图象的长度值赋给pipei_width,将原图象的宽度值赋给pipei_lenth

Ⅳ:显示出原图,并调用hold on命令,以实现以后在原图像上做标记

imshow(yuantu);%显示原图像

hold on;

Ⅴ:在原图像上进行扫描,横坐标到原图像的宽度减去匹配图的宽度,纵坐标到原图像高度减去匹配图的高度;对于原图像上扫描到的每个像素点,以此像素点的坐标为准,剪裁(参见imcrop函数说明)出一个大小和匹配图大小一样的矩阵,此像素点为该矩阵的左上角第一个像素;对这个临时矩阵和匹配图像的矩阵取相关系数值(参见corr2函数说明);规定相关系数的值(我设为0.95),如果取得的相关系数值大于规定值,可认为在以此坐标为左上角第一个像素的临时矩阵和匹配图矩阵是相匹配的;如果在此坐标下是匹配的话,则以此为左上角,将匹配区域标记出来。

for i=1:yuantu_height-pipei_height

for j=1:yuantu_width-pipei_width

temp_picture=imcrop(yuantu2gray,[j,i,pipei_width-1,pipei_height-1]); r=corr2(temp_picture,pipeitu2gray);%取得相关系数

if r>0.95%规定值为0.95

%下面用plot函数在原图的坐标系上画出匹配区域

plot(j:j+pipei_width,i,'b');

plot(j:j+pipei_width,i+pipei_height,'b');

plot(j,i:i+pipei_height,'b');

plot(j+pipei_width,i:i+pipei_height,'b');

end

end

end

(2) 基于灰度的快速模板匹配算法

①dec2bin函数

功能:十进制数转换成二进制数

格式:A=dec2bin(B,位数)

说明:B为十进制数,A为转换后的二进制序列,位数为A的二进制位数。举例:

A=dec2bin(13,5)%将13转换为5位的二进制

运行结果:A =

01101

②bin2dec函数

功能:二进制数转换成十进制数

格式:A=bin2dec(B)

说明:B为二进制序列,A为转换后的十进制数。

举例:

C=bin2dec('0101101')%将二进制为0101101的序列转化为十进制

运行结果:C =

45

③min函数

功能:求向量中的最小值

格式:A=min(B)

说明:B为一个向量,A中保存的是B中的最小值

举例:A=min(12 32 45 66 2 3)

运算结果:A=

2

④max函数

功能:求向量中的最大值

格式:A=max(B)

说明:B为一个向量,A中保存的是B中的最大值

举例:A=max(12 32 45 66 2 3)

运算结果:A=

66

⑤sum函数

功能:求向量中和

格式:A=sum(B)

说明:B为一个向量,A中保存的是B中的和

举例:A=sum(12 32 45 66 2 3)

运算结果:A=

160

⑥testpipei_2函数(代码祥见附录二)

实现细节:

Ⅰ:读取原图像(搜索图)和匹配图像(模板图)

yuantu=imread('Picture.bmp');%读取原图像

pipeitu=imread('Pipeitu.bmp');%读取匹配图像

Ⅱ:将原图像和匹配图像灰度化,以便于计算

yuantu2gray=rgb2gray(yuantu);%将原图灰度化

pipeitu2gray=rgb2gray(pipeitu);%将匹配图灰度化

Ⅲ: 获取原图像和匹配图像的尺寸及分块标准值

[pipei_height,pipei_width]=size(pipeitu2gray);%获取匹配图象的大小尺寸,其值为[高,宽],将匹配图象的长度值赋给pipei_width,将匹配图象的宽度值赋给pipei_lenth

[yuantu_height,yuantu_width]=size(yuantu2gray);%获取原图象的大小尺寸,其值为[高,宽],将原图象的长度值赋给pipei_width,将原图象的宽度值赋给pipei_lenth

temp_min=min([pipei_height,pipei_width]);%取两个边中最短的一条边

k=fix(temp_min/5);%以分成3×3特征块为基准,得出最佳分块标准值

Ⅳ:计算及记录匹配图的9个特征块的信息;显示出原图,并调用hold on命令,以实现以后在原图像上做标记

for t=1:3%去掉外围的一圈

for s=1:3%取顺时针为正方向

temp_pipeitu(t,s)=bin2dec(gettezheng(t,s,pipeitu2gray,k)); %将二进制编码值(特征块值)以十进制的形式保存在3×3的矩阵

中的对应位置

end;

end;

imshow(public_A);

hold on;

Ⅴ:在原图像上进行扫描,横坐标到原图像的宽度减去匹配图的宽度,纵坐标到原图像高度减去匹配图的高度;对于原图像上扫描到的每个像素点,以此像素点的坐标为准,剪裁(参见imcrop函数说明)出一个大小和匹配图大小一样的矩阵,此像素点为该矩阵的左上角第一个像素;对这个临时矩阵进行特征值提取,并和匹配图的特征值进行比较,如果特征块的匹配数大于一定数(我设定为大于等于8),可认为在以此坐标为左上角第一个像素的临时矩阵和匹配图矩阵是相匹配的;如果在此坐标下是匹配的话,则以此为左上角,将匹配区域标记出来。

r=0;

for t=1:3 %去掉外围的一圈

for s=1:3 %取顺时针为正方向

temp_pipeitu_te=temp_pipeitu(t,s);

temp_yuantu_te=bin2dec(gettezheng(t,s,temp_picture,k));

if temp_pipeitu_te==temp_yuantu_te%如果特征值相同,r就加1 r=r+1;

else

break;

end;

end;

if r==0

break;

end;

end;

if r>=8

%下面用plot函数在原图的坐标系上画出匹配区域

plot(j:j+pipei_width,i,'r');

plot(j:j+pipei_width,i+pipei_height,'r');

plot(j,i:i+pipei_height,'r');

plot(j+pipei_width,i:i+pipei_height,'r');

end

end

end

⑦getOrder函数 (代码祥见附录三)

功能:根据输入的四项参数的大小顺序,返回一个5位二进制的编码

格式:

shunxu=getOrder(temp_shunxu_1,temp_shunxu_2,temp_shunxu_3,temp_shunx u_4)

举例:T=getOrder(32,13,56,42)

运行结果:T=

10000

⑧gettezheng函数 (代码祥见附录四)

功能:根据特征块的左上角坐标得出该特征块的特征值,特征值的定义详见基于灰度的快速匹配算法中的定义2。

格式:tezheng=gettezheng(i,j,I,k)

说明:i,j为特征块左上角的横坐标与衷纵坐标,I为图像矩阵,k为最佳分块标准值。

四.实验测试

读取一幅262×251的bmp图片Picture.bmp,和一幅准备与之匹配的图片Pipeitu.bmp,规格为196×104。如果找到了匹配地点就会用带颜色的矩形(匹配算法一为蓝色,算法二为红色),将匹配区域给圈定下来.

1. 基于灰度的归一化匹配算法

操作步骤:

在matlab 命令窗口输入如下命令:

a=imread('Picture.bmp');%读取原图像

b=imread('Pipeitu.bmp');%读取匹配图像

testpipei_1(a,b);

(注:这个运行过程大概需要40秒,需耐心等待)

下图就是在原图像中找到的匹配区域。

2. 基于灰度的快速模板匹配算法

操作步骤:

在matlab 命令窗口输入如下命令:

a=imread('Picture.bmp');%读取原图像

b=imread('Pipeitu.bmp');%读取匹配图像testpipei_2(a,b);

(注:这个运行过程大概需要25秒,需耐心等待)下图就是在原图像中找到的匹配区域。

五.试验结果评价

根据实验测试结果得:

匹配算法1(基于灰度的归一化匹配算法)的匹配时间约为40秒左右。

匹配算法2(基于灰度的快速匹配算法)的匹配时间约为25秒左右。

(当然这里匹配时间的估算可能在不同环境或则不同机子下存在差异) 结论:匹配算法1和匹配算法2的共同缺点是都绝对的依赖坐标系统,计算量太大,费时间较多。这些也正是利用灰度信息匹配方法的主要缺陷所在。但是单纯比较这两种算法,算法2还是比算法1的匹配速度快很多。

当然这里还需注意,两图像进行匹配时首先要保证它们具有相同的方向,(即不能有一个图像是旋转过的),这也是这两种算法在进行匹配时的缺陷所在。

六.实例解答

对于一开始在课题分析中提出的问题,这边将运用匹配算法2(基于灰度的快速匹配算法)给予相应的解答。

问题:这边收集了很多张及其类似的照片(见picture文件夹中的k001.jpg---k010.jpg),还有一张小照片(见picture文件夹中的pipeitu.jpg),

计算器课程设计报告

课设报告 福建工程学院软件学院 题目:汇编计算器 班级: 1301 姓名 学号: 指导老师: 日期:

目录 1、设计目的 (3) 2、概要设计 (3) 2.1 系统总体分析 (3) 2.2 主模块框图及说明 (3) 3、详细设计 (4) 3.1 主模块及子模块概述 (4) 3.2各模块详运算 (4) 4、程序调试 (7) 4.1 运行界面分析 (7) 算法分析 (7) 4.2 调试过程与分析 (9) 5、心得体会 (11) 5.1 设计体会 (11) 5.2 系统改进 (11) 附录: (11)

1、设计目的 本课程设计是一次程序设计方法及技能的基本训练,通过实际程序的开发及调试,巩固课堂上学到的关于程序设计的基本知识和基本方法,进一步熟悉汇编语言的结构特点和使用,达到能独立阅读、设计编写和调试具有一定规模的汇编程序的水平。 2、概要设计 用8086汇编语言编写一个能实现四则混合运算、带括号功能的整数计算器程序。程序能实现键盘十进制运算表达式的输入和显示(例如输入:“1+2*(3-4)”),按“=”后输出十进制表示的运算结果。 2.1 系统总体分析 在8086的操作环境下,该计算器分成输入,数据存储,运算功能,输出几个大模块,实现了使用者使用该计算器时输入一个算式,能让系统进行计算。此计算器的实现功能是基本的数学的四则运算,结果范围在0~65535。 2.2 主模块框图及说明 此流程图简要的表现出了所要实现的功能以及一些功能的大概算法,同时也是我编写的一个总体的框架。 程序流程图说明:通过流程图,可以看出程序运行时,首先输出提示语气,当用户输入后,程序根据所输入内容进行判断,通过判断的结果来决定调用哪个功能模块,首要先要要判断的是否为0-9,“+”“-”“*”“/”这些字符,若不是就会报错,实则根据运算符号调用其功能模块完成运算。最后将运算的结果显示在主频幕上,返回主程序,使用户可以重新输入。

并行计算1

并行计算 实 验 报 告 学院名称计算机科学与技术学院专业计算机科学与技术 学生姓名 学号 年班级 2016年5 月20 日

一、实验内容 本次试验的主要内容为采用多线程的方法计算pi的值,熟悉linux下pthread 形式的多线程编程,对实验结果进行统计并分析以及加速比曲线分析,从而对并行计算有初步了解。 二、实验原理 本次实验利用中值积分定理计算pi的值 图1 中值定理计算pi 其中公式可以变换如下: 图2 积分计算pi公式的变形 当N足够大时,可以足够逼近pi,多线程的计算方法主要通过将for循环的计算过程分到几个线程中去,每次计算都要更新sum的值,为避免一个线程更新sum 值后,另一个线程仍读到旧的值,所以每个线程计算自己的部分,最后相加。三、程序流程图 程序主体部分流程图如下:

多线程执行函数流程图如下: 四、实验结果及分析

令线程数分别为1、2、5、10、20、30、40、50和100,并且对于每次实验重复十次求平均值。结果如下: 图5 时间随线程的变化 实验加速比曲线的计算公式类似于 结果如下: 图5 加速比曲线 实验结果与预期类似,当线程总数较少时,线程数的增多会对程序计算速度带来明显的提升,当线程总数增大到足够大时,由于物理节点的核心数是有限的,因此会给cpu带来较多的调度,线程的切换和最后结果的汇总带来的时间开销较大,所以线程数较大时,增加线程数不会带来明显的速度提升,甚至可能下降。 五、实验总结

本次试验的主要内容是多线程计算pi的实现,通过这次实验,我对并行计算有了进一步的理解。上学期的操作系统课程中,已经做过相似的题目,因此程序主体部分相似。不同的地方在于,首先本程序按照老师要求应在命令行提供参数,而非将数值写定在程序里,其次是程序不是在自己的电脑上运行,而是通过ssh和批处理脚本等登录到远程服务器提交任务执行。 在运行方面,因为对批处理任务不够熟悉,出现了提交任务无结果的情况,原因在于windows系统要采用换行的方式来表明结束。在实验过程中也遇到了其他问题,大多还是来自于经验的缺乏。 在分析实验结果方面,因为自己是第一次分析多线程程序的加速比,因此比较生疏,参考网上资料和ppt后分析得出结果。 从自己遇到的问题来看,自己对批处理的理解和认识还比较有限,经过本次实验,我对并行计算的理解有了进一步的提高,也意识到了自己存在的一些问题。 六、程序代码及部署 程序源代码见cpp文件 部署说明: 使用gcc编译即可,编译时加上-pthread参数,运行时任务提交到服务器上。 编译命令如下: gcc -pthread PI_3013216011.cpp -o pi pbs脚本(runPI.pbs)如下: #!/bin/bash #PBS -N pi #PBS -l nodes=1:ppn=8 #PBS -q AM016_queue #PBS -j oe cd $PBS_O_WORKDIR for ((i=1;i<=10;i++)) do ./pi num_threads N >> runPI.log

多核编程与并行计算实验报告 (1)

(此文档为word格式,下载后您可任意编辑修改!) 多核编程与并行计算实验报告 姓名: 日期:2014年 4月20日

实验一 // exa1.cpp : Defines the entry point for the console application. // #include"stdafx.h" #include #include #include #include using namespace std; void ThreadFunc1(PVOID param) { while(1) { Sleep(1000); cout<<"This is ThreadFunc1"<

实验二 // exa2.cpp : Defines the entry point for the console application. // #include"stdafx.h" #include #include using namespace std; DWORD WINAPI FunOne(LPVOID param){ while(true) { Sleep(1000); cout<<"hello! "; } return 0; } DWORD WINAPI FunTwo(LPVOID param){ while(true) { Sleep(1000); cout<<"world! "; } return 0; } int main(int argc, char* argv[]) { int input=0; HANDLE hand1=CreateThread (NULL, 0, FunOne, (void*)&input, CREATE_SUSPENDED,

Java带计算过程的计算器课程设计报告

保存计算过程的计算器 Java程序设计课程设计报告保存计算过程的计算器 目录 1 概述.............................................. 错误!未定义书签。 1.1 课程设计目的............................... 错误!未定义书签。 1.2 课程设计内容............................... 错误!未定义书签。 2 系统需求分析.......................................... 错误!未定义书签。 2.1 系统目标................................... 错误!未定义书签。 2.2 主体功能................................... 错误!未定义书签。 2.3 开发环境................................... 错误!未定义书签。 3 系统概要设计.......................................... 错误!未定义书签。 3.1 系统的功能模块划分......................... 错误!未定义书签。 3.2 系统流程图................................. 错误!未定义书签。4系统详细设计........................................... 错误!未定义书签。 5 测试.................................................. 错误!未定义书签。 5.1 测试方案................................... 错误!未定义书签。 5.2 测试结果................................... 错误!未定义书签。 6 小结.................................................. 错误!未定义书签。参考文献................................................ 错误!未定义书签。附录................................................ 错误!未定义书签。 附录1 源程序清单...................................... 错误!未定义书签。

实验2 大数据分析平台中HDFS的使用

1、HDFS 预备知识 2、HDFS 读写数据的过程 (一) 实验目的 1.理解HDFS 在Hadoop 体系结构中的角色; 2.理解HDFS 存在的原因; 3.理解HDFS 体系架构; 4.理解HDFS 读写数据过程; 5.熟练使用HDFS 常用的Shell 命令。 (三) 实验环境 1.在HDFS 中进行目录操作; 2.在HDFS 中进行文件操作; 3.从本机中上传文件到HDFS ; 4.从HDFS 下载文件到本机。 (四) 实验步骤 (二) 实验要求 1.大数据分析实验系统(FSDP ); 2.CentOS 6.7; 3. Hadoop 2.7.1。 分布式文件系统(Distributed File System )是指文件系统管理的物理存储资源不一定直接连接在本地节点,而是通过计算机网络与节点相连。 HDFS (Hadoop 分布式文件系统,Hadoop Distributed File System )是一种适合运行在通用硬件上的分布式文件系统,它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS 能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。 HDFS 为大数据分析平台的其他所有组件提供了最基本的存储功能。它具有高容错、高可靠、可扩展、高吞吐率等特征,为大数据存储和处理提供了强大的底层存储架构。 HDFS 采用主/从(master/slave )式体系结构,从最终用户的角度来看,它就像传统的文件系统,可通过目录路径对文件执行增删改查操作。由于其分布式存储的性质,HDFS 拥有一个NameNode 和一些DataNode ,NameNode 管理文件系统的元数据,DataNode 存储实际的数据。 1.HDFS 预备知识; 2.HDFS 读写数据的过程; 3.HDFS 的目录和文件操作。 HDFS 提供高吞吐量应用程序访问功能,适合带有大型数据集的场景,具体包括: ?数据密集型并行计算:数据量大,但是计算相对简单的并行处理,如大规模Web 信息搜索; ? 计算密集型并行计算:数据量相对不是很大,但是计算较为复杂的并行处理,如3D 建模与渲染、气象预报、科学计算等; ? 数据密集型与计算密集型混合的计算,如3D 电影渲染等。 HDFS 读数据的过程 HDFS 写数据的过程 普通文件系统主要用于随机读写以及与用户进行交互,而HDFS 则是为了满足批量数据处理的要求而设计的,因此为了提高数据吞吐率,HDFS 放松了一些POSIX 的要求,从而能够以流方式来访问文件系统数据。

课程设计报告

课程设计报告 题 目 基于数据挖掘的航电系统故障诊断 专业名称 电子信息工程 学生姓名 王腾飞 指导教师 陈 杰 完成时间 2014年3月18日

摘要 航电系统是飞机的重要组成部分,由于其综合应用了电子、机械、计算机及自动检测等许多学科的先进技术,结构层次很多,所以对其实施故障诊断具有涉及专业领域多、诊断难度大、要求时间短等特点。这对快速处理故障数据提出了很大的挑战。 从独立的联合式航电机箱的按键通电测试,到集中式飞机管理系统数据收集,飞机维修系统经过漫长的发展已演变成故障诊断工具。 现代飞机均采用了中央维修系统,用以收集所有子系统的故障报告、判断故障根源并推荐修理方法。飞机的故障信息和历史数据存放在数据库中。如果用传统的数据分析方法对这些海量的数据进行分析时会显得力不从心,不仅浪费时间而且对于隐含的知识难以有效的进行挖掘。数据挖掘技术十分符合现实的需要,它可以客观地挖掘出历史数据库中潜在的故障规则,这些规则能更好地指导故障的定位与检修,并对潜在的故障做出预测。随着数据的不断增长,如何能自动获取知识已经成为故障诊断技术发展的主要制约条件,而数据挖掘技术为解决这个“瓶颈”问题提供了一条有效的途径。 本文详细介绍了故障诊断技术与数据挖掘技术,并总结了航电系统的故障诊断的特点。拟采用聚类分析的技术对故障数据快速处理,实现对故障的快速定位。 关键词:故障诊断数据挖掘聚类分析航电系统

故障诊断技术 故障诊断技术简介 故障诊断就是指当设备系统不能完成正常的功能时,利用一定的方法找出使该功能丧失的原因及发生故障的部位,实现对故障发展趋势的预测的过程。故障诊断涉及到多方面的技术背景,主要以系统论、信息论、控制论、非线性科学等最新技术理论为基础,它是一门综合性的学科,具有重要的实用价值。 设备系统故障及故障诊断 随着现代化工业的发展,设备系统能够以最佳状态可靠地运行,对于保证产品质量、提高企业的产能、保障生命财产安全都具有极其重要的意义。设备系统的故障是指设备系统在规定时间内、规定条件下丧失规定功能的状况。故障诊断的作用则是发现并确定发生故障的部位及性质,找出故障的起因,预测故障的发展趋势并提出应对措施。故障诊断技术的使用范围不应只局限于设备系统使用和维修过程中,在设备系统的设计制造过程中也可以使用故障诊断技术,为以后的故障监测和设备系统维护创造条件。因此,故障诊断技术应该贯穿于设备系统的设计、制造、运行和维护的全过程当中。 机载设备的故障诊断流程框图:

单片机计算器的课程设计报告

目录 一、设计任务和性能指标 (1) 1.1设计任务 (2) 1.2性能指标 (2) 二、设计方案 (2) 3 3 4 5 5 6 6 7 7 20 20 20 20 21 参考文献 (21) 附录1、系统硬件电路图 (22) 附录2、硬件实物图 (23) 附录3、器件清单 (24)

一、设计任务和性能指标 1.1设计任务 自制一个单片机最小系统,包括复位电路,采用外部小键盘输入数据,能够实现加法、乘法及一个科学计算,计算结果显示在四位一体的数码管上。 要求用Protel 画出系统的电路原理图(要求以最少组件,实现系统设计所要 显 位 监测模块采用二极管和扬声器(实验室用二极管代替)组成电路。 键盘电路采用4*4矩阵键盘电路。 显示模块采用4枚共阳极数码管和74ls273锁存芯片构成等器件构成。 整个单片机的接口电路: P0用于显示输出; P1用于键扫描输入; P2用于数码管位选控制; P3用于键盘扩展(部分运算符输入);

三.系统硬件设计 3.1单片机最小系统 单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。 主控芯片选取STC89C52RC芯片,因其具有良好的性能及稳定性,价格便宜应用方便。 扩展键:“log”,“ln”,“x^2”“小数点”,“开方” 共计25个按键,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行和四列的8个公共端分别接P1.0~P1.7,这样扫描P1口就可以完成对矩阵键盘的扫描,通过对16个按键进行编码,从而得到键盘的口地址,对比P1口德扫描结果和各按键的地址,我们就可以得到是哪个键按下,从而完成键盘的功能。 以下为键盘接口电路的硬件电路图

并行计算第一次实验报告

并行计算上机实验报告题目:多线程计算Pi值 学生姓名 学院名称计算机学院 专业计算机科学与技术时间

一. 实验目的 1、掌握集群任务提交方式; 2、掌握多线程编程。 二.实验内容 1、通过下图中的近似公式,使用多线程编程实现pi的计算; 2、通过控制变量N的数值以及线程的数量,观察程序的执行效率。 三.实现方法 1. 下载配置SSH客户端 2. 用多线程编写pi代码 3. 通过文件传输界面,将文件上传到集群上 4.将命令行目录切换至data,对.c文件进行编译 5.编写PBS脚本,提交作业 6.实验代码如下: #include

#include #include #include #include #include static double PI=0; static int N=0; static int numOfThread=0; static int length=0; static int timeUsed=0; static int numOfThreadArray[]={1,2,4,6,8,10,12,14,16,20,24,30}; static int threadArraySize=12; static int nTime=4; static int repeatTime=30; static double totalTime=0; struct timeval tvpre, tvafter; pthread_mutex_t mut; clockid_t startTime,endTime;

科学计算器课程设计报告C课程设计修订稿

科学计算器课程设计报告C课程设计 集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]

计算机科学与技术学部 C++课程设计 题目科学计算器 学部计算机科学与技术 班级计科1103 指导教师李军 姓名刘明 学号 2012年6月27日

摘要 计算器的产生和发展是建立在电子计算机基础之上的。硬件方面,自1946年第一台电子计算机诞生以来,计算机技术的发展可谓日新月异,从庞大的只能在实验室里供研究使用的计算机到如今能适应不同环境满足不同需求的各种各样的计算机;运算速度从每秒几千次到每秒几百亿次;处理器从焊有上百万个电子管的大的惊人的电子板到只有指甲大小的集成电路;现在计算机在硬件方面的发展已达到了每三个月更新换代一次的惊人速度。软件方面,也已从机器语言、汇编语言、高级语言发展到现如今的第四代语言——非结构化、面向对象、可视化的语言。 在这个计算器里面,我们实现了简单的四则运算以及更高功能的科学计算,它的外观简洁美观,使人们能快捷简单的操作。能准确的得到计算结果,大大减少了数字计算所需要的时间,为人们的生活带来便利。此系统在Windows 7环境下,使用VC++ 进行编写。 简单计算器包括双目运算和单目运算功能,双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,对数,开方,阶乘,倒数,进制转换等运算。可对其输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连续运算。并且包含清除,退格功能等。我们所做的计算器其功能较Windows 7下的计算器还是很不够多,没有其菜单的实现功能项,没有其小巧的标准计算器。 关键词:计算器;运算;VC++等

java课程设计报告_简单图形界面计算器的设计

Java 课程设计 简单图形界面计算器的设计 课程名称 Java程序设计 选题名称简单图形界面计算器的设计 专业 班级 姓名 学号 指导教师 简单图形界面计算器的设计

一、设计任务与目标 本次java程序设计我的设计任务是设计一个图形界面(GUI)的计算器应用程序并且能够完成简单的算术运算。本次任务的基本要求是这个计算器应用程序可以完成十进制的加、减、乘、除、求倒、取余、开方运算,且有小数点、正负号、退格和清零功能。而我要在此基础上添加一项千位符分隔符的功能,即以三位为一级,在输入的一串数字中每三位加入一个逗号,这项功能国际通用,并已经成为惯例,会计记账都用这种方法便于账目核算与管理。 GUI计算器设计的具体目标: 1.完成十进制的加、减、乘、除、求倒、取余和开方运算; 2.有小数点和正负号加入运算; 3.有退格、复位和清零的功能; 4.有千位符分隔符的功能,即在输入的一串数字中每三位加入一个逗号。 二、方案设计与论证 1.设计目标的总体分析 (1)设计目标的需求分析:计算器是现在一个普遍应用的工具,能够解决许多人工所无法计算的数据,节省大量宝贵的时间。 (2)设计目标的功能分析:实现计算器系统的功能,主要有两个功能模块:输入和输出。 (3)设计原则:基于计算器系统要具有适用性广、操作简便等特点,本系统预计要达到以下几个目标:①满足以上的基本功能要求;②能够在常见的计算机及其操作系统上运行。 2.设计的基本思路 利用GUI的界面设计,将整个大设计分为三块,分别是数据的输入,运算符

功能符的控制和数据的输入输出显示。利用Swing控件,数据的输入由0~9这10个按钮来表示,用“+”、“-”、“*”、“/”、“1/x”、“%”、“sqrt”这7个按钮来表示加、减、乘、除、求倒、取余、开方运算,用“.”和“±”这2个按钮来表示小数点和正负号,用“Back”、“CE”和“C”这3个按钮来表示退格、复位和清零的功能,数据的输入输出显示由文本字段来表示。将计算器的总体界面设计好后,再将代码分别写入不同的按钮的源程序中。 我要完成的一项改进,即添加一个拥有千位符分隔符功能的按钮,按下这个按钮能够在输入的一串数字中每三位加入一个逗号并且显示出来。我要在之前的界面设计的基础上多添加一个按钮“$”来表示千位符分隔符,并且将功能代码写入这个按钮的源程序中。 三、程序流程图,程序清单与调用关系 1. 程序流程图:

并行计算课程设计报告

并行计算与多核多线程技术 课程报告 专业 班级 学号 姓名 成绩___________________ 年月日

课程报告要求 手写内容:设计目的、意义,设计分析,方案分析,功能模块实现,最终结果分析,设计体会等。 允许打印内容:设计原理图等图形、图片,电路图,源程序。硬件类的设计,要有最终设计的照片图;软件类设计,要有各个功能模块实现的界面图、输入输出界面图等。 评价 理论基础 实践效果(正确度/加速比) 难度 工作量 独立性

目录 1. 设计目的、意义(功能描述) (1) 2. 方案分析(解决方案) (1) 3. 设计分析 (1) 3.1 串行算法设计 (1) 3.2 并行算法设计 (1) 3.3 理论加速比分析 (2) 4. 功能模块实现与最终结果分析 (2) 4.1 基于OpenMP的并行算法实现 (2) 4.1.1 主要功能模块与实现方法 (2) 4.1.2 实验加速比分析 (3) 4.2 基于MPI的并行算法实现 (3) 4.2.1 主要功能模块与实现方法 (3) 4.2.2 实验加速比分析 (4) 4.3 基于Java的并行算法实现 (4) 4.3.1 主要功能模块与实现方法 (4) 4.3.2 实验加速比分析 (5) 4.4 基于Windows API的并行算法实现 (5) 4.4.1 主要功能模块与实现方法 (5) 4.4.2 实验加速比分析 (6) 4.5 基于.net的并行算法实现 (6) 4.5.1 主要功能模块与实现方法 (6) 4.5.2 实验加速比分析 (6) 4.6并行计算技术在实际系统中的应用 (6) 4.6.1 主要功能模块与实现方法 (6) 4.6.2 实验加速比分析 (7) 5. 设计体会 (7) 6. 附录 (9) 6.1 基于OpenMP的并行程序设计 (9) 6.1.1 代码及注释 (9) 6.1.2 执行结果截图 (11) 6.1.3 遇到的问题及解决方案 (12) 6.2 基于MPI的并行程序设计 (12)

计算器课程设计报告

高级语言程序(JAVA)课程设计报告 系部名称:商学系专业班级:营销*** 学生姓名:墨璇 墨兰学号: ********** ********** 指导教师:王芬教师职称:讲师 2014年06月26日

目录 一、课程设计目的及意义 .................................... 错误!未定义书签。 二、课程设计任务 .......................................... 错误!未定义书签。 2.1程序设计要求....................................... 错误!未定义书签。 三、课程设计时间 .......................................... 错误!未定义书签。 四、课程设计地点 .......................................... 错误!未定义书签。 五、课程设计内容 .......................................... 错误!未定义书签。 5.1开发工具与平台..................................... 错误!未定义书签。 (1).开发工具 ...................................... 错误!未定义书签。 (2).开发平台 ...................................... 错误!未定义书签。 5.2设计思路........................................... 错误!未定义书签。 5.3 程序测试 .......................................... 错误!未定义书签。 5.4实验总结........................................... 错误!未定义书签。 六、课程设计感想 .......................................... 错误!未定义书签。 七、附录(程序代码) ...................................... 错误!未定义书签。

计算器设计的java课程设计报告

】 · ( 华东交通大学课程设计 课 程: Java 程序设计 题 目: 计算器设计 年 级: 2010级 专 业: 信息一班 * 学 号: 姓 名: 组 员: 指导教师: 课程设计题目:计算器设计

课程设计(论文)任务书 基础学院信息与计算科学专业2010—1 班 一、课程设计(论文)题目计算器的设计 二、课程设计(论文)工作自2013 年 6 月23日起至2013 年6月27日止。 三、课程设计(论文) 地点: 计算机中心 · 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)使学生掌握系统各功能模块的基本工作原理; (2)掌握Java的基本编程原理和基本的编程方法; (3)使学生学会系统调试; (4)培养学生分析、解决问题的能力; (5)提高学生的软件文档写作能力和团队合作精神。 2.课程设计的任务及要求 ' 1)基本要求: (1)分析系统各功能模块的工作原理; (2)提出系统的设计方案; (3)对所进行编程、调试、修改。 2)创新要求: 在基本要求达到后,可进行创新设计,如:用虚函数,文件流,重载流插入运算符等。3)课程设计论文编写要求 (1)要按照书稿的规格打印誊写设计论文; > (2)论文包括目录、摘要、正文、总结等; (3)毕业论文装订按学校的统一要求完成。 4)答辩与评分标准: (1)达到课程设计的目的与要求,程序的可读性较好,并调试正确,60分; (2)能正确回答老师所提问题,可增加10分; (3)课程设计报告书写规范整齐,可增加10分; (4)心得体会认真总结,可增加10分; (5)程序有创新性,可增加10分; [ 成绩评定实行优秀、良好、中等、及格和不及格五个等级。不及格者需重做。 5)参考文献:

并行与串行数据结构与算法课程设计报告

课程实验报告课程名称:并行与串行数据结构与算法 专业班级:ACM1301 学号:U201315057 姓名:李海锋 指导教师:陆枫 报告日期:2015.9.23 计算机科学与技术学院

目录 1、课程设计概述 (2) 1.1 课设目的 (2) 1.2 课设要求 (2) 1.3 实验环境 (3) 2、系统总体设计 (4) 2.1 系统主模块结构体 (4) 2.2 找附近的最近的三个某地 (5) 2.3 找两点之间最短路径 (6) 2.4 数据录入模块 (7) 3、数据结构和算法详细设计 (7) 3.1 地图的存储 (7) 3.1.1 地图背景图片的存储 (7) 3.1.2 地图点 (7) 3.2 找附近的最近的特定地点(findNearby) (8) 3.3 找最短路径 (8) 4、程序实现简要说明 (9) 4.1开发环境 (9) 4.2 支持包 (9) 4.3 函数原型 (10) MainActivity.java:实现了地图主要功能 (10) Setting.java:地图数据的录入 (12) 4.4 函数功能调用关系 (14) MainActivity.java:地图主要功能程序 (15) Setting.java:数据录入程序 (15) 5、程序测试及结果分析 (16) 5.1 功能测试 (16)

5.2 测试结果分析 (22) 6、复杂度分析 (22) 6.1 输入地点名查找,鼠标点击显示 (22) 6.2 找两点之间的最短路径(dijkstra) (22) 6.3 找附近最近的三个某地 (22) 7、软件的用户使用说明 (23) 8、特色与不足 (23) 8.1 特色 (23) 8.2 不足 (23) 九、主要参考文献 (24)

计算机技术综合课程设计报告

计算机技术综合课程设计 设计题目锅炉液位控制系统学生姓名史婷艳 专业班级自动化1302班学号20134460203 指导老师洪镇南 2017年1 月3日

目录 前言 (2) 1 锅炉汽包水位控制对象与控制指标 (4) 1.1锅炉汽包水位的特征 (4) 1.2汽包水位动态特性 (4) 1.2.1汽包水位在给水流量W作用下的动态特性 (4) 1.2.2汽包水位在蒸汽流量D扰动下的动态特性 (5) 1.2.3燃料量B扰动下汽包水位的动态特性 (6) 2. 汽包水位控制方案 (7) 2.1单冲量控制方式 (7) 2.2 双冲量控制方式 (8) 2.3 三冲量控制方式 (9) 3. 三冲量串级PID控制 (11) 3.1 串级PID控制 (11) 3.2 智能整定PID控制 (12) 4 汽包水位模糊控制器设计及仿真 (12) 4.1 输入输出变量 (12) 4.2 隶属度函数 (15) 4.3基于MATLAB/Simulink 环境建立的系统仿真分析 (16) 4.3.1 基于MATLAB/Simulink 的系统模型 (16)

4.3.2 仿真结果分析 (18) 总结与体会 (18) 参考文献 (20) 前言 锅炉是典型的复杂热工系统,目前,中国各种类型的锅炉有几十万台,由于设备分散、管理不善或技术原因,使大多数锅炉难以处于良好工况,增加了锅炉的燃料消耗,降低了效率。同时,锅炉工作过程中各项指标的调节难以建立数学模型,具有非线性、不稳定性、时滞等特点,所以如何改善对锅炉的控制,保证其正常工作,提高效率一直是人们关注的焦点。而汽包液位是锅炉安全、稳定运行的重要指标,保证液位在给定范围内,对于高蒸汽品质、减少设备损耗和运行损耗、确保整个网络安全运行具有要意义。 现代锅炉的特点之一就是蒸发量显著提高,汽包容积相对变小,水位变化速度很快,稍不注意就容易造成汽包满水或者烧成干锅,这都对汽包液位控制系统提出了更高的要求。汽包液位过高,会影响汽包内汽液分离效果,使汽包出口的饱和蒸汽带水增多,蒸汽带水会使汽轮机产生水冲击,引起轴封破损、叶片断裂等事故。同时会使饱和蒸汽中含盐量增高,降低过热蒸汽品质,增加在过热器管壁和汽轮机叶片上的结垢。水位过低,则可能破坏自然循环锅炉汽水循环系统中某些薄弱环节,以致局部水冷管壁被烧坏,严重时会造成爆炸事故。 目前,对汽包液位位控制大多采用常规PID控制方式,从控制方式来看,它们要么系统结构简单成本低,不能有效的控制锅炉汽包“虚假水位”现象,要么能够在一定程度上控制“虚假现象”,系统却过于复杂,成本投入过大。常用的蒸汽锅炉液位调节系统有三种基本结构:单冲量调节系统结构、双冲量调节系统结构、串级三冲量调节系统结

电力系统综合课程设计

电力系统分析 综合课程设计报告 电力系统的潮流计算和故障分析 学院:电子信息与电气工程学院 专业班级: 学生姓名: 学生学号: 指导教师: 2014年 10月 29 日

目录 一、设计目的 (1) 二、设计要求和设计指标 (1) 2.1设计要求 (1) 2.2设计指标 (2) 2.2.1网络参数及运行参数计算 (2) 2.2.2各元件参数归算后的标么值: (2) 2.2.3 运算参数的计算结果: (2) 三、设计内容 (2) 3.1电力系统潮流计算和故障分析的原理 (2) 3.1.1电力系统潮流计算的原理 (2) 3.1.2 电力系统故障分析的原理 (3) 3.2潮流计算与分析 (4) 3.2.1潮流计算 (4) 3.2.2计算结果分析 (8) 3.2.3暂态稳定定性分析 (8) 3.2.4暂态稳定定量分析 (11) 3.3运行结果与分析 (16) 3.3.1构建系统仿真模型 (16) 3.3.2设置各模块参数 (17) 3.3.3仿真结果与分析 (21) 四、本设计改进建议 (22) 五、心得总结 (22) 六、主要参考文献 (23)

一、设计目的 学会使用电力系统分析软件。通过电力系统分析软件对电力系统的运行进行实例分析,加深和巩固课堂教学内容。 根据所给的电力系统,绘制短路电流计算程序,通过计算机进行调试,最后成一个切实可行的电力系统计算应用程序,通过自己设计电力系统计算程序不仅可以加深学生对短路计算的理解,还可以锻炼学生的计算机实际应用能力。 熟悉电力系统分析综合这门课程,复习电力系统潮流计算和故障分析的方法。了解Simulink 在进行潮流、故障分析时电力系统各元件所用的不同的数学模型并在进行不同的计算时加以正确选用。学会用Simulink ,通过图形编辑建模,并对特定网络进行计算分析。 二、设计要求和设计指标 2.1设计要求 系统的暂态稳定性是系统受到大干扰后如短路等,系统能否恢复到同步运行状态。图1为一单机无穷大系统,分析在f 点发生短路故障,通过线路两侧开关同时断开切除线路后,分析系统的暂态稳定性。若切除及时,则发电机的功角保持稳定,转速也将趋于稳定。若故障切除晚,则转速曲线发散。 图1 单机无穷大系统 发电机的参数: SGN=352.5MWA,PGN=300MW,UGN=10.5Kv,1=d x ,25.0'=d x ,252.0''=x x ,6.0=q x , 18.0=l x ,01.1'=d T ,053.0"=d T ,1.0"0=q T ,Rs=0.0028,H(s)=4s;TJN=8s,负序电抗:2.02=x 。 变压器T-1的参数:STN1=360MVA,UST1%=14%,KT1=10.5/242; 变压器T-2的参数:STN2=360MVA,UST2%=14%,KT2=220/121;

java课程设计报告计算器

java课程设计报告 计算器 1 2020年4月19日

目录 一、课程设计目的 (5) 二、课程设计任务.................................................................................................... .. (2) 2.1、设计任务 (5) 2.2、课程设计要求: (6) 2.3、需求分析 (6) 三、开发工具与平台.................................................................................................... (3) 3.1、开发工具 (7) 3.2、开发平台 (7) 2 2020年4月19日

四、设计思路.................................................................................................... . (4) 4.1、界面设计.................................................................................................... . (4) 4.2.1、逻辑设计 (8) 4.2.2、程序流程图.................................................................................................... . (5) 4.2.3、主要代码展示及说明 (5) 4.3、程序测试 (18) 五、实验小结 (20) 3 2020年4月19日

多核编程与并行计算实验报告 (1)

多核编程与并行计算实验报告 姓名: 日期:2014年 4月20日 实验一 // exa1.cpp : Defines the entry point for the console application.

// #include"stdafx.h" #include #include #include #include using namespace std; void ThreadFunc1(PVOID param) { while(1) { Sleep(1000); cout<<"This is ThreadFunc1"<

实验二 // exa2.cpp : Defines the entry point for the console application. // #include"stdafx.h" #include #include using namespace std; DWORD WINAPI FunOne(LPVOID param){ while(true) { Sleep(1000); cout<<"hello! "; } return 0; } DWORD WINAPI FunTwo(LPVOID param){ while(true) { Sleep(1000); cout<<"world! ";

编写一个计算器程序课程设计报告-范例

《金融IT入门-程序设计》 课程设计报告 中国地质大学长城学院XX系2017年月 3 日目录 一.总体概述:二.设计目标:三.程序流程图:四.程序代码:五.* 六.设计体会: 题目:用Python编写简易计算器程序学号:$ 专业: 班级: 姓名: 指导教师:、

一、设计内容--------------------------------------------- - 2 - 1. 课程设计目的:------------------------------------- - 2 - 2.课程设计任务:-------------------------------------- - 2 - 3.创新要求:------------------------------------------ - 2 - 4.设计要求: ------------------------------------------- - 2 - 二、原理与分析------------------------------------------- - 2 - 1.开发的技术及功能------------------------------------ - 3 - 2.设计思路-------------------------------------------- - 3 - 3.设计效果图------------------------------------------ - 3 - 三、设计过程--------------------------------------------- - 3 - 1. 程序思路:----------------------------------------- - 3 - 2.功能实现:------------------------------------------ - 4 - 1)加减乘除求余以及指数运算------------------------ - 4 - 2)其他运算---------------------------------------- - 4 - 3)主要方法说明------------------------------------ - 6 - 4)程序流程图-------------------------------------- - 6 - 3.算法思路:------------------------------------------ - 7 - 4.数据分析:------------------------------------------ - 8 - 四、设计结果与分析---------------------------------------- - 8 - ⒈运行调试-------------------------------------------- - 8 - 1)进行加减乘除求余以及指数运算-------------------- - 8 - 2)求倒-------------------------------------------- - 9 -

相关文档
最新文档