当前位置:文档之家› 数图各实验代码

数图各实验代码

数图各实验代码
数图各实验代码

实验一数字图像的基本操作与代数运算

1.对各RGB图像、索引图像、灰度图像,用imread读出图像文件,并用imshow将图像显示出来,并用iminfo给出图像

信息。观察一下图像数据的特点,理解数字图像在MATLAB中的处理就是处理一个矩阵,根据图像文件信息和图像数据矩阵的特点,确定图像的类型,体会各自数据的特点。

x=imread('RGBimageD.tiff')

imshow(x)

imfinfo('RGBimageD.tiff')

2.选择一幅RGB彩色图像(图像RGBimageA),分别显示出原图像和R、G、B三个分量图像(用subplot函数显示在同

一窗口中),观察对比它们的特点,体会不同颜色所对应的R、G、B分量的不同之处。

subplot(2,2,1),imshow (y),title ('原图像');

subplot(2,2,2),imshow (y(:,:,1)),title ('R分量');

subplot(2,2,3),imshow (y(:,:,2)),title ('G分量');

subplot(2,2,4),imshow (y(:,:,3)),title ('B分量');

3.将图像A中心部分选取出来,显示中心部分,并保存为与图像A相同格式的图像文件。

y=imread('RGBimageA.tiff')

A1=imcrop(y,[100,100,300,300]);

subplot(1,2,1),imshow (y),title ('原图像');

subplot(1,2,2),imshow (A1),title ('图像A的中心部分');

imwrite(A1,'A1.tiff','tiff')

4.选择一幅RGB图像(图像RGBimageB),使用imread和imwrite进行图像文件格式的相互转换(TIFF与JPG相互转换)。

z=imread('RGBimageB.tiff','tiff')

imwrite(z,'RGBimageB.jpg','jpg')

5.给灰度图像加入高斯噪声,并显示。运用for循环,分别将5幅、50幅和500幅加有随机高斯噪声的图像进行相加并求其平均值。将几种求平均后的图像显示在同一图像对话框中,比较其结果。

[I, M] = imread('eight.tif');

J = imnoise(I, 'gaussian', 0, 0.02);

subplot(1,2,1), imshow(I, M), title('原图像');

subplot(1,2,2), imshow(J, M), title('加噪声后图像');

[m, n] = size(I);

K = zeros(m, n);

for i = 1 : 100

J = imnoise(I, 'gaussian', 0, 0.02);

J1 = im2double(J);

K = K + J1;

end

K = K / 100; %求图像的平均

figure; imshow(K), title('相加求平均后的图像');

6.自行下载两幅的图像,进行相加、相减、相乘的代数运算(注意运算时候图像的尺寸、类型等,如果不同,应将尺寸较大的图像裁剪或缩放),显示运算之前和运算之后的图像。

四种图像处理代数运算的数学表达式如下:

=+

C x y A x y B x y

(,)(,)(,)

=-

C x y A x y B x y

(,)(,)(,)

=?

(,)(,)(,)

C x y A x y B x y

C x y A x y B x y

(,)(,)(,)

其中A(x,y)和B(x,y)为输入图像,而C(x,y)为输出图像。

7.选择一幅索引图像,将图像文件读出,并将这个图像显示出来。尝试修改MAP颜色矩阵的值,再将图像显示出来,观察图像颜色的变化。(选做)

[X,MAP] = imread ('flowers.tif','tif');

MAP1 = MAP + MAP;

subimage (X,MAP1);

实验二图像的灰度变换与空域滤波

1.显示图像A及其灰度直方图。用imadjust函数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰度直方图与原灰度直方图的区别;改变灰度值调整范围,观察调整后的图像的变化及其与原图像的差别,调整后的灰度直方图的变化及其与原灰度直方图的区别;进一步利用改变灰度值调整范围,实现图像的反转。

X = imread('A.tif');

Y = imadjust(X,[0.2 0.8],[]);

Z = imadjust(X,[],[1,0]);

subplot(3,2,1),imshow(X),title('图像A');

subplot(3,2,2),imhist(X),title('原图像的灰度直方图');

subplot(3,2,3),imshow(Y),title('调整后的图像A');

subplot(3,2,4),imhist(Y),title('调整后的灰度直方图');

subplot(3,2,5),imshow(Z),title('反转后的图像A');

subplot(3,2,6),imhist(Z),title('反转后的灰度直方图');

2.读取灰度图像B,用histeq函数将原始图像的灰度直方图均衡化,同时观察均衡化后的图像与前面图像的差别,均衡化后的灰度直方图与前面的灰度直方图的区别。

I = imread('B.tif');

J = histeq(I);

subplot(2,2,1),imshow(I),title('图像B');

subplot(2,2,2),imhist(I,64),title('图像B的直方图');

subplot(2,2,3),imshow(J),title('均衡化的图像B');

subplot(2,2,4),imhist(J,64),title('均衡化图像B的直方图');

3.给图像C加入高斯噪声,分别采用不同大小的模板对加有噪声的图像进行均值滤波,用一个图像处理对话框(subplot)显示原图像、加有噪声的图像及均值滤波的图像。比较结果。

X = imread('C.tif');

Y = imnoise(X,'gaussian',0,0.005);

Z1= filter2(fspecial('average',3),Y)/255;

Z2= filter2(fspecial('average',5),Y)/255;

Z3= filter2(fspecial('average',7),Y)/255;

Z4= filter2(fspecial('average',9),Y)/255;

subplot(2,3,1),imshow(X),title('图像C');

subplot(2,3,2),imshow(Y),title('加入高斯噪声的图像C');

subplot(2,3,3),imshow(Z1),title('均值滤波模版尺寸为3');

subplot(2,3,4),imshow(Z2),title('均值滤波模版尺寸为5');

subplot(2,3,5),imshow(Z3),title('均值滤波模版尺寸为7');

subplot(2,3,6),imshow(Z4),title('均值滤波模版尺寸为9');

4.分别采用不同大小的模板对上述加有噪声的图像进行中值滤波,用一个图像处理对话框(subplot)显示原图像、加有噪声的图像及中值滤波的图像。比较结果。

X = imread('C.tif');

Y = imnoise(X,'gaussian',0,0.005);

I1= medfilt2(Y,[3,3]);

I2= medfilt2(Y,[7,7]);

subplot(2,2,1),imshow(X),title('图像C');

subplot(2,2,2),imshow(Y),title('加入高斯噪声的图像C');

subplot(2,2,3),imshow(I1),title('3×3模版');

