图的基本操作实验报告

2024-04-10

图的基本操作实验报告(精选6篇)

篇1:图的基本操作实验报告

“数据结构和算法II”课程实验报告

实验名称:图及其应用

班级 姓名 学号 实验日期: 实验机时:2 学时 实验成绩:

-----------------一.实验目的:

1.熟练掌握图的两种存储结构(邻接矩阵和邻接表)的表示方法 2.掌握图的基本运算及应用

3.加深对图的理解,逐步培养解决实际问题的编程能力 二.实验内容:(1)基本实验内容:

采用邻接表或邻接矩阵方式存储图,实现图的深度遍历和广度遍历; 用广度优先搜索方法找出从一顶点到另一顶点边数最少的路径。三.程序及注释:

#include “stdio.h” #include “limits.h” //INT_MAX头文件 #include “windows.h” //boolean头文件 #define INFINITY INT_MAX #define MAX_VERTEX_NUM 20 #define OVERFLOW-1 #define OK 1 #define ERROR 0 typedef int Status;typedef enum {DG,DN,UDG,UDN} GraphKind;typedef int VRType;typedef char VertexType;typedef char* InfoType;typedef int QElemType;//边信息

typedef struct ArcCell{ VRType adj;//1或0表示是否邻接,对带权图,则为权值类型 InfoType *info;}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//图结构 typedef struct {

VertexType vexs[MAX_VERTEX_NUM];//定点向量 AdjMatrix arcs;

//邻接矩阵,为一二维数组 //图的当前顶点数和弧数 int vexnum,arcnum;GraphKind kind;

//图的种类标志

}MGraph;//辅助队列

typedef struct QNode{ QElemType data;//数值域 struct QNode *next;//指针域

}QNode, *QueuePtr;typedef struct{ QueuePtr front;//队头 QueuePtr rear;//队尾

}LinkQueue;//初始化队列

Status InitQueue(LinkQueue &Q){

Q.front = Q.rear =(QueuePtr)malloc(sizeof(QNode));if(!Q.front){ printf(“内存分配失败!”);exit(OVERFLOW);} Q.front->next = NULL;return OK;} //插入元素到队尾

Status EnQueue(LinkQueue &Q,QElemType e){

QueuePtr p =(QueuePtr)malloc(sizeof(QNode));if(!p){printf(“n内存分配失败!”);exit(OVERFLOW);} p->data = e;p->next = NULL;Q.rear->next = p;Q.rear = p;return OK;} //队列判空

Status QueueEmpty(LinkQueue Q){ return Q.front == Q.rear;} //销毁队列

Status DestroyQueue(LinkQueue &Q){

while(Q.front){Q.rear = Q.front->next;free(Q.front);Q.front = Q.rear;} return OK;} //删除队头元素

Status DeQueue(LinkQueue &Q,QElemType &e){

if(QueueEmpty(Q)){printf(“n队列为空!”);return ERROR;} QueuePtr p = Q.front->next;e = p->data;Q.front->next = p->next;if(Q.rear==p)Q.rear = Q.front;free(p);return OK;} //对顶点v定位,返回该顶点在数组的下标索引,若找不到则返回-1 int LocateVex(MGraph G,char v){

for(int i=0;i

G.kind = UDN;printf(“输入顶点个数和边数(如:4,3):”);int vexnum,arcnum;scanf(“%d,%d”,&vexnum,&arcnum);G.vexnum=vexnum;G.arcnum=arcnum;//判断是否超过顶点最大个数 while(G.vexnum>MAX_VERTEX_NUM){printf(“最大顶点为20,重新输入(如:4,3):”);scanf(“%d,%d”,&G.vexnum,&G.arcnum);} printf(“n依次输入顶点向量值n”);int i;for(i=0;i

//清空缓冲区 fflush(stdin);printf(“第%d个:”,i+1);scanf(“%c”,&G.vexs[i]);} //初始化邻接矩阵 for(i=0;i

int values;printf(“n输入依附两个顶点的边及其权值<如,a,b,1>n”);for(i=0;i

printf(“第%d条:”,i+1);//清空缓冲区 fflush(stdin);scanf(“%c,%c,%d”,&rear,&front,&values);int m,n;//定位两顶点在vexs数组中的索引 m = LocateVex(G,rear);n = LocateVex(G,front);if(m==-1||n==-1){

printf(“输入顶点或不在此图中,请重新输入!n”);i--;continue;} //赋予对应矩阵位置的权值,以及对称弧的权值 G.arcs[m][n].adj = values;G.arcs[n][m].adj = values;} return OK;} //CreateUDG //矩阵输出

void printArcs(MGraph G){

int i;printf(“ ”);//输出第一行的顶点向量 for(i=0;i

for(int j=0;j

else printf(“ %d”,G.arcs[i][j].adj);}} printf(“ ∞”);

printf(“n”);} //访问顶点v输出

Status printAdjVex(MGraph G,int v){ printf(“%c ”,G.vexs[v]);return OK;} //查找v顶点的第一个邻接点

Status FirstAdjVex(MGraph G,int v){ //查找与顶点v的第一个邻接点,找到后立即返回其索引,若找不到,则返回-1 for(int i=1;i

return i;} return-1;} //查找基于v顶点的w邻接点的下一个邻接点 Status NextAdjVex(MGraph G,int v,int w){