subplot(2,2,4),imshow(I2),title('7×7模版');

实验三图像的频域处理

1.读取图像A(lena.tiff)和B(rice.tif),显示这两幅图像,对图像作傅立叶变换,显示图像的傅里叶幅度谱和相位谱。做傅立

叶逆变换,显示重建图像,看是否与原图像相同。

A = imread('lena.tiff');

B = imread('rice.tif');

I=fftshift(fft2(A));

J=fftshift(fft2(B));

subplot(2,3,1),imshow(A);

subplot(2,3,2),imshow(log(1+abs(I)),[]);

subplot(2,3,3),imshow(angle(I));

subplot(2,3,4),imshow(B);

subplot(2,3,5),imshow(log(1+abs(J)),[]);

subplot(2,3,6),imshow(angle(J));

X=ifft2(I);

Y=ifft2(J);

subplot(2,3,1),imshow(A),title('图像A');

subplot(2,3,2),imshow(log(1+abs(I)),[]),title('二维傅里叶变换');

subplot(2,3,3),imshow(log(abs(X)),[]),title('逆变换后图像');

subplot(2,3,4),imshow(B),title('图像B');

subplot(2,3,5),imshow(log(1+abs(J)),[]),title('二维傅里叶变换');

subplot(2,3,6),imshow(log(abs(Y)),[]),title('逆变换后图像');

2.设计一个简单的巴特沃斯低通滤波器(截止频率自选),对图像A作频域低通滤波,再作反变换,观察两种不同的截止频率下反变换后的图像与原图像的区别。

A=imread('lena.tiff');

PQ = paddedsize(size(A));

D0 = 0.01*PQ(1);

H = lpfilter('btw',PQ(1),PQ(2),D0);

g = dftfilt(A,H);

subplot(1,2,1),imshow(A),title('原图像');

subplot(1,2,2),imshow(g,[]),title('D0较小的滤波');

A=imread('lena.tiff');

PQ = paddedsize(size(A));

D0 = 0.08*PQ(1);

H = lpfilter('btw',PQ(1),PQ(2),D0);

g = dftfilt(A,H);

subplot(1,2,1),imshow(A),title('原图像');

subplot(1,2,2),imshow(g,[]),title('D0较大的滤波');

3.(选做内容)设计一个高斯高通滤波器(截止频率自选),对图像B作高频增强滤波,再作反变换,观察两种不同的截止频率下反变换后的图像与原图像的区别。

B=imread('rice.tif');

PQ=paddedsize(size(B));

D0=0.01*PQ(1);

HBW=hpfilter('gaussian',PQ(1),PQ(2),D0,2);

H=0.5+2*HBW;

g=dftfilt(B,H);

subplot(1,2,1),imshow(B),title('原图像');

subplot(1,2,2),imshow(g,[]),title('D0较小的滤波');

B=imread('rice.tif');

PQ=paddedsize(size(B));

D0=0.1*PQ(1);

HBW=hpfilter('gaussian',PQ(1),PQ(2),D0,2);

H=0.5+2*HBW;

g=dftfilt(B,H);

subplot(1,2,1),imshow(B),title('原图像');

subplot(1,2,2),imshow(g,[]),title('D0较大的滤波');

实验四图像复原

利用imnoise3对图像I进行加入参数为C=[0 32; 0 64; 16 16; 32 0; 64 0; -16 16]的周期噪声,得到图像J。对含噪图像J 进行陷波滤波图像复原。要求列出各个步骤的运行代码。显示I,J,差分图像I-I'。显示I、J、以及噪声的频谱。

img = im2double(imread('peppers.tiff'));

C=[0 32; 0 64; 16 16; 32 0; 64 0; -16 16];

A=[1000 2000 3000 4000 5000 6000];

[r,R,S]=imnoise3(512,512,C,A);

img_noise = img + r;

F0 = fft2(img);

F0 = fftshift(F0);

F = fft2(img_noise);

F = fftshift(F);

sizec = size(img);

H = ones(sizec(1),sizec(2));

x0 = sizec(1)/2 + 1;

y0 = sizec(2)/2 + 1;

x = x0;

w = 0.4*2*pi;

N = 2*pi/w;

y = y0 - round(sizec(2)/N);

H(x,y-3:y+3) = 0;

H(x,(y0-y)+y0-3:(y0-y)+y0+3)=0;

I=ifftshift(F.*H);

img1=ifft2(I);

subplot(4,2,1),imshow('peppers.tiff'),title('原图像');

subplot(4,2,2),imshow(img),title('原图转double类型');

subplot(4,2,3),imshow(S),title('规定脉冲的谱');

subplot(4,2,4),imshow(r,[]),title('空间域中相应的正弦噪声模式');

subplot(4,2,5),imshow(img_noise),title('加噪图像');

subplot(4,2,6),imshow(log(1+abs(F0)),[]),title('原图像频谱');

subplot(4,2,7),imshow(log(1+abs(F)),[]),title('加噪图像频谱');

subplot(4,2,8),imshow(img1,[]),title('陷波滤波结果');

实验五图像变化与编码

1.已知符号{x1,…x8}对应概率为0.4, 0.18, 0.1, 0.1, 0.07, 0.06, 0.05, 0.04。按教材图8.2 的方式将其转换为霍夫曼码(编码过程写在实验报告中),并利用huffman.m 转换为霍夫曼码,对照结果是否相同。

p = [0.4 0.18 0.1 0.1 0.07 0.06 0.05 0.04];

c = huffman(p)

结果如下:

c =

'1'

'010'

'0111'

'000'

'0011'

'0010'

'01101'

'01100'

2.对给定图像I利用mat2huff.m, huff2mat.m 进行霍夫曼编码、解码。计算压缩率CR。

>> I = imread('Tracy.tif');

>> J = mat2huff(I);

>> cr1 = imratio(I,J)

cr1 =

1.2191

>> save('tracy.mat','J');

>> cr2 = imratio('Tracy.tif','tracy.mat')

cr2 =

1.2386

>> load tracy.mat

>> K = huff2mat(J);

>> L = imread('Tracy.tif');

>> rmse = compare(K,L)

rmse =

3.对给定图像I先进行预测编码、霍夫曼编码,然后进行霍夫曼解码、预测解码。计算压缩率CR。显示预测误差图像x-x?。预测器采用x?=(A+B+C)/3,如下图所示:

比较该预测器与mat2lpc 所指定的预测器性能差异(CR 与执行速度)。(提示:可参考mat2lpc.m, lpc2mat.m,或采用循环方式设计预测器,执行速度可用tic,toc)。