//查找基于顶点v的w邻接点的下一个邻接点,找到之后立即返回其索引,若找不到,则返回-1 for(int i=w+1;i

boolean visited[MAX_VERTEX_NUM];//函数指针变量

Status(* VisitFunc)(MGraph G,int v);//DFS,从第v个顶点出发递归深度优先遍历图G void DFS(MGraph G,int v){

visited[v] = TRUE;//访问第v个顶点 VisitFunc(G,v);for(int w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,v,w)){if(!visited[w])

DFS(G,w);}} //深度优先遍历

void DFSTraverse(MGraph G,Status(*Visit)(MGraph G,int v)){ //将函数复制给全局的函数指针变量,待调用DFS时使用

VisitFunc = Visit;int v;//将访问标记初始化为false for(v=0;v

void BFSTraverse(MGraph G,Status(*Visit)(MGraph G,int v)){

//按广度优先非递归遍历图G,使用辅助队列Q和访问标志数组Visited int v;int u;//将访问标记数组初始化为false for(v = 0;v

//判断顶点V是否被访问 if(!visited[v]){//将第一次访问的顶点对应的访问标记数组位置赋值为TRUE

visited[v] = TRUE;//输出顶点v Visit(G,v);EnQueue(Q,v);while(!QueueEmpty(Q)){//按入队序列取出顶点,便于查找此顶点的邻接点

DeQueue(Q,u);//查找当前顶点邻接点

for(int w=FirstAdjVex(G,u);w>=0;w = NextAdjVex(G,u,w))

if(!visited[w]){visited[w] =TRUE;Visit(G,w);EnQueue(Q,w);}}} //销毁队列 DestroyQueue(Q);} int main(){

printf(“====图的创建及其应用====n”);//创建一个图 MGraph G;CreateUDN(G);//用邻接矩阵输出图

printf(“n图的邻接矩阵输出如下:n”);printArcs(G);//深度优先遍历

printf(“n深度优先遍历序列:n”);DFSTraverse(G,printAdjVex);printf(“n”);//广度优先遍历

} printf(“n广度优先遍历序列:n”);BFSTraverse(G,printAdjVex);printf(“n”);四.运行结果:

五.实验心得:

通过本次课程设计,对图的概念有了一个新的认识,在学习离散数学的时候,总觉得图是很抽象的东西,但是在学习了《数据结构与算法》这门课程之后,我慢慢地体会到了其中的奥妙,图能够在计算机中存在,首先要捕捉他有哪些具体化、数字化的信息,比如说权值、顶点个数等,这也就说明了想要把生活中的信息转化到计算机中必须用数字来完整的构成一个信息库,而图的存在,又涉及到了顶点之间的联系。图分为有向图和无向图,而无向图又是有向图在权值双向相等下的一种特例,如何能在计算机中表示一个双向权值不同的图,这就是一件很巧妙的事情。有了这次课程设计的经验和教训,我能够很清楚的对自己定一个合适的水平。

篇2:图的基本操作实验报告

总线基本实验报告

组员:

组号:21组 时间:周二5、6节 【实验目的】

理解总线的概念及其特性.掌握总线传输和控制特性

【实验设备】

– TDN-CM+或TDN-CM++数学实验系统一台.–

【实验原理】

总线传输实验框图所示,它将几种不同的设备挂至总线上,有存储器、输入设备、输出设备、寄存器。这些设备都需要有三态输出控制,按照传输要求恰当有序地控制它们,就可实现总线信息传输。

总线基本实验要求如下:

根据挂在总线上的几个基本部件,设计一个简单的流程:

 寄存器、存储器和I/O部件挂接到总线  各部件由三态门信号控制

 数据主要流程:输入寄存器存储器输出LED指示

【实验步骤】

(一)完成书上要求的操作:将一个数存储到R0寄存器中,然后LED显示(1)连接实验线路(下页图1)

(2)关闭所有三态门(SW-B=1,CS=1,R0-B=1,LED-B=1),关联的信号置为LDAR=0,LDR0=0,W/R=1。

(3)SW-B=0,INPUT置数,拨动LDR0控制信号做0  1 0动作,产生一个上升沿将数据打入到R0中;

SW-B=0,INPUT置数,拨动LDAR控制信号做0  1 0动作,产生一个上升沿将数据打入到AR中; SW-B=1,R0-B=0,W/R(RAM)=0,CS=0,将R0中的数写入到存储器中; 关闭R0寄存器输出,使存储器处于读状态CS=1,R0-B=1;W/R(RAM)=1,CS=0,LED-B=0,拨动LED的W/R控制信号做1→0→1动作产生一个上升沿将数据打入到LED中。

附:实验电路路线连接图1

(二)存放三个数46、63、69到R0,R1,R2,分别存放在#11,#12,#13中在LED显示,另外由于需要借线,连线R1-B---S2,R2-B---S1,LDR1---M,LDR2---Cn,连接线路如下图三所示。(1)关闭所有三态门(SW-B=1,CS=1,R0-B=1,R1-B=1,R2-B=1,LED-B=1),关联的信号置为LDAR=0,LDR0=0,LDR1=0,LDR2=0,W/R=1。