>> x = imread('Tracy.tif');

>> tic

>> e1 =mat2lpc(x);

>> toc

Elapsed time is 20.392000 seconds.

>> tic

>> e2 = mymat2lpc(x);

>> toc

Elapsed time is 17.553000 seconds.

>> figure;imshow(e1,[]);

>> figure;imshow(e2,[]);

>> EN = [entropy(x),entropy(e1), entropy(e2)] EN =

6.5147 3.9741 3.8448

>> y1 = mat2huff(e1);

>> y2 = mat2huff(e2);

>> z1 = huff2mat(y1);

>> z2 = huff2mat(y2);

>> x1 = lpc2mat(z1);

>> x2 = mylpc2mat(z2);

>> ComRatio = [imratio(x,y1), imratio(x,y2)] ComRatio =

1.9952

2.0646

>> compare(x,x1)

ans =

>> compare(x,x2)

ans =

实验六综合实验

1、对给定的一幅彩色图像F进行图像增强,结果保存为BMP图像G。

win = [5,5];

img = imread('F.tiff');

x = img(:,:,1);

y = img(:,:,2);

z = img(:,:,3);

X = medfilt2(x,win);

Y = medfilt2(y,win);

Z = medfilt2(z,win);

G = cat(3,X,Y,Z);

imwrite(G,'G.bmp','bmp');

subplot(1,2,1),imshow(img),title('原图像');

subplot(1,2,2),imshow(G),title('原图像用中值滤波去除椒盐噪声');

2、将图像G以JPEG格式进行压缩,质量因子设为70,结果保存为JPG图像J。

A = imread('G.bmp');

imwrite(A,'J.jpg','jpg','quality',70);

imshow('J.jpg'), title('图像G以JPEG格式压缩');

3、(1)计算J相对于G的均方根误差RMSE。

B = imread('J.jpg');

rmse = compare(A,B)

rmse =

5.5879

(2)计算J相对于G的压缩率CR。

cr=imratio(A,B)

cr =

1

4. 提取图像G的边缘(幅值),结果保存为K。

K = imread('G.bmp');

K1=im2double(K);

K2=rgb2gray(K1);

[thr,sorh,keepapp]=ddencmp('den','wv',K2);

K3=wdencmp('gbl',K2,'sym4',2,thr,sorh,keepapp);%小波滤除K4=medfilt2(K3,[9 9]);%中值滤波

K5=imresize(K4,0.2,'bicubic');%图像大小

BW1 = edge(K5,'sobel');

BW2 = edge(K5,'roberts');

BW3 = edge(K5,'prewitt');

BW4 = edge(K5,'log');

BW5 = edge(K5,'canny');

h = fspecial('gaussian',5);%高斯滤波

BW6 = edge(K5,'zerocross',[],h);

subplot(2,3,1),imshow(BW1),title('Sobel算子');

subplot(2,3,2),imshow(BW2),title('Roberts算子');

subplot(2,3,3),imshow(BW3),title('Prewitt算子');

subplot(2,3,4),imshow(BW4),title('Log算子');

subplot(2,3,5),imshow(BW5),title('Canny算子');

subplot(2,3,6),imshow(BW6),title('零交叉算子');

[VG,A,PPG]=colorgrad(G);

figure,imshow(VG);

imwrite(VG,'K.tiff','tiff');

数字图像处理实验1

实验一 实验内容和步骤 练习图像的读取、显示和保存图像数据,步骤如下: (1)使用命令figure(1)开辟一个显示窗口 (2)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内显示、二值图像和灰度图像,注上文字标题。 (3)保存转换后的灰度图像和二值图像 (4)在同一个窗口显示转换后的灰度图像的直方图 I=imread('BaboonRGB.bmp'); figure,imshow(I); I_gray=rgb2gray(I); figure,imshow(I_gray); I_2bw=Im2bw(I_gray); figure,imshow(I_2bw); subplot(1,3,1),imshow(I),title('RGB图像'); subplot(1,3,2),imshow(I_gray),title('灰度图像'); subplot(1,3,3),imshow(I_2bw),title('二值图像'); imwrite(I_gray,'Baboongray.png'); imwrite(I_2bw,'Baboon2bw.tif'); figure;imhist(I_gray);

RGB 图 像灰度图 像二值图 像 050100150200250 500 1000 1500 2000 2500 3000

(5)将原RGB 图像的R 、G 、B 三个分量图像显示在figure(2)中,观察对比它们的特点,体会不同颜色所对应的R 、G 、B 分量的不同之处。 [A_RGB,MAP]=imread('BaboonRGB.bmp'); subplot(2,2,1),imshow(A_RGB),title('RGB'); subplot(2,2,2),imshow(A_RGB(:,:,1)),title('R'); subplot(2,2,3),imshow(A_RGB(:,:,2)),title('G'); subplot(2,2,4),imshow(A_RGB(:,:,3)),title('B'); (6)将图像放大1.5倍,插值方法使用三种不同方法,在figure(3)中显示放大后的图像,比较不同插值方法的结果有什么不同。将图像放大到其它倍数,重复实验;A=imread('BaboonRGB.bmp'); figure(3),imshow(A),title('原图像'); B=imresize(A,1.5,'nearest'); figure(4),imshow(B),title('最邻近法') C=imresize(A,1.5,'bilinear'); ; figure(5),imshow(C),title('双线性插值'); D=imresize(A,1.5,'bicubic'); figure(6),imshow(D),title('双三次插值 '); RGB R G B

数字图像处理实验报告

数字图像处理实验报告 实验一数字图像基本操作及灰度调整 一、实验目的 1)掌握读、写图像的基本方法。 2)掌握MATLAB语言中图像数据与信息的读取方法。 3)理解图像灰度变换处理在图像增强的作用。 4)掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方 法。 二、实验内容与要求 1.熟悉MATLAB语言中对图像数据读取,显示等基本函数 特别需要熟悉下列命令:熟悉imread()函数、imwrite()函数、size()函数、Subplot()函数、Figure()函数。 1)将MATLAB目录下work文件夹中的forest.tif图像文件读出.用到imread, imfinfo 等文件,观察一下图像数据,了解一下数字图像在MATLAB中的处理就是处理一个矩阵。将这个图像显示出来(用imshow)。尝试修改map颜色矩阵的值,再将图像显示出来,观察图像颜色的变化。 2)将MATLAB目录下work文件夹中的b747.jpg图像文件读出,用rgb2gray() 将其 转化为灰度图像,记为变量B。 2.图像灰度变换处理在图像增强的作用 读入不同情况的图像,请自己编程和调用Matlab函数用常用灰度变换函数对输入图像进行灰度变换,比较相应的处理效果。 3.绘制图像灰度直方图的方法,对图像进行均衡化处理 请自己编程和调用Matlab函数完成如下实验。 1)显示B的图像及灰度直方图,可以发现其灰度值集中在一段区域,用 imadjust函 数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰

度直方图与原灰度直方图的区别。 2) 对B 进行直方图均衡化处理,试比较与源图的异同。 3) 对B 进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同。 图1.1 分段线性变换函数 三、实验原理与算法分析 1. 灰度变换 灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的重要工具。 1) 图像反转 灰度级范围为[0, L-1]的图像反转可由下式获得 r L s --=1 2) 对数运算:有时原图的动态范围太大,超出某些显示设备的允许动态范围, 如直接使用原图,则一部分细节可能丢失。解决的方法是对原图进行灰度压缩,如对数变换: s = c log(1 + r ),c 为常数,r ≥ 0 3) 幂次变换: 0,0,≥≥=γγc cr s 4) 对比拉伸:在实际应用中,为了突出图像中感兴趣的研究对象,常常要求 局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸: 其对应的数学表达式为:

图的遍历实验报告

实验四:图的遍历 题目:图及其应用——图的遍历 班级:姓名:学号:完成日期: 一.需求分析 1.问题描述:很多涉及图上操作的算法都是以图的遍历操作为基础的。试写一个程序,演示在连通的无向图上访问全部结点的操作。 2.基本要求:以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历。以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集。 3.测试数据:教科书图7.33。暂时忽略里程,起点为北京。 4.实现提示:设图的结点不超过30个,每个结点用一个编号表示(如果一个图有n个结点,则它们的编号分别为1,2,…,n)。通过输入图的全部边输入一个图,每个边为一个数对,可以对边的输入顺序作出某种限制,注意,生成树的边是有向边,端点顺序不能颠倒。 5.选作内容: (1).借助于栈类型(自己定义和实现),用非递归算法实现深度优先遍历。 (2).以邻接表为存储结构,建立深度优先生成树和广度优先生成树,再按凹入表或树形打印生成树。 二.概要设计 1.为实现上述功能,需要有一个图的抽象数据类型。该抽象数据类型的定义为: ADT Graph { 数据对象V:V是具有相同特性的数据元素的集合,称为顶点集。 数据关系R: R={VR} VR={ | v,w v且P(v,w),表示从v到w得弧,谓词P(v,w)定义了弧的意义或信息} } ADT Graph 2.此抽象数据类型中的一些常量如下: #define TRUE 1 #define FALSE 0 #define OK 1 #define max_n 20 //最大顶点数 typedef char VertexType[20]; typedef enum{DG, DN, AG, AN} GraphKind; enum BOOL{False,True}; 3.树的结构体类型如下所示:

数字图像处理实验 实验二

实验二MATLAB图像运算一、实验目的 1.了解图像的算术运算在数字图像处理中的初步应用。 2.体会图像算术运算处理的过程和处理前后图像的变化。 二、实验步骤 1.图像的加法运算-imadd 对于两个图像f x,y和 (x,y)的均值有: g x,y=1 f x,y+ 1 (x,y) 推广这个公式为: g x,y=αf x,y+β (x,y) 其中,α+β=1。这样就可以得到各种图像合成的效果,也可以用于两张图像的衔接。说明:两个示例图像保存在默认路径下,文件名分别为'rice.png'和'cameraman.tif',要求实现下图所示结果。 代码: I1 = imread('rice.png'); I2 = imread('cameraman.tif'); I3 = imadd(I1, I2,'uint8'); I4 = imadd(I1, I2,'uint16'); subplot(2, 2, 1), imshow(I1), title('?-ê?í???1'); subplot(2, 2, 2), imshow(I2), title('?-ê?í???2'); subplot(2, 2, 3), imshow(I3), title('8??í?????ê?'); subplot(2, 2, 4), imshow(I4), title('16??í?????ê?'); 结果截图:

2.图像的减法运算-imsubtract 说明: 背景图像可通过膨胀算法得到background = imopen(I,strel('disk',15));,要求实现下图所示结果。 示例代码如下: I1 = imread('rice.png'); background = imerode(I1, strel('disk', 15)); rice2 = imsubtract(I1, background); subplot(2, 2, 1), imshow(I1), title('?-ê?í???'); subplot(2, 2, 2), imshow(background), title('±3?°í???'); subplot(2, 2, 3), imshow(rice2), title('′|àíoóμ?í???'); 结果截图: 3.图像的乘法运算-immultiply

数电实验报告1-数电实验报告实验一

实验一门电路逻辑功能及测试 一、实验目得 1、熟悉门电路逻辑功能。 2、熟悉数字电路学习机及示波器使用方法。 二、实验仪器及材料 1、双踪示波器 2、器件 74LS00 二输入端四与非门2片 74LS20 四输入端双与非门1片 74LS86二输入端四异或门1片 74LS04 六反相器1片 三、预习要求 1、复习门电路工作原理相应逻辑表达示。 2、熟悉所有集成电路得引线位置及各引线用途。 3、了解双踪示波器使用方法。 四、实验内容 实验前按学习机使用说明先检查学习机就是否正常,然后选择实验用得集成电路,按自己设计得实验接线图接好连线,特别注意Vcc及地线不能接错。线接好后经实验指导教师检查无误方可通电。试验中改动接线须先断开电源,接好线后在通电实验。 1、测试门电路逻辑功能。 (1)选用双输入与非门74LS20一只,插入面包板,按图 连接电路,输入端接S1~S4(电平开关输入插口),输 出端接电平显示发光二极管(D1~D8任意一个)。 (2)将电平开关按表1、1置位,分别测出电压及逻辑状态。(表1、1)

2、异或门逻辑功能测试 (1)选二输入四异或门电路74LS86,按图接线,输入端1﹑2﹑4﹑5接电平开关,输出端A﹑B﹑Y接电平显示发光二极管。 (2)将电平开关按表1、2置位,将结果填入表中。 表1、2 3、逻辑电路得逻辑关系