1将数据46放R0,再将R0的数写入到#11中,然后 LED显示#11中数。○SW-B=0,INPUT置数01000110,拨动LDR0控制信号做010动作,产生一个上升沿将数据打入到R0中;

SW-B=0,INPUT置数00010001,拨动LDAR 做0 10动作,产生一个上升沿将数据打入到AR中;

SW-B=1,R0-B=0,W/R(RAM)=0,CS=0,将R0中的数写到存储器中; CS=1,R0-B=1,W/R(RAM)=1,CS=0,LED-B=0,拨动LED的W/R控制信号做1→0→1动作,产生一个上升沿将数据打入到LED中。

2将数据63放入R1,再将R1的数写入到#12中,然后LED显示#12中数。○SW-B=0,INPUT置数01010011,拨动LDR1控制信号做010动作,产生一个上升沿将数据打入到R1中;

SW-B=0,INPUT置数00010010,拨动LDAR做010动作,产生一个上升沿将数据打入到AR中;

SW-B=1,R1-B=0,W/R(RAM)=0,CS=0,将R1中的数写到存储器中; CS=1,R1-B=1,W/R(RAM)=1,CS=0,LED-B=0,拨动LED的W/R控制信号做1→0→1动作,产生一个上升沿将数据打入到LED中。

3将数据69放入R2,再将R2的数写入到#13中,然后LED显示#13中数。○SW-B=0,INPUT置数01101001,拨动LDR2控制信号做010动作,产生一个上升沿将数据打入到R2中;

SW-B=0,INPUT置数00010011,拨动LDAR 010动作,产生一个上升沿将数据打入到AR中; SW-B=1,R2-B=0,W/R(RAM)=0,CS=0,将R2中的数写到存储器中; CS=1,R2-B=1,W/R(RAM)=1,CS=0,LED-B=0,拨动LED的W/R控制信号做1→0→1动作,产生一个上升沿将数据打入到LED中。

【结果分析】

试验中LED显示管所显示的数与放在各个地址中的数符合,证明连线、操作无误。

【问题分析】

篇3:图的基本操作实验报告

《中国城市地图集》中城市基本包括有题头标志性的鸟瞰图、城市市域图、城市市区图、城区图、 (只有直辖市编此种图) 、城市建设用地扩展图、都邑变迁图 (城址变迁图) 、城市总体规划图、各城市文字简介, 作为图种内容的补充。《图集》开本为24.5厘米×34.5厘米, 各市版面数不等, 直辖市、特大城市、大城市、中等城市、小城市版面分配分别为六、四、三、二、一。而各城市图种最少四种以上, 每一图种幅面小, 比例尺小, 力求小图精作, 信息量丰富, 要突出主题, 要有鲜明的图种特征。增强表达力, 才能有较高的使用价值。

2 形式

一本大地图集, 除了政治思想明确。地图内容精确可靠外, 还必须具备优美的艺术形式, 先进的印刷水平, 现只谈谈基本图编绘形式上的改造和创新。

2.1《中国城市地图集》首页编排为了图集增辉的鸟瞰图

城市鸟瞰图是地图制图学、建筑学和美学的绘画艺术相结合的产物, 它具有独特的优越性, 既保持了一定的数学精度, 又具备较好的透视效果。城市鸟瞰图上建筑物符号属于第一平面内容、符号的形状及色彩真实直观, 形象醒目, 且符号的视线方向与底图一致, 相关位置准确, 图上与实地相符, 产生了一目了然的读图效果。《图集》中四百余座城市, 每市首页都安排了一副优美的鸟瞰图, 它能较完善地反映城市建筑特色同时能巧妙地显示城市建设的发展过程及方向而且具有更强的艺术感染力, 无疑为图集增辉。

2.2 打破框框、去掉图边改变了传统习惯形式

打破框框、去掉图边扩大了地图用纸的有效面积, 在规定的版面24.5厘米×34.5厘米内诸图种适当放大了比例尺, 增加了地图内容。

诸图种明确, 主题突出, 充分利用图幅幅面, 打破了传统的每页面打内外图廓的习惯形式。

2.3 图面配置生动活泼不拘一格

图面配置是复杂而重要工作, 配置恰当能丰富地图内容, 突出主题;反之会分散读图的注意力, 降低地图的清晰易读性。全国各市根据分配的页面来安排图种, 不做统一规定, 各图幅的配置灵活多样, 不拘一格。

2.4 地貌采取晕渲法加强地貌的立体感

全国地貌采用晕渲法, 生动地表达制图区域所有地貌的立体形态和区域特征, 明显地区分不同的地貌类型同时加强了地貌的立体感和艺术表达能力。

2.5 采用象形符号及透视图形显示制图内容提高了基本图的使用价值

《中国城市地图集》中邮局、医院、宾馆、饭店、售票处、古迹点、风景名胜、突出建筑物等制图内容采用象形符号及透视图形, 使制图内容明确、富有表达能力, 使读者感到直观特别是各市将有重大纪念意义和显示城市最新建设成就的突出建筑物用透视图形表示比象形符号更为细致, 它是以艺术手法, 用透视原理把所要表示地物的外形特征形象的表示出来并加注记, 这样形象生动, 通俗易懂, 引人注目。进一步提高了《图集》中基本图的使用价值。

3 方法