(1)选用四二输入与非门74LS00一只,插入面包板,实验电路自拟。将输入输出逻辑关系分 别填入表1、3﹑表1、4。 (2)写出上面两个电路得逻辑表达式。 表1、3 Y=A ⊕B 表1、4 Y=A ⊕B Z=AB 4、逻辑门传输延迟时间得测量 用六反相器(非门)按图1、5接线,输80KHz 连续脉冲,用双踪示波器测输入,输出相位差,计算每个门得平均传输延迟时间得tpd 值 : tpd =0、2μs/6=1/30μs 5、利用与非门控制输出。 选用四二输入与非门74LS00一只,插入面包板,输入接任一电平开关,用示波器观察S对输出脉冲得控制作用: 一端接高有效得脉冲信号,另一端接控制信号。只有控制信号端为高电平时,脉冲信号才能通过。这就就是与非门对脉冲得控制作用。 6.用与非门组成其她门电路并测试验证 (1)组成或非门。 用一片二输入端与非门组成或非门 Y = A+ B = A ? B 画出电路图,测试并填表1、5 中。 表1、5 图如下: (2)组成异或门 ① 将异或门表达式转化为与非门表达式。 A ⊕B={[(AA)'B]'[A( B B)']}' ② 画出逻辑电路图。 ③ 测试并填表1、6。表1、6

数据结构实验报告-图的遍历

数据结构实验报告 实验:图的遍历 一、实验目的: 1、理解并掌握图的逻辑结构和物理结构——邻接矩阵、邻接表 2、掌握图的构造方法 3、掌握图的邻接矩阵、邻接表存储方式下基本操作的实现算法 4、掌握图的深度优先遍历和广度优先原理 二、实验内容: 1、输入顶点数、边数、每个顶点的值以及每一条边的信息,构造一个无向图G,并用邻接矩阵存储改图。 2、输入顶点数、边数、每个顶点的值以及每一条边的信息,构造一个无向图G,并用邻接表存储该图 3、深度优先遍历第一步中构造的图G,输出得到的节点序列 4、广度优先遍历第一部中构造的图G,输出得到的节点序列 三、实验要求: 1、无向图中的相关信息要从终端以正确的方式输入; 2、具体的输入和输出格式不限; 3、算法要具有较好的健壮性,对错误操作要做适当处理; 4、程序算法作简短的文字注释。 四、程序实现及结果: 1、邻接矩阵: #include #include #define VERTEX_MAX 30 #define MAXSIZE 20 typedef struct { int arcs[VERTEX_MAX][VERTEX_MAX] ; int vexnum,arcnum; } MGraph; void creat_MGraph1(MGraph *g) { int i,j,k; int n,m; printf("请输入顶点数和边数:"); scanf("%d%d",&n,&m); g->vexnum=n; g->arcnum=m; for (i=0;iarcs[i][j]=0;

数字图像处理——彩色图像实验报告

6.3实验步骤 (1)对彩色图像的表达和显示 * * * * * * * * * * * *显示彩色立方体* * * * * * * * * * * * * rgbcube(0,0,10); %从正面观察彩色立方体 rgbcube(10,0,10); %从侧面观察彩色立方 rgbcube(10,10,10); %从对角线观察彩色立方体 %* * * * * * * * * *索引图像的显示和转换* * * * * * * * * * f=imread('D:\Picture\Fig0604(a)(iris).tif'); figure,imshow(f);%f是RGB真彩图像 %rgb图像转换成8色索引图像,不采用抖动方式 [X1,map1]=rgb2ind(f,8,'nodither'); figure,imshow(X1,map1); %采用抖动方式转换到8色索引图像 [X2,map2]=rgb2ind(f,8,'dither'); figure,imshow(X2,map2); %显示效果要好一些 g=rgb2gray(f); %f转换为灰度图像 g1=dither(g);%将灰色图像经过抖动处理,转换打二值图像figure,imshow(g);%显示灰度图像 figure,imshow(g1);%显示抖动处理后的二值图像 程序运行结果:

彩色立方体原图 不采用抖动方式转换到8色索引图像采用抖动方式转换到8色索引图像 灰度图像抖动处理后的二值图像

(2)彩色空间转换 f=imread('D:\Picture\Fig0604(a)(iris).tif'); figure,imshow(f);%f是RGB真彩图像 %转换到NTSC彩色空间 ntsc_image=rgb2ntsc(f); figure,imshow(ntsc_image(:,:,1));%显示亮度信息figure,imshow(ntsc_image(:,:,2));%显示色差信息figure,imshow(ntsc_image(:,:,3));%显示色差信息 %转换到HIS彩色空间 hsi_image=rgb2hsi(f); figure,imshow(hsi_image(:,:,1));%显示色度信息figure,imshow(hsi_image(:,:,2)); %显示饱和度信息figure,imshow(hsi_image(:,:,3));%显示亮度信息 程序运行结果: 原图 转换到NTSC彩色空间

数字图像实验报告讲解

数 字 图 像 实 验 报 告 学院:计算机与信息工程学院 专业:通信工程 学号:1008224072 姓名:张清峰

实验一图像增强—灰度变换 专业:通信工程学号:1008224072姓名:张清峰 一、实验目的: 1、了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学理论知识。 2、学会对图像直方图的分析。 3、掌握直接灰度变换的图像增强方法。 二、实验原理及知识点 术语‘空间域’指的是图像平面本身,在空间与内处理图像的方法是直接对图像的像素进行处理。空间域处理方法分为两种:灰度级变换、空间滤波。空间域技术直接对像素进行操作其表达式为 g(x,y)=T[f(x,y)] 其中f(x,y)为输入图像,g(x,y)为输出图像,T是对图像f进行处理的操作符,定义在点(x,y)的指定领域内。 定义点(x,y)的空间邻近区域的主要方法是,使用中心位于(x,y)的正方形或长方形区域,。此区域的中心从原点(如左上角)开始逐像素点移动,在移动的同时,该区域会包含不同的领域。T应用于每个位置(x,y),以便在该位置得到输出图像g。在计算(x,y)处的g值时,只使用该领域的像素。 灰度变换T的最简单形式是使用领域大小为1×1,此时,(x,y)处的g值仅由f 在该点处的亮度决定,T也变为一个亮度或灰度级变化函数。当处理单设(灰度)图像时,这两个术语可以互换。由于亮度变换函数仅取决于亮度的值,而与(x,y)无关,所以亮度函数通常可写做如下所示的简单形式: s=T(r) 其中,r表示图像f中相应点(x,y)的亮度,s表示图像g中相应点(x,y)的亮度。 三、实验内容: 1、图像数据读出 2、计算并分析图像直方图 3、利用直接灰度变换法对图像进行灰度变换 下面给出灰度变化的MATLAB程序 f=imread('C:\ch17\tu\6.jpg'); g=imhist(f,256); imshow(g) %显示其直方图

数字图像处理实验

《数字图像处理》 实验报告 学院:信息工程学院 专业:电子信息工程 学号: 姓名: 2015年6月18日

目录 实验一图像的读取、存储和显示 (2) 实验二图像直方图分析 (6) 实验三图像的滤波及增强 (15) 实验四噪声图像的复原 (19) 实验五图像的分割与边缘提取 (23) 附录1MATLAB简介 (27)

实验一图像的读取、存储和显示 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像的显示。 二、实验原理 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 三、实验设备 (1) PC计算机 (2) MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox) (3) 实验所需要的图片 四、实验内容及步骤 1.利用imread( )函数读取一幅图像,假设其名为flower.tif,存入一个数组中; 2.利用whos 命令提取该读入图像flower.tif的基本信息; 3.利用imshow()函数来显示这幅图像; 4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息; 5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件设为flower.jpg语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。 6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。 7.用imread()读入图像:Lenna.jpg 和camema.jpg; 8.用imfinfo()获取图像Lenna.jpg和camema.jpg 的大小;

图的深度优先遍历实验报告

一.实验目的 熟悉图的存储结构,掌握用单链表存储数据元素信息和数据元素之间的关系的信息的方法,并能运用图的深度优先搜索遍历一个图,对其输出。 二.实验原理 深度优先搜索遍历是树的先根遍历的推广。假设初始状态时图中所有顶点未曾访问,则深度优先搜索可从图中某个顶点v出发,访问此顶点,然后依次从v的未被访问的邻接点出发深度优先遍历图,直至图中所有与v有路径相通的顶点都被访问到;若此时图有顶点未被访问,则另选图中一个未曾访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。 图的邻接表的存储表示: #define MAX_VERTEX_NUM 20 #define MAXNAME 10 typedef char VertexType[MAXNAME]; typedef struct ArcNode{ int adjvex; struct ArcNode *nextarc; }ArcNode; typedef struct VNode{ VertexType data; ArcNode *firstarc;

}VNode,AdjList[MAX_VERTEX_NUM]; typedef struct{ AdjList vertices; int vexnum,arcnum; int kind; }ALGraph; 三.实验容 编写LocateVex函数,Create函数,print函数,main函数,输入要构造的图的相关信息,得到其邻接表并输出显示。 四。实验步骤 1)结构体定义,预定义,全局变量定义。 #include"stdio.h" #include"stdlib.h" #include"string.h" #define FALSE 0 #define TRUE 1 #define MAX 20 typedef int Boolean; #define MAX_VERTEX_NUM 20

数字图像处理实验一

数字图像处理—实验一 一.实验内容: 图像灰度变换 二.实验目的: 学会用Matlab软件对图像灰度进行变换;感受各种不同的灰度变换方法对最终图像效果的影响。 三.实验步骤: 1.获取实验用图像:rice.jpg. 使用imread函数将图像读入Matlab。 程序: clc;clear; figure; subplot(4,4,1); i = imread('rice.png'); i = im2double(i); imshow(i);title('1'); 2.产生灰度变换函数T1,使得: 0.3r r < 0.35 s = 0.105 + 2.6333(r – 0.35) 0.35 ≤r ≤0.65

1 + 0.3(r – 1) r > 0.65 用T1对原图像rice.jpg进行处理,使用imwrite函数保存处理后的新图像。程序: subplot(4,4,2); r=[0:0.001:1]; s=[r<0.35].*r*0.3+[r<=0.65].*[r>=0.35].*(0.105+2.6333*(r-0.35))+[r>0.65].*(1 +0.3*(r-1)); plot(r,s);title('2p'); subplot(4,4,3); T1=[i<0.35].*i*0.3+[i<=0.65].*[i>=0.35].*(0.105+2.6333*(i-0.35))+[i>0.65].*( 1+0.3*(i-1)); imshow(T1);title('2i'); imwrite(T1,'rice_T1.jpg','jpg');

3.产生灰度变换函数T2,使得: 用T2对原图像rice.jpg进行处理,使用imwrite保存处理后的新图像。 %3 subplot(4,4,4); r = [0:0.001:1];

细胞个数实验报告doc

细胞个数实验报告 篇一:细胞计数实验报告 细胞计数实验报告 一、目的 培养的细胞在一般条件下要求有一定的密度才能生长良好,所以要进行细胞计数 二、原理 细胞计数的原理和方法与血细胞计数相同。显微镜直接计数法是将一定稀释的菌体或孢子悬液注入血球计数板的计数室中,于显微镜下直接计数的一种简便、快速、直观的方法。因为计数板是一块特别的载玻片。其上由四条槽构成三个平台;中间较宽的平台又被一短横槽隔成两半,每一边的平台上各刻有一个方格网,每个方格网共分为九个大方格,一个大方格分成16个中方格,每个中方格又分成25个小方格,无论哪种每个大方格中的小方格都是400个。每一个大方格边长为0.1mm,所以计数室的容积为0.1mm3。计数时,通常只用4个四周大方格内的细胞数即可。然后求出每个大方格的平均值,即得出一个大方格中的平均细胞数,再换算成lml菌液中的总细胞数。若设大方格中平均细胞数为N,菌液稀释倍数为M,则计算方法为: lml菌液中的总菌数=平均每个中格中菌的个数=10000xMxN=10000MN(个)

三、实验材料 普通显微镜、血球计数板、试管、吸管,微量移液管、细胞悬浮液 四、实验步骤 1、将血球计数板及盖片用擦试干净,并将盖片盖在计数板上。 2、将细胞悬液吸出少许,注射在盖片边缘,使悬液充满盖片和计数板之间。 3、镜下观察,计算计数板四大格细胞总数,压线细胞只计左侧和上方的。然后按下式计算: 细胞数/ml=4大格细胞总数/ 4×10000 注意:镜下偶见由两个以上细胞组成的细胞团,应按单个细胞计算,若细胞团占10%以上,说明分散不好,需重新制备细胞悬液 五、实验结果 六、讨论与反思 注意多计数几次,求平均值 细胞要比较均匀的分布,四个大方格上的细胞数不应相差太多,否则重新混匀细胞悬浮液,再次计数 篇二:细胞生物学实验报告 染色体标本的制备及观察 泮力菁 XX00140091XX级生物基地同组者:商倩倩

数据结构实验报告图实验