3.1 搜集和正确选择材料

搜集和分析正确选择资料不仅是设计工作的物资基础也是编好图的中心环节和可靠保障。

为了编好沈阳市的基本图诸图种, 搜集了历年代的沈阳市街图、沈阳市街巷详图、沈阳交通图、沈阳市行政去划分图、沈阳市旅游图、沈阳地势图、沈阳市总体规划图集、辽宁省地图册、工业名城沈阳、新兴的沈阳、伴您游的沈阳、沈阳市国土资源图集等图和文字资料几十种, 去粗取精, 去伪存真, 正确选择精度高、现势性强、有实用价值的资料做为基本资料、补充资料、参考资料, 以最大限度地利用资料内容, 确保编图质量。

3.2 先编绘基本图种中的主图《市区图》以便一图多用, 加快成图速度

3.3 在薄膜上连编带绘专题图提高了成图质量将薄膜直接在地理底图上, 按相应位置连

编带绘专题图界限, 贴专题图诸符号, 制成了专题要素版, 简化了工序, 提高了成图质量。

4 谈几点体会

(1) 城市基本图版面设计要科学合理, 就得符合选题规定和页面配置原则。图面要均匀, 协调, 主题突出, 才能把读者的注意力吸引到地图的主要内容和特点上来。

(2) 《市域图》、《市区图》、《城郊图》、《城市建设用地扩展图》中在同一个市都含有相同的制图区, 尽管它们所在的图种不同、比例尺不同, 但相同的制图区内容应保持相似性。

例如:《沈阳市域图》含市内五区、市郊四区, 辽中和新民二县。《沈阳市区图》含市内五区, 部分近郊区。《沈阳城郊图》含市内五区, 市郊四区, 部分郊县。《沈阳城市建设用地扩展图》含市内五区, 部分近郊区。在这些图种中都有相同的制图区内容保持相似性。

(3) 通过基本图中《市域图》、《市区图》、《城郊图》的编绘, 使读者看到全国各市的市区、市郊、市县进而对各市的总貌有了明显地了解, 使读者感到有很强的逻辑性。又通过《城址变迁图》、《建设用地扩展图》、《总体规划图》的编绘, 使读者看到各市的历史、现状, 远景给以动感, 从城市的动态变化中体现了城市建设发展的巨大成就, 激发了人民城市人民建的责任感, 充满了发展城市, 建设城市的胜利信心。

4.1 要做到文图并茂

篇4:计算全息图的基本理论与制作

关键词:

计算全息图; 傅里叶变换; 菲涅耳全息图; 再现; MatLab

中图分类号: TP 336 文献标识码: A

引 言

随着数字计算机与计算机技术的迅速发展,人们广泛地使用计算机去模拟、运算、处理各种光学过程。在计算机科学和光学相互促进和结合的发展进程中,1965年德国光学专家罗曼(Lohmann A W)使用计算机和计算机控制的绘图仪做出了世界上第一个计算全息图。计算全息图不仅可以全面地记录光波的振幅和相位,而且能够记录综合复杂的,或者世间不存在物体的全息图,因而具有独特的优点和极大的灵活性。从光学发展的历史上看,计算全息首次将计算机引入光学处理领域。很多光学现象都可以用计算机来进行仿真,计算全息图成为数字信息和光学信息之间有效的联系环节[1]。传统的全息技术是用光学的办法,用干涉记录的方法制作全息图。计算全息是用计算机编码制作全息图,把无波的数学描述输入数字计算机处理后,直接产生全息图,代替了用光学设备实地记录,既可以完全节省光源且对光学设备的精度要求不高,又能制作实际并不存在的各种物体的全息图,且噪声低,重复性高,比光学全息具有明显的简易性和灵活性[2-4]

由于计算全息图的这些优点,再加上计算机的处理速度和存储性能的不断提高,因此绘图技术的不断发展以及多种编程语言的广泛应用都给计算全息的发展与应用带来新的突破和发展。在杂志、书刊上发表的文章也很多,广泛地研究着计算全息的各个课题。这些不同的研究可粗略地分为三个方面:(1)计算全息图制作的算法,主要研究新的算法以提高计算的速度。文献[5]提出了一种制作计算全息干涉图的基于牛顿迭代法的新算法,该算法高效快捷。文献[6]提出了一种快速、简易的计算机制作全息图的方法。(2)提高计算全息图的质量,降低其再现波面的误差。文献[7]利用数字图像处理的方法对计算全息图进行滤波处理,消除了零级像和原始像,使数字再现时得到了清晰的再现像。文献[3]采取一系列提高计算全息图质量的措施,有效地消除了零级像和孪生像的影响,获得了清晰的数字再现像。(3)计算全息技术的应用。文献[8]中提出一种基于傅里叶变换印刷全息标识防伪方法,通过数字印刷技术将加密的傅里叶变换全息标识印制在证件等印刷品上作为防伪标识,具有重要的实用意义。文献[9]将计算全息技术应用于图像加密,提高了图像系统的保密性能。文献[10]开发了一种新的基于计算全息技术的3D动态显示系统。文献[11]、[12]中计算全息图已经成功应用于全息视频显示系统。文献[13]中介绍了计算全息图在光学神经网络中的应用。文献[14]提出了计算全息术应用于非球面检测的展望。文献[15]将计算全息术应用在非球面检测中。

文中首先介绍计算全息的基本理论,然后采用李威汉的编码方法分别制作了傅里叶二元计算全息图和菲涅耳二元计算全息图,并将全息图在实际光路中再现,再现像明显直观。

1 计算全息的基本理论

计算全息图制作的主要步骤:(1)对物面按抽样定理进行抽样,得到其在各个离散点上的离散值;(2)计算全息平面上的光强的分布;(3)根据各种不同的编码方法将全息平面上的光场分布用计算全息图的透过率表示出来;(4)用绘图仪、阴极射线管或者计算机控制的微密度计绘制全息图,也可用特殊输出直接把全息图记录在胶片上[3]

1.1 记录对象[4]

计算全息图可分为像计算全息图,傅里叶变换计算全息图和菲涅耳计算全息图3种。(1)像计算全息图直接记录物体的像场分布。像计算全息图可再现物体本身,它广泛应用于干涉测试中。(2)傅里叶变换计算全息图记录物波函数的傅里叶变换谱。因此在制作此种计算全息图时,首先用计算机算出物波函数的离散傅里叶变换谱,这通常应用快速傅里叶变换算法。在MatLab中采用二维快速傅里叶变换函数fft2()来计算,要注意使用移谱函数fftshift()将频谱的低频部分移到中心,否则傅里叶频谱会被分裂。傅里叶变换计算全息图广泛应用于光学数据处理中的空间滤波器或其他变换运算,这是计算全息技术中应用最广泛的领域。(3)菲涅耳计算全息图记录物体发出的菲涅耳衍射波。在制作菲涅耳计算全息图时,首先求出物体发出的波前在某一特定距离平面上的菲涅耳衍射图的数字表达式。如果物体是二维的,则可用一个相当简单的积分式(1)计算波面的菲涅耳传播;对于三维物体,则需要的计算要复杂得多,菲涅耳计算全息图一般用于图像的三维显示技术中。

1.2 编码方法

在通讯中,编码指把输入信息变为信道上传递信号的过程。在计算全息中,输入信息是待记录的光波复振幅,而中间的传递介质是全息图,其信息特征是全息图上的透过率。将二维光场复振幅分布变换为全息图的二维透过率分布的过程,称为计算全息图的编码。可以用一个数学公式来描述这个编码过程:

式(2)中,hi (x,y)是计算全息图的全息函数,它应为实值非负函数;f(x,y)是输入的空间复值函数;C是相应于编码的变换符号;i表示不同的编码方法[16]

有两种复值函数编码方法,第一种方法是把复值函数用两个实值非负函数来表示,即对幅值和位相进行编码;第二种编码方法即修正型离轴参考光计算全息图通过加进离轴参考光偏置,分别进行调幅和调相,变成实值非负函数。这样编码比第一种方法要简便,没有位相编码的问题,这是其优越之处,但由于加进了偏置分量,使得全息图要记录的空间带宽积大为增加,全息图上的抽样点数必须增加,同时也增加了计算全息图的绘图时间[4]

对幅值和位相编码的典型方法有罗曼迂回相位编码和李威汉四阶迂回相位法。博奇编码是典型的修正型离轴参考光编码方法。

1.2.1罗曼迂回相位编码[17,18]

罗曼根据不规则光栅的衍射效应提出了迂回相位编码。当光栅栅距变化时,某方向的衍射光波在该位置处引入相应相位延迟,因此通过局部改变光栅栅距的办法,可在某个衍射方向上得到所需要的相位调制。罗曼迂回相位编码在全息图的每个抽样单元中,放置一个通光孔径,通过改变通光孔径的面积来实现光波场的振幅调制,而通过改变通光孔径中心距抽样单元中心的位置来实现光场相位的编码。由于利用这种方法编码的计算全息图的透过率只有0、1两个值,故制作简单,抗干扰能力强,对记录介质的非线性效应不敏感,可多次复制而不失真,因而应用较为广泛。

2 基于MatLab的计算全息图的制作[20-22]

计算全息图根据其透过率变化可分为二元计算全息图和灰阶计算全息图。灰阶计算全息图的振幅透过率函数是变化的,二元计算全息振幅透过率只有0或1两个值。但两者都保存了物波的全部信息,因此都能完整地再现原始物波。由于二元计算全息图的制作经济简便,同时抗外界噪声干扰的能力强,对照相底片的非线性效应不敏感,可以多次复制而不失真,因此二元计算全息图比灰阶计算全息图更有优点。

李威汉四阶迂回相位法相对于其他编码方法简单,目前尚未见用其制作计算全息图的文献。因此,基于MatLab平台采用李威汉四阶迂回相位法编码分别制作了傅里叶二元计算全息图和菲涅耳二元计算全息图。

2.1 待记录复振幅波面的抽样和量化

根据四阶迂回相位法,将待记录复振幅波面上的一个样点编码进四个子单元(列)中,而实际上只需要在两个子单元中用开孔大小或灰度等级来表示。对于二元计算全息图,应用开孔大小表示。开孔的大小由量化采用的方法决定,如图1所示:

3 再现实验