邻接矩阵的实现 1. 实验目的 (1)掌握图的逻辑结构 (2)掌握图的邻接矩阵的存储结构 (3)验证图的邻接矩阵存储及其遍历操作的实现2. 实验内容 (1)建立无向图的邻接矩阵存储 (2)进行深度优先遍历 (3)进行广度优先遍历3.设计与编码MGraph.h #ifndef MGraph_H #define MGraph_H const int MaxSize = 10; template class MGraph { public: MGraph(DataType a[], int n, int e); ~MGraph(){ void DFSTraverse(int v); void BFSTraverse(int v); private: DataType vertex[MaxSize]; int arc[MaxSize][MaxSize]; }

int vertexNum, arcNum; }; #endif MGraph.cpp #include using namespace std; #include "MGraph.h" extern int visited[MaxSize]; template MGraph::MGraph(DataType a[], int n, int e) { int i, j, k; vertexNum = n, arcNum = e; for(i = 0; i < vertexNum; i++) vertex[i] = a[i]; for(i = 0;i < vertexNum; i++) for(j = 0; j < vertexNum; j++) arc[i][j] = 0; for(k = 0; k < arcNum; k++) { cout << "Please enter two vertexs number of edge: " cin >> i >> j; arc[i][j] = 1; arc[j][i] = 1; } }

数字图像处理实验报告

目录 实验一:数字图像的基本处理操作 (4) :实验目的 (4) :实验任务和要求 (4) :实验步骤和结果 (5) :结果分析 (8) 实验二:图像的灰度变换和直方图变换 (9) :实验目的 (9) :实验任务和要求 (9) :实验步骤和结果 (9) :结果分析 (13) 实验三:图像的平滑处理 (14) :实验目的 (14) :实验任务和要求 (14) :实验步骤和结果 (14) :结果分析 (18) 实验四:图像的锐化处理 (19) :实验目的 (19) :实验任务和要求 (19) :实验步骤和结果 (19) :结果分析 (21)