计算全息图经光学缩版制成10 mm×10 mm全息图,将其置于再现光路中观察再现像。再现光路如图10所示。平行光垂直入射计算全息图,在全息图后的一定距离处可以观察到菲涅耳计算全息图的再现像。要观察到傅里叶计算全息图的再现像,则需在全息片后加薄透镜。全息图需放在薄透镜的前焦面上,在后焦面上才可观察到再现像。

傅里叶和菲涅耳二元计算全息图实验的再现象,如图11、图12所示。

4 结 论

介绍了计算全息的基本理论,采用李威汉四阶迂回相位法编码,基于MatLab平台制作了傅里叶二元计算全息图和菲涅耳二元计算图。再现实验得到的再现像明显、直观。计算全息图灵活性极高,制作简单,但它也存在不足之处。由于计算机存储容量,绘图仪和CRT显示器等的分辨力有限,因此要制作一张空间带宽积很大的计算全息图是费时和困难的。然而,电子技术和计算机技术的不断发展终将带来大存储容量的计算机和高分辨力的绘图仪及显示器。另外,越来越多的专家和学者对计算全息图各个课题的研究都会使计算全息的应用越来越广泛。

参考文献:

[1] 苏显渝,李继陶.信息光学[M].北京:科学出版社,1999.

[2] FENG Y J,DING J P,ZHOU J.Self-focusing matched filter produced by computer-generated hologram[J].Optics Communications,2000,184:89-93.

[3] 赵付丽,章鹤龄,邢敬婷,等.基于MatLab的计算全息图的制作与数字再现的研究[J].应用光学,2009,30(6):953-957.

[4] 虞祖良,金国藩.计算机制全息图[M].北京:清华大学出版社,1984.

[5] 陈家祯,郑子华,陈利永.基于牛顿迭代法的计算全息干涉图仿真[J].计算机仿真,2005,22(12):178-184.

[6] 甘亮勤,杜旭日,曾胜财,等.计算全息图快速实现的研究[J].厦门理工学院学报,2010,18(1):36-38.

[7] 赵雅晶,钟金刚.黄氏傅里叶计算全息图的数字再现及零级像的消除[J].光子学报,2004,33(11):1339-1342.

[8] 孙刘杰,庄松林.基于加密傅里叶变换全息印刷防伪技术研究[J].光学仪器,2006,28(1):69-73.

[9] 张秋霞.一类光学系统计算全息图像加密技术研究[J].信息技术,2010(2):33-35.

[10] XU X W,SOLANKI S.Computer-generated holography for dynamic display of 3D objects with full parallax[J].The International Journal of Virtual Reality,2009,8(1):33-38.

[11] YAMAGUCHI T,OKABE G,YOSHIKAWA H.Real-time image plane full-color and full-parallax holographic video display system[J].Optical Engineering,2007,46:125801-1-125801-8.

[12] SMITHWICK Q Y J,SMALLEY D E,BOVE J V M,et al.Progress in holographic video displays based on guided-wave acousto-optic devices[J].SPIE,2008,6912:69120H-1-69120H-10.

[13] KAIKHAH K,LOOCHAN F.Computer generated holograms for optical neural networks[J].Applied Intelligence,2001,14(2):145-160.

[14] TIZIANI H J.Prospects of testing aspheric surfaces with computer-generated holograms[J].SPIE,1980,235:72-79.

[15] 卢振武,刘 华,李凤有.利用曲面计算全息图进行非球面检测[J].光学 精密工程,2004,12(6):555-559.

[16] 郑 宇.罗曼编码型计算全息图的制作[J].Technology and Market,2011,18(6):8-9.

[17] 杜志东,裴文荣,张 权.计算机制全息图探究及实现[J].物理与工程,2010,20(2):43-46.

[18] 陈炳初,雷宏香,蔡志刚.用MatLab制作迂回相位编码的傅里叶变换计算全息图[J].中山大学研究生学刊(自然科学、医学版),2006,27(2):60-65.

[19] BURCH J J.A computer algorithm for the synthesis of spatial frequency filters[J].IEEE,1967,55(4):599-601.

[20] 钱晓凡,胡 涛,张 晔.基于MatLab的衍射场模拟计算[J].昆明理工大学学报(理工版),2004,29(3):132-134.

[21] 肖 伟,刘 忠.MatLab程序设计与应用[M].北京:清华大学出版社,2005.

篇5:操作系统实验报告

课 程实验名称

专 业班 级学 号学生姓名

操作系统 进程的控制 计算机操作系统 131110196 邹明镇 嘉应学院计算机学院

1305

一、实验目的

熟悉进程的睡眠、同步、撤消等进程控制方法  利用 wait()来控制进程执行顺序 

二、实验原理

1.sleep()使当前的进程睡眠,即当前的进程进入阻塞态。2.wait()等待子进程运行结束。如果子进程没有完成,父进程一直等待。wait()将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。如果在wait()前已有子进程暂停或终止,则调用进程做适当处理后便返回。系统调用格式:

int wait(int *status);其中,status是用户空间的地址。它的低8位反应子进程状态,为0表示子进程正常结束,非0则表示出现了各种各样的问题;高8位则带回了exit()的返回值。exit()返回值由系统给出。

核心对 wait()作以下处理:

(1)首先查找调用进程是否有子进程,若无,则返回出错码;

(2)若找到一处于“僵死状态”的子进程,则将子进程的执行时间加到父进程的执行时间上,并释放子进程的进程表项;

(3)若未找到处于“僵死状态”的子进程,则调用进程便在可被中断的优先级上睡眠,等待其子进程发来软中断信号时被唤醒。3.exit()终止进程的执行。系统调用格式:

void exit(int status);其中,status是返回给父进程的一个整数,以备查考。

为了及时回收进程所占用的资源并减少父进程的干预,UNIX/LINUX利用exit()来实现进程的自我终止,通常父进程在创建子进程时,应在进程的末尾安排一条exit(),使子进程自我终止。exit(0)表示进程正常终止,exit(1)表示进程运行有错,异常终止。

如果调用进程在执行exit()时,其父进程正在等待它的终止,则父进程可立即得到其返回的整数。核心须为exit()完成以下操作:(1)关闭软中断(2)回收资源(3)写记帐信息

(4)置进程为“僵死状态”

/* 父进程 */ int status;wait(&status);/*同步*/ printf(“Child process completed: %dn”, status);} else { /* 子进程 */ printf(“Hello child!n”);return 0;} } 思考:这个程序中,子进程的退出状态值是多少? 5)利用 exit()设定子进程的退出状态 #include #include #include

main(){ int pid = fork();/*创建子进程*/

if(pid > 0){ /* 父进程 */ int status;wait(&status);/*同步*/ printf(“Child process completed: %d(%d, %d)n”, status, status/256, status%256);} else { /* 子进程 */ printf(“Hello child!n”);exit(2);} } 思考:这个程序中,子进程的退出状态值是多少?如何获得其低8位和高8位? 思考与练习:

试回答每个程序后面的思考题。

四、实验环境

本次实验所使用的系统平台Linux(Ubuntu)和相关软件GCC。

3)同步

篇6:血凝实验操作报告

禽流感血凝和血凝抑制试验可用于血清中抗体水平的监测,也可用于判断未使用疫苗群体的感染状态等。该试验是目前世界卫生组织和国际动物健康组织进行全球流感监测所普遍采用的方法,而且因其具有经济、快速、可靠、操作简便、能够处理大量的样品,并能在短时间内报告禽流感抗体水平等优点,已经成为当前基层兽医实验室禽流感疫病监测和免疫抗体检测中最为常用的方法。但因该试验受人为操作影响较大,经常因操作不规范、不严谨等造成结果偏差大、重复性差等问题,现根据几年来的工作经验对该试验过程中应注意的事项做一探讨。

一、血凝试验操作程序

1、取96孔90°V形酶标板,用微量移液器在第一至第五排的1~12孔每孔加25 μL PBS液。

2、吸取25 μL标准禽流感抗原加入到第一排第1孔中充分混匀。

3、从第1孔吸取25 μL混匀后的抗原液加到第2孔中,混匀后吸取25μL加入到第3孔中,依次进行倍比稀释至第二排最后一孔即第24孔,最后弃去25 μL。第三排孔至第四排孔同上操作。

4、依次向第一至第五排孔的每孔中加入25 μL 1%的鸡红细胞悬液。

5、将酶标板置于微量振荡器上振荡10秒,室温(20-25℃)静置30 min观察结果(如果环境温度太高,可置4℃环境下)。

6、结果判定:将板作45°倾斜,观察红细胞是否呈泪滴状流淌。以完全凝集(不流淌)的抗原或病毒最高稀释倍数为1个血凝单位(HAU)

二、血凝抑制试验操作程序

1、根据血凝试验结果配制4HAU抗原。(即1HAU抗原除以4)

2、取96孔V形酶标板,用移液器在第1~12孔各加入25 μL PBS。

3、在第1孔加入25 μL被检血清,充分混匀后移出25 μL加至第2孔,依次类推,倍比稀释至第12孔,弃去25 μL。

4、按以上步骤加入阳性血清和阴性血清(各做两份),作对照孔。

5、在第1~12孔各加入25 μL 4单位抗原,置于微量振荡器上轻轻混匀,室温20-25℃下静置30 min。

6、每孔加入25 μL 1%的鸡红细胞悬液。置于微量振荡器上轻轻混匀,室温(20-25℃)静置40 min后观察结果,若环境温度过高,可于4℃条件下进行,红细胞将呈明显的纽扣状沉到孔底。

7、结果判定:只有阴性对照孔血清滴度不大于2 log2,阳性对照孔误差不超过1个滴度,试验结果才有效。 将酶标板作45°倾斜,以完全抑制红细胞凝集的最大稀释倍数判为该血清的血凝抑制滴度。当被检血清效价大于等于4log2,判为禽流感抗体阳性。

三、试验过程中的注意事项

1样品的保存及试验前处理

1.1 采集的血液样品应及时分离血清,最好分装至离心管中,标记清楚,离心后吸出血清,对应编号冷藏送检,并禁止运输过程中剧烈震动。

1.2 一般情况下,在5天内检测的样品可放置在4℃的冰箱中冷藏,否则低温冷冻保存。

1.3 在检测前血清样品应充分混匀,混匀时采用上下缓慢颠倒几次的方法即可,切忌剧烈振荡而引起产生气泡及血清中蛋白变性。