实验一:数字图像的基本处理操作 :实验目的 1、熟悉并掌握MATLAB、PHOTOSHOP等工具的使用; 2、实现图像的读取、显示、代数运算和简单变换。 3、熟悉及掌握图像的傅里叶变换原理及性质,实现图像的傅里叶变换。:实验任务和要求 1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分 成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。 2.对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分 别显示,注上文字标题。 3.对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换, 显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。 4.对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里 叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的 对应关系。 :实验步骤和结果 1.对实验任务1的实现代码如下: a=imread('d:\'); i=rgb2gray(a); I=im2bw(a,; subplot(1,3,1);imshow(a);title('原图像'); subplot(1,3,2);imshow(i);title('灰度图像'); subplot(1,3,3);imshow(I);title('二值图像'); subplot(1,3,1);imshow(a);title('原图像'); 结果如图所示:

数据结构实验—图实验报告

精品文档数据结构 实 验 报 告

目的要求 1.掌握图的存储思想及其存储实现。 2.掌握图的深度、广度优先遍历算法思想及其程序实现。 3.掌握图的常见应用算法的思想及其程序实现。 实验内容 1.键盘输入数据,建立一个有向图的邻接表。 2.输出该邻接表。 3.在有向图的邻接表的基础上计算各顶点的度,并输出。 4.以有向图的邻接表为基础实现输出它的拓扑排序序列。 5.采用邻接表存储实现无向图的深度优先递归遍历。 6.采用邻接表存储实现无向图的广度优先遍历。 7.在主函数中设计一个简单的菜单,分别调试上述算法。 源程序: 主程序的头文件:队列 #include #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int QElemType; typedef struct QNode{ //队的操作 QElemType data; struct QNode *next; }QNode,*QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; }LinkQueue; void InitQueue(LinkQueue &Q){ //初始化队列 Q.front =Q.rear =(QueuePtr)malloc(sizeof(QNode)); if(!Q.front) exit(OVERFLOW); //存储分配失败 Q.front ->next =NULL; } int EnQueue(LinkQueue &Q,QElemType e) //插入元素e为Q的新的队尾元素{ QueuePtr p; p=(QueuePtr)malloc(sizeof(QNode)); if(!p) exit(OVERFLOW); p->data=e;

数字图像处理实验报告

数字图像处理实验 报告 学生姓名:学号: 专业年级: 09级电子信息工程二班

实验一常用MATLAB图像处理命令 一、实验内容 1、读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。 实验结果如右图: 代码如下: Subplot (1,3,1) i=imread('E:\数字图像处理\2.jpg') imshow(i) title('RGB') Subplot (1,3,2) j=rgb2gray(i) imshow(j) title('灰度') Subplot (1,3,3) k=im2bw(j,0.5) imshow(k) title('二值') 2、对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。 实验结果如右图: 代码如下: Subplot (3,2,1) i=imread('E:\数字图像处理 \16.jpg') x=imresize(i,[250,320]) imshow(x) title('原图x') Subplot (3,2,2) j=imread(''E:\数字图像处理 \17.jpg') y=imresize(j,[250,320]) imshow(y) title('原图y') Subplot (3,2,3) z=imadd(x,y) imshow(z)

title('相加结果');Subplot (3,2,4);z=imsubtract(x,y);imshow(z);title('相减结果') Subplot (3,2,5);z=immultiply(x,y);imshow(z);title('相乘结果') Subplot (3,2,6);z=imdivide(x,y);imshow(z);title('相除结果') 3、对一幅图像进行灰度变化,实现图像变亮、变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题。 实验结果如右图: 代码如下: Subplot (2,2,1) i=imread('E:\数字图像处理 \23.jpg') imshow(i) title('原图') Subplot (2,2,2) J = imadjust(i,[],[],3); imshow(J) title('变暗') Subplot (2,2,3) J = imadjust(i,[],[],0.4) imshow(J) title('变亮') Subplot (2,2,4) J=255-i Imshow(J) title('变负') 二、实验总结 分析图像的代数运算结果,分别陈述图像的加、减、乘、除运算可能的应用领域。 解答:图像减运算与图像加运算的原理和用法类似,同样要求两幅图像X、Y的大小类型相同,但是图像减运算imsubtract()有可能导致结果中出现负数,此时系统将负数统一置为零,即为黑色。 乘运算实际上是对两幅原始图像X、Y对应的像素点进行点乘(X.*Y),将结果输出到矩阵Z中,若乘以一个常数,将改变图像的亮度:若常数值大于1,则乘运算后的图像将会变亮;叵常数值小于是,则图像将会会暗。可用来改变图像的灰度级,实现灰度级变换,也可以用来遮住图像的某些部分,其典型应用是用于获得掩膜图像。 除运算操作与乘运算操作互为逆运算,就是对两幅图像的对应像素点进行点(X./Y), imdivide()同样可以通过除以一个常数来改变原始图像的亮度,可用来改变图像的灰度级,其典型运用是比值图像处理。 加法运算的一个重要应用是对同一场景的多幅图像求平均值 减法运算常用于检测变化及运动的物体,图像相减运算又称为图像差分运算,差分运算还可以用于消除图像背景,用于混合图像的分离。

汇编实验报告

汇编语言程序设计 实验报告 学号:100511530 班级:电气信息类1005 姓名:陆淑琴 指导老师:李诗高

实验一、汇编语言上机的基本过程及环境 【实验目的】 (1)熟悉汇编语言的编辑、汇编、连接及调试的全过程,重点掌握使用DEBUG调试程序的方法。 (2)了解汇编语言的程序结构。 【实验内容】 (1)在数据段中定义两个数(数据自拟,包含有正数和负数),要求编写程序分别计算出这两个数的和、差、积、商,并用Debug的相关命令查询计算结果(包括对CF,OF,SF,ZF的影响)。 (2)首先对AX,BX,CX寄存器赋初值(数据自拟),再将AX寄存器的中间八位,BX的低四位和CX的高四位拼接成一个新的字,并把结果存入偏移地址为0000H的存储单元。其中BX的低四位作为结果字的高四位,CX的高四位作为结果字的低四位。并用Debug的相关命令查询内存单元的结果字。 源代码: DA TA SEGMENT val1 DW 1000h val2 DW 2000h maxv DW ? DA TA ENDS STACK SEGMENT STACK 'STACK'

DB 100H DUP(?) STACK ENDS CODE SEGMENT 'CODE' ASSUME CS:CODE, DS:DATA,SS:STACK .386 MAIN: MOV AX, DATA; MOV DS, AX PUSH val1 PUSH val2 CALL MAX ; POP maxv ;栈顶返回值出栈 MOV AX, 4c00H INT 21H MAX PROC PUSH BP ;执行该指令前堆栈情况 MOV BP, SP ;执行后堆栈情况 MOV AX, [BP+4] CMP AX, [BP+6] JA EXIT MOV AX, [BP+6] EXIT: MOV [BP+6], AX ;用栈顶返回值 POP BP RET 2 ;执行后堆栈情况 MAX ENDP CODE ENDS END MAIN 【实验步骤】 (1)用编辑软件(记事本、UltraEdit等)编辑一个扩展文件名为ASM的汇编语言源程序。 (2)用汇编程序MASM汇编上述的汇编语言源程序,形成目标代码文件。(扩展名为OBJ) (3)用连接程序LINK连接目标代码文件,形成可执行文件。(扩展名为EXE)(4)用DEBUG32调试可执行文件,观察执行结果,以验证其正确性。

数字测量实验报告

实验一计数器、译码器电路 一、实验目的 1.掌握555门电路构成的矩形波发生器; 2.掌握分频器电路; 3.掌握计数器电路; 4.掌握译码驱动电路; 二、实验要求 1.熟悉Multisim仿真软件; 2.采用Multisim绘制数字式电子钟电路; 3.应用Multisim仿真软件进行仿真和调试; 4.分析结果,写出实验报告; 三、实验步骤 1.振荡器电路图: 振荡器电路给数字式电子钟提供一个频率稳定、准确的32768Hz的矩形波波信号,其可保证数字式电子钟的走时准确及稳定,本实验采用555门电路构成的矩形波发生器。 给出振荡器电路仿真图与仿真波形 2.分频器电路: 分频器电路将32768Hz的高频方波信号经32768(215)次分频后得到1Hz的方波信号供秒计数器进行计数。分频器实际上也就是计数器。

给出分频器电路仿真图与仿真波形 3.时间计数器电路: 时间计数电路由秒个位、十位计数器、分个位、十位计数及时个位、十位计数电路构成。其中:秒个位和秒十位计数器、分个位和分十位计数为六十进制计数器,而根据设计要求时个位和时十位构成的为十二进制计数器。 图1为2片74160构成的60秒计时电路,图2为两位的小时计时电路,其中个位采用数码管,十位采用发光二极管,要求仿真图中均采用数码管。 图1 秒计时电路

图2 计时电路 给出时间计数器电路仿真图 4.译码驱动电路: 译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。 5.数码管: 数码管通常有发光二极(LED)管数码管、液晶(LCD)数码管,本设计提供的为LED数码管。 6. 给出实验仿真总图

图的遍历操作实验报告

实验三、图的遍历操作 一、目的 掌握有向图和无向图的概念;掌握邻接矩阵和邻接链表建立图的存储结构;掌握DFS及BFS对图的遍历操作;了解图结构在人工智能、工程等领域的广泛应用。 二、要求 采用邻接矩阵和邻接链表作为图的存储结构,完成有向图和无向图的DFS 和BFS操作。 三、DFS和BFS 的基本思想 深度优先搜索法DFS的基本思想:从图G中某个顶点Vo出发,首先访问Vo,然后选择一个与Vo相邻且没被访问过的顶点Vi访问,再从Vi出发选择一个与Vi相邻且没被访问过的顶点Vj访问,……依次继续。如果当前被访问过的顶点的所有邻接顶点都已被访问,则回退到已被访问的顶点序列中最后一个拥有未被访问的相邻顶点的顶点W,从W出发按同样方法向前遍历。直到图中所有的顶点都被访问。 广度优先算法BFS的基本思想:从图G中某个顶点Vo出发,首先访问Vo,然后访问与Vo相邻的所有未被访问过的顶点V1,V2,……,Vt;再依次访问与V1,V2,……,Vt相邻的起且未被访问过的的所有顶点。如此继续,直到访问完图中的所有顶点。 四、示例程序 1.邻接矩阵作为存储结构的程序示例 #include"" #include"" ertex); irstedge; irstedge; } } }//endwhile } //==========主函数=========== void main() { ALGraph *G; G=(ALGraph *)malloc(sizeof(ALGraph));

CreatALGraph(G); printf("Print Graph DFS: "); DFS(G); printf("\n"); printf("Print Graph BFS: "); BFS(G,3); printf("\n"); } 五、实验内容 1调试程序。设计一个有向图和一个无向图,任选一种存储结构,完成有向图和无向图的DFS(深度优先遍历)和BFS(广度优先遍历)的操作。 邻接矩阵作为存储结构的运行结果: 邻接链表作为存储结构的运行结果: 六、实验报告要求 画出你所设计的图,写出两种方法的遍历序列。

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