1.4 对出现胶冻状的血清样品,可采用反复搅动几下再离心的方法有助于缓解该状态。胶状物是含纤维蛋白和纤维蛋白原的血清,可能是由于放置时间不够造成的血清未完全析出状态。不建议直接吸取其中少量的清亮血清。

1.5 水禽等样品为排除非特异性反应,还应相应进行灭能反应。具体操作方法:56℃水浴锅30min或加等量10%鸡红细胞,轻摇后静置30分钟,离心,收集上清液即可。

2器材的选择

2.1 酶标板的选择:

建议使用96孔90°V型板进行试验,通过反复试验证明:90°V型板相对于110°板及130°板来讲,具有红细胞沉降速度快,产生的凝集图像清晰、结果容易判定等优点。

2.2 移液枪的选择及使用:

①单道、多道可调微量移液枪应选择合适的量程,以便精确度的提高。

②使用时应采用一档吸液二档排液的方法。吸取液体时,枪头要深入液下缓慢平稳吸液。加缓冲液时

应加在板孔底部。倍比稀释血清时,应每孔至少反复吹吸6次,以便混合均匀,还应注意尽量避免产生泡沫引起混合不均。加抗原及红细胞时应在板内液面上方加样,以免交叉污染,影响试验结果。

③加样、倍比稀释时应高度集中注意力,以免漏加、重复加样等。

3试剂的保存及配置

3.1 禽流感血凝抑制试验所用的抗原、阳性血清应严格按照说明书的要求进行保存和配置,试验前应提前将其恢复至室内温。抗原的保存温度为-20℃,反复冻融会降低抗原的滴度,应避免反复冻融。

3.2 PH7.2、0.01mol/L的PBS液的制备

①应尽量现用现配

②每次使用前应测PH值,以免时间过长而导致PH值发生改变。

③由于PH试纸跨度范围偏大,PH值不易准确介定,因此最好采用酸度计准确测量PH值,以提高试验的精确度。

④全部试验均采用同一种稀释液。

3.3 1%红细胞的制备

①为避免有些鸡只的红细胞有自凝现象,因此配制1%红细胞悬液时应最好选择采取2-3只SPF鸡或未进行过任何免疫过的成年公鸡血液。当然采血的前提条件是要按十分之一采血量比例在一次性注射器中加入抗凝剂,如肝素、枸椽酸钠、柠檬酸钠等。

②采血完毕后最好分装至2ml容量的圆底离心管中,因为通过2ml与1.5ml两种容量离心管相比较,放入1.5ml尖底离心管中的话,离心后,离心管底部红细胞不易与加入的PBS液混匀,易沉积在管底部,达不到洗脱干净的目的。

③经~3000r/min,5~10min,弃去上液和红细胞上层的白细胞薄膜,再加入十倍以上血量的PBS液,上下缓慢颠倒(切忌用力过大使红细胞破裂),使其充分混匀,再离心弃去上清液,反复几次直至上清液清亮透明为止。

④在加红细胞过程中还须不断轻摇以确保红细胞均匀,使其每孔加入相同数量的红细胞。

⑤制备好的红细胞液如果放置后上清液变红,说明有溶血,不可再使用。

3.4抗原液的配制

①先做血凝试验测定效价,以抗原与红细胞完全凝集的孔为1HUA抗原,配制4HUA抗原应往前推算两孔,即除以4后的值。

②每次做试验前,必须重新检测禽流感抗原的血凝效价,以免效价发生改变而导致抗原稀释倍数不准确,从而导致试验结果不准确。

③为保证配制的抗原准确,还要进行抗原回滴试验。具体方法:做二排抗原回滴,在两排的第1~8孔各加25微升PBS,取4HAU抗原25微升加在两排的第1、第2孔,混匀,从第2孔倍比稀释至第4孔,弃去25微升,另一排同样。从第2至第8孔补25微升PBS,以保持75微升总量不变,另一排同样。两排的第1至第8孔各加25微升1%红细胞,震荡10秒钟。静置30分钟观察结果。这样在第1孔为4HAU抗原,第2孔为2HAU抗原,第3孔为1HAU抗原,第4孔为1/2HAU抗原,均为75微升总量,第5至第8孔为空白对照。如果抗原回滴试验不成立,应相应调整抗原浓度直至回滴试验成立。因为如果抗原浓度过高,则所测定的抗体效价水平偏低,如果抗原浓度过低,则所测定的效价偏高。所以不调整抗原浓度至实验成立的话会对结果有很大影响。

4结果的判定

每次试验必须设阳性及阴性(空白)对照血清,判别试验是否成立。判读结果时,将酶标板倾斜45°,以孔底沉淀的红细胞流动性好,呈泪珠样流淌,边缘无凝集颗粒为凝集完全抑制。

5试验器具的清洗

每次试验完毕后,应将酶标板中液体甩净,然后用自来水反复冲净每个孔,再放入3%NaOH中4小时,清水反复冲净,再放入3%Hcl中4小时,清水反复冲净,再用蒸馏水反复冲洗几次,甩干水份,入干燥箱中干燥备用。实验用烧杯、加样槽、量筒等也应充分洗净、干燥。以免器具内有杂物、污物以及残留物从而影响试验结果。

四、小结

上一篇:暑假补习班老师心得下一篇:安全教育心得100字整合