西电软院网络多媒体上机报告讲解
西电软院西电软院计组上机报告下

1、导入工程 DM2_KX8051,编绎工程。设计原理图如图 7.3 所示。
2、连接下载 JTAG 口,进行下载,点击工具条上的 图标,进行下载。点 Hardware Setup 选择下载器,只勾上 program/configure,其 它不选,选 start 进行下载,如图 7.4 所示。
实验二 键盘扫描,中断实验 一、实验题目
键盘扫描,中断实验。
二、实验环境
Windows 操作系统,Quartus II,FPGA 开发板。
三、实验内容
本实验主要进行对 4*4 键盘原理分析,实现对键盘扫描码的判断。分别利用查询及 中断方式进行扫描键盘。
四、实验过程
1、导入工程 DM2_KX8051,编绎工程。设计原理图如图 7.3 所示。
4、打开 Quartus II 中工具下的系统内存数据编缉器。操作如图 7.5 所示。
5、点击窗口右侧的 setup 进行 JTAG 口查找,查找后能找到一个 RAM,一个 ROM。 6、ROM内的数据既为程序的目标代码,右击ROM选import data from file 选择生成 的.hex目标文件,将文件写入开发板。
图 6.8 打开系统内存数据编缉器 6、点击窗口右侧的 setup 进行 JTAG 口查找,查找后能找到一个 RAM,一个 ROM。 7、 ROM 内的数据既为程序的目标代码,右击 ROM 选 import data from file 选择生 成的.hex 目标文件,如图 6.9 所示,按复位键运行程序。
图 7.3 设计原理图 2、连接下载 JTAG 口,进行下载,点击工具条上的 图标,进行下载。点 Hardware Setup 选择下载器,只勾上 program/configure,其 它不选,选 start 进行下载,如图 7.4 所示。
软件工程多媒体计算机技术实践报告总结

软件工程多媒体计算机技术实践报告总结下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!软件工程多媒体计算机技术实践报告总结1. 引言在当今信息技术飞速发展的时代,多媒体计算机技术已经成为软件工程领域的重要组成部分。
网络多媒体技术(西电版)第7章 多媒体数据库

解决协作问题。为此,对每个成员要附加一个外部处理软
件模块,由它提供通信、检索和修改界面的功能。在这种
结构的系统中,用户位于任一数据库管理系统位置。协作
型MDBMS的组织结构如图7-3所示。
26
图7-3 协作型MDBMS的组织结构
27
7.3 多媒体数据库体系结构
目前尚没有标准的多媒体数据库体系结构。现在大多 数多媒体数据库系统还局限在专门的应用(如图像数据库、 文本数据库等)上,只对那些专门的应用结构进行了设计。 这里仅对一般的多媒体数据库的结构形式进行介绍。
•MDBMS必须能反映和管理各种媒体数据的特性, 以及各种媒体数据之间的空间或时间的关联。
18
•MDBMS除必须满足物理数据独立性和逻辑数据独 立性外,还应满足媒体数据独立性。物理数据独立性是指 当物理数据组织(存储模式)改变时,不影响概念数据组织( 逻辑模式)。逻辑数据独立性是指概念数据组织改变时,不 影响用户程序使用的视图。媒体数据独立性是指在 MDBMS的设计和实现时,要求系统能保持各种媒体的独 立性和透明性,即用户的操作可最大限度地忽略各种媒体 的差别,而不受具体媒体的影响和约束;同时要求它不受 媒体变换的影响,实现复杂数据的统一管理。
30
图7-4 联邦型多媒体数据库结构
31
2.
集中统一型结构
在集中统一型结构中,只存在一个单一的多媒体数据
19
•MDBMS的数据操作功能。除了提供与传统数据库 系统相同的操作外,MDBMS还应提供许多新功能:提供 比传统DBMS更强的适合非规则数据查询搜索的功能;提 供浏览功能;提供演绎和推理功能;对非规则数据和不同 媒体提供不同操作,如图形数据编辑操作和声音数据剪辑 操作等。
•MDBMS的网络功能。目前多媒体应用一般以网络 为中心,MDBMS应解决分布在网络上的多媒体数据库中 数据的定义、存储、操作问题,并对数据一致性、安全性 、并发性进行管理。
西电电院数字信号处理上机实验报告六

实验六、FIR数字滤波器设计及其网络结构班级: 学号: 姓名: 成绩:1实验目得(1)熟悉线性相位FIR数字滤波器得时域特点、频域特点与零极点分布;(2)掌握线性相位FIR数字滤波器得窗函数设计法与频率采样设计法;(3)了解IIR数字滤波器与FIR数字滤波器得优缺点及其适用场合。
2 实验内容(1)设计计算机程序,根据滤波器得主要技术指标设计线性相位FIR数字低通、高通、带通与带阻滤波器;(2)绘制滤波器得幅频特性与相频特性曲线,验证滤波器得设计结果就是否达到设计指标要求;(3)画出线性相位FIR数字滤波器得网络结构信号流图。
3实验步骤(1)设计相应得四种滤波器得MATLAB程序;(2)画出幅频相频特性曲线;(3)画出信号流图。
4 程序设计%% FIR低通f=[0、2,0、35];m=[1,0];Rp=1;Rs=40;dat1=(10^(Rp/20)-1)/(10^(Rp/20)+1);dat2=10^(-Rs/20);rip=[dat1,dat2];[M,f0,m0,w]=remezord(f,m,rip);M=M+2;hn=remez(M,f0,m0,w);w=0:0、001:pixn=[0:length(hn)-1];H=hn*exp(-j*xn'*w);figuresubplot(2,1,1)plot(w/pi,20*log10(abs(H)));gridon;xlabel('\omega/\pi'),ylabel('|H(e^j^w)|/dB')subplot(2,1,2)plot(w/pi,angle(H)/pi);xlabel('\omega/\pi'),ylabel('\phi(\omega)/\pi') %% FIR高通f=[0、7,0、9];m=[0,1];Rp=1;Rs=60;dat1=(10^(Rp/20)-1)/(10^(Rp/20)+1);dat2=10^(-Rs/20);rip=[dat2,dat1];[M,f0,m0,w]=remezord(f,m,rip);hn=remez(M,f0,m0,w);w=0:0、001:pixn=[0:length(hn)-1];H=hn*exp(-j*xn'*w);figuresubplot(2,1,1)plot(w/pi,20*log10(abs(H)));gridon;xlabel('\omega/\pi'),ylabel('|H(e^j^w)|/dB')subplot(2,1,2)plot(w/pi,angle(H)/pi);xlabel('\omega/\pi'),ylabel('\phi(\omega)/\pi') %% FIR带通f=[0、2,0、35,0、65,0、8];m=[0,1,0];Rp=1;Rs=60;dat1=(10^(Rp/20)-1)/(10^(Rp/20)+1);dat2=10^(-Rs/20);rip=[dat2,dat1,dat2];[M,f0,m0,w]=remezord(f,m,rip);M=M+3hn=remez(M,f0,m0,w);w=0:0、001:pixn=[0:length(hn)-1];H=hn*exp(-j*xn'*w);figuresubplot(2,1,1)plot(w/pi,20*log10(abs(H)));gridon;xlabel('\omega/\pi'),ylabel('|H(e^j^w)|/dB')subplot(2,1,2)plot(w/pi,angle(H)/pi);xlabel('\omega/\pi'),ylabel('\phi(\omega)/\pi') %% FIR带阻f=[0、2,0、35,0、65,0、8];m=[1,0,1];Rp=1;Rs=60;dat1=(10^(Rp/20)-1)/(10^(Rp/20)+1);dat2=10^(-Rs/20);rip=[dat1,dat2,dat1];[M,f0,m0,w]=remezord(f,m,rip);hn=remez(M,f0,m0,w);w=0:0、001:pixn=[0:length(hn)-1];H=hn*exp(-j*xn'*w);figuresubplot(2,1,1)plot(w/pi,20*log10(abs(H)));gridon;xlabel('\omega/\pi'),ylabel('|H(e^j^w)|/dB')subplot(2,1,2)plot(w/pi,angle(H)/pi);xlabel('\omega/\pi'),ylabel('\phi(\omega)/\pi') 5实验结果及分析(1)FIR低通滤波器自动得到得M值不满足要求,故我们将M加上2 在w=0、2π时,H=-0、5dB;w=0、35π时,H=-41dB。
(超详细)西电软院操作系统实验报告DOC

操作系统课程设计实验报告册班级:1313012学号:...姓名:lan教师:杜军朝目录实验1 Linux(虚拟机)安装及Linux常用命令使用实验2 makefile的编写及Linux内核编译实验3 Linux的进程和线程实验4 同步与互斥实验5 文件系统重要提示:1.实验正文建议使用小四号或五号宋体。
2.若附加图形,则请直接嵌入到实验手册相应位置。
3.各实验的源程序,请按实验分目录存放,如第一个实验的源程序存放在目录lab1下,第二个实验的源程序存放在目录lab2下等等,依次类推。
4.可互相讨论,但严禁抄袭网络或同学的实验结果。
实验编号 1 题目Linux(虚拟机)安装及Linux常用命令使用实验目的1、掌握至少一种Linux系统的安装2、掌握虚拟机平台(Vmware Workstation)的使用和配置3、掌握至少一种配置Vmware中Linux系统与宿主机Windows系统的文件交换的方法4、掌握常用的Linux命令5、了解Linux的帮助系统实验内容1、Linux(虚拟机)安装及Linux常用命令使用报告1、目录操作命令正文2、文件操作命令3、文本文件查看命令4、用户系统命令5、网络相关命令6、U盘的使用方法7、用户管理命令8、用户组账号管理9、文件权限设置10、设置文件属主和属组实验编号 2 题目makefile的编写及Linux内核编译实验目的1、掌握Linux中makefile文件的编写2、理解Linux内核的Makefile3、掌握至少一个版本Linux内核的编译步骤4、了解Linux内核的配置过程实验内容1、准备工作:相关软件的获取与安装(源代码,软件包)2、编译工作:配置,编译3、修改启动配置文件:修改grub2启动项4、能够正确的编译源代码5、能够用编译出的内核启动系统报告内容要求(1) 实现方法和思路(2) 测试及结果报告正文内核编译过程1、拷贝源代码到/usr/src目录下将文件添加共享文件夹中,然后在terminal输入以下命令:cd /mnt/hgfscp -r packages /usr/srccp linux-2.6.32.60 /usr/src2、在usr/src目录下解压源码:cd /usr/srctar xvf linux-2.6.32.60.tar.bz23、拷贝packages到“~”目录下:cd /usr/srccp -r packages ~4、安装软件包:dpkg –i *.deb5、转到内核源代码所在的目录“/usr/src/linux-2.6.32.60”:cd /usr/src/linux-2.6.32.606、输入make menuconfig,进入general setup选项,进入local version 菜单,添加版本标示:lan,保存并退出。
网络多媒体技术(西电版)第8章 流媒体技术

1
流媒体技术是多媒体和网络领域的交叉学科。多媒体技术 使PC机能够将声音、视频、文字等多种信息整合成多媒体信 息,并实现方便的交互,从而给人们的工作和娱乐带来丰富多 采的变化,只是这些多媒体信息的数据量比传统的文本文件要 大得多。当人们不再满足只在单机上看到丰富的声、文、图等 多媒体信息,而是希望能从网络中获得多媒体信息的时候,网 络的数据传输压力大大增加,因为即使下载一个很短时间的视 /音频文件也需要用户等待很长的时间。形成这种等待的主要 原因是多媒体文件需要从服务器上全部下载到客户端后才能播 放。为了解决这个问题,流媒体技术应运而生。本章对流媒体 技术从概述、传输协议、关键技术、开发平台以及P2P流媒体 技术几个方面进行全面介绍。
一个流媒体系统应至少包括以下三个组件。
17
图8-2 流媒体系统基本结构
18
1.编码器(Encoder)
它用于将原始音/视频转换成流媒体格式的软件或硬件。 要传送的多媒体数据应先进行预处理,将多媒体文件经过压缩 编码,处理成流媒体文件格式。这种格式的文件尺寸较小,并 且加入了流式信息,适合在网络上边下载边播放。常用的流媒 体文件格式有*.wma、*.wmv、*.avi、*.rm、*.mp3、*.mov等 。前面章节曾介绍过,有多种不同的压缩编码方法可以将原始 音/视频压缩成能够在Internet上传播的流格式文件。
22
8.2 流媒体传输协议
流媒体采用流式传输方式在网络服务器与客户端之间传输 数据。流式传输的实现需要合适的传输协议。IETF(Internet Engineering TaskForce,因特网工程任务组)制定的很多协议可 用于实现流媒体技术。
23
8.2.1 实时传输协议
网络多媒体技术(西电版)第5章 多媒体通信网络

4
(1)多媒体数据的海量性。多媒体数据包含文本、音/视 频等,数据量非常大,尤其是图像、视频,尽管采用了压 缩算法,但是在保证图像质量的前提下还是有很大的数据 量,因此不仅需要很大的存储容量,在传输时也需要很大 的带宽。
(2)多媒体数据的集成性。多媒体数据所包含的多媒体 对象有多种类型,比如文本、声音、图像等,不同类型的 对象具有各自不同的特点,通信时需要对它们共同进行存 储、传输、处理及显现,因而必须将它们有机地结合在一 起。
第5章 多媒体通信网络
➢5.1 多媒体通信对传输网络的要求 ➢5.2 电路交换和分组交换网络 ➢5.3 现有网络对多媒体通信的支持情况 ➢5.4 NGN与多媒体通信 ➢5.5 接入网技术 ➢5.6 本章小结 ➢思考练习题
1
目前绝大部分的多媒体业务都是在现有的各种网络上 运行的,所以多媒体通信网络并不是一个新建的专门用于 多媒体通信的网络,而是按照多媒体通信的要求对现有的 网络进行改造和重组后形成的网络。
2
本章首先分析多媒体通信对传输网络的要求,然后讨论不 同网络对多媒体通信的支持状况,重点介绍ATM网和宽带 IP网络,最后对接入网技术进行分析。
3
5.1 多媒体通信对传输网络 的要求
5.1.1 概述 多媒体通信对通信系统的要ห้องสมุดไป่ตู้是相当高的。它要求实
现一点对多点或者多点对多点的实时不间断的信息传输。 在多媒体通信系统中,在网络上运行的不再是单一的媒体 ,而是多种媒体综合而成的一种复杂的数据流。多媒体信 息在传输时对网络提出了很高的要求,主要原因是:
网络多媒体技术(西电版)第2章 多媒体数据压缩编码技术

存储和传输所必需的未压缩速率以及信号特性。
6
表2-1 各种信号的特性和未压缩速率
7
从以上两个例子以及表2-1可以看出:未进行任何形式的 编码和压缩的多媒体信息数据量庞大,如果不进行压缩处理, 计算机系统几乎无法对其进行存取和交换。因此,对多媒体数 据进行压缩十分必要。
8
2.1.2 多媒体数据压缩的可行性
20
假设离散无记忆信源发出两个符号X和Y,X可发出的信息 集合为A={ai|i=1,2,…,m},ai出现的概率为P(ai),而Y可 发出的信息集合为B={bj|j=1,2,…,m},bj出现的概率为 P(bj),则接收到该符号后所得到的平均信息量称为联合熵,定 义为
H ( X Y ) P(ai b j ) lb P(ai b j )
P( xi | y j )
P( xi , y j ) P( y j )
P( xi , y j ) P( x j )
(2-9)
P( yi | x j )
(2-10)
24
2.2.2 无失真编码理论
无失真编码方法(或称无损压缩算法)是指编码后的图像可 经译码完全恢复为原图像的压缩编码方法。在编码系统中,无 失真编码也称为熵编码。 无失真编码定理:对于离散信源X,对其编码时每个符号
第2章多媒体数据压缩编码技术21多媒体数据压缩的必要性和可行性22多媒体数据压缩理论基础23压缩算法的分类及性能评价24熵编码25预测编码第2章多媒体数据压缩编码技术26变换编码27矢量量化编码28压缩编码新技术29本章小结思考练习题在多媒体系统中处理传输存储的多媒体信息主要包括文字声音图形图像视频等媒体类型这些媒体以大量数据的形式存在如果不对它们进行压缩是无法在计算机中存储处理和传输的
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络多媒体上机实验报告目录实验一哈夫曼编码实验二算术编码实验三LZW编码实验四WAV文件的读取附录对应的四个源程序 实验一哈夫曼编码算法分析:哈夫曼编码采用自底向上的描述方式。
哈夫曼编码运用了贪心算法,每次都取权值最小的两个节点合并成一个节点,该合并节点的权值记为两者权值之和,然后继续上述操作直到最后合并成一个节点,在建成树的过程中,就记下了相应的哈夫曼编码。
通过已经构造出的哈夫曼树,自底向上,由频率节点开始向上寻找parent,直到parent为树的顶点为止。
每个频率都会有一个01编码与之唯一对应,并且任何编码没有前部分是同其他完整编码一样的。
程序设计:构造最优二叉树:输入入N个叶子节点的权值,找出所有结点中权值最小、无父结点的两个结点,并合并成一个结点,继续在剩下的结点中寻找权值最小的叶子结点,循环合并结点操作,并最终生成最优二叉树,节点在二叉树的深度的编码既是对此组字符的哈夫曼编码。
我们将用自己定义的结构体来表示各个节点,其中结构体中包含权值,左右孩子和父节点,然后用一个select函数来寻找当前最小的两个节点,合并成一个节点,然后继续直到全部合并为一个节点,然后顺着树来将其01编码储存在一个一个字符数组中。
调试过程:由于之前做过哈夫曼编码问题。
因此问题不大,未遇到较难处理的问题。
运行结果:这是实验的截图,从中可以看出,权值比较大的用到的编码的位数比较少,而权值较小的节点则远离根节点。
而且,我们可以从上图看出哈弗曼是一种前缀编码。
实验二算术编码算法分析:算数编码是一种更现代的编码方法,算术编码把整个消息看做一个单元。
在实际的应用中,输入数据同城被分割成块以避免错误传播。
他只传输一个区间的值,从而可以通过迭代得知相应的信息,性能比较好。
程序设计:我们将整个信息的概率设置为1,各个信号的概率给出,则一个字符一个字符的取,当取到某个自腐蚀,则将其限制在{low,high}之间,然后在在这个区间内继续往下细分,不断迭代,最后生成一个数,我们可以寻找在最后区间内的一个最短的二进制码字,记得到编码,解码同样是不断的看在那个范围中。
调试过程:这个感觉就像是一道数学题,但是在写的过程中确实存在精度的问题。
实验结果:最大的问题就是精度的问题,表示的精度范围是有限的。
实验三LZW编码算法分析:LZW算法利用了一种自适应的,基于字典的压缩技术。
和变长编码方式不同,LZW使用定长的码字来表示通常会在一起出现的符号/字符的变长的字符串。
和其他的自适应压缩技术一样,LZW编码器和解码器会在接收数据时动态的创建字典,编码器和解码器也会同时产生相同的字典。
程序设计:它采用了一种先进的串表压缩,将每个第一次出现的串放在一个串表中,用一个数字来表示串,压缩文件只存贮数字,则不存贮串,从而使图象文件的压缩效率得到较大的提高。
LZW算法中,首先建立一个字符串表,把每一个第一次出现的字符串放入串表中,并用一个数字来表示,这个数字与此字符串在串表中的位置有关,并将这个数字存入压缩文中,如果这个字符串再次出现时,即可用表示它的数字来代替,并将这个数字存入文件中。
压缩完成后将串表丢弃。
如“print”字符串,如果在压缩时用266表示,只要再次出现,均用266 表示。
调试过程:运行结果:从上图可以看出,a,b,c,ab分别占据了0123的编码,故abcabc输出0,1,2,3,2,实验四WAV文件的读取算法分析:音频文件中的各个字节都有自己的含义,各个字节按照相应的顺序排布。
只要我们读出这些文件,并按照相应的字节来解读就可以得到想要的信息。
程序设计:读入一个音频文件,用fopen打开它,读入一个数组,按照wav文件头的定义信息,一段一段的读出来,为对应的信息。
调试过程:读入一个音频文件,用fopen打开它,并且用fgetc来一个字节一个字节的读入,就可以解析到相应的信息实验结果:从上面我们可以看到其中的相应的信息,一些重要的参数。
附录源程序1.哈夫曼编码#include <stdio.h>#include <stdlib.h>#define MAXBIT 100 //编码比特长度#define MAXVALUE 10000 //节点权值#define MAXLEAF 30 //叶子节点#define MAXNODE MAXLEAF*2-1 //树节点typedef struct{int bit[MAXBIT];//节点编码int start;//起始位标记}Hcodetype;typedef struct{int weight;int parent;int lchild;int rchild;int lenght;}Hnodetype;void huffmantree(Hnodetype huffnode[MAXNODE],int n){int i,j,m1,m2,x1,x2;for(i=0;i<2*n-1;i++) //初始化树节点{huffnode[i].weight=0;huffnode[i].parent=-1;huffnode[i].lchild=-1;huffnode[i].rchild=-1;}for(i=0;i<n;i++) //输入叶子节点权值{printf("please input 第%d character's weight\n",i);scanf("%d",&huffnode[i].weight);}for(i=0;i<n-1;i++) //n个节点,建树n-1回;一轮循环,m1存第一小,m2存第二小{m1=m2=MAXVALUE;x1=x2=0;for(j=0;j<n+i;j++) //当前节点中第一小和第二小{if(huffnode[j].weight<m1&&huffnode[j].parent==-1){m2=m1;x2=x1;m1=huffnode[j].weight;x1=j;}else if(huffnode[j].weight<m2&&huffnode[j].parent==-1){m2=huffnode[j].weight;x2=j;}}huffnode[x1].parent=n+i; //模拟建树huffnode[x2].parent=n+i;huffnode[n+i].weight=huffnode[x1].weight+huffnode[x2].weight;huffnode[n+i].lchild=x1;huffnode[n+i].rchild=x2;}}void main(){Hnodetype huffnode[MAXNODE];Hcodetype huffcode[MAXLEAF],cd;int i,j,c,p,n,q,b[MAXBIT],e[MAXBIT];double sum;q=0;sum=0;printf("please input n\n");scanf("%d",&n);huffmantree(huffnode,n);for(i=0;i<n;i++) //循环对所有叶节点编码{cd.start=n-1;c=i; //cd中间人p=huffnode[c].parent;while(p!=-1) //对节点编码,由底往上,左赋0,右赋1,直退到根节点{if(huffnode[p].lchild==c)cd.bit[cd.start]=0;elsecd.bit[cd.start]=1;cd.start--;c=p;p=huffnode[c].parent;}for(j=cd.start+1;j<n;j++)huffcode[i].bit[j]=cd.bit[j];huffcode[i].start=cd.start;}for(i=0;i<n;i++){printf("第%d 号character %d is:",i,huffnode[i].weight);for(j=huffcode[i].start+1;j<n;j++){printf("%d",huffcode[i].bit[j]);q++;}b[i]=q;q=0;printf("\n");//e[i]=(b[i]*(huffnode[i].weight));sum+=b[i];}printf("Average code length is:%f\n",sum/n);}2.LZW#include<iostream>#include<string>using namespace std;typedef struct{int index;string prefix;}Item;typedef struct{Item item [100];int size ;}Dictionary;Dictionary d;string str;int find(string s){ int i=0;for(;i<d.size;i++){if(d.item[i].prefix==s)return i;}return -1;}int main(){d.size=0;string p="";cout<<"输入字母根的数量:\n";int cnum;cin>>cnum;int i=0;for(;i<cnum;i++){cout <<"输入第"<<i<<"个字母根"<<endl;cin>>d.item[d.size].prefix;d.item[d.size].index=i;d.size++;}cout<<"输入待编码字符串:"<<endl;cin>>str;int length=str.length();i=0;cout<<"The result is:"<<endl;while(i<length){string temp=p+str[i];int index=find(temp);//cout<<index<<endl;if(index>=0){p=p+str[i++];}else{cout<<d.item[find(p)].index<<" ";int t=d.size;d.item[t].index=t;d.item[t].prefix=temp;// cout<<temp;d.size++;p=str[i];// cout<<endl<<p<<endl;i++;}}cout<<d.item[find(p)].index<<" ";}3.算术编码#include <iostream>#define M 100#define N 4using namespace std;class suanshu{int count,length;char number[N],n;long double chance[N],c;char code[M];long double High,Low,high,low,d;public :suanshu(){High=0;Low=0;}void get_number();void get_code();void coding();~suanshu(){}};void suanshu::get_number(){int i=0;cout<<"please input the number and its chance."<<endl;for(i=0;i<N;i++){cin>>n>>c;number[i]=n;chance[i]=c;}if(i==20)cout<<"the number is full."<<endl;count=i;}void suanshu::get_code(){cout<<"please input the code's length:";cin>>length;while(length>=M){cout<<"the length is too larger,please input a smaller one.";cin>>length;}for(int i=0;i<length;i++){cin>>code[i];}}void suanshu::coding(){int i,j=0;for(i=0;i<count;i++)if(code[0]==number[i]) break;while(j<i)Low+=chance[j++];d=chance[j];High=Low+d;for(i=1;i<length;i++)for(j=0;j<count;j++){if(code[i]==number[j]){if(j==0){low=Low;high=Low+chance[j]*d;High=high;d*=chance[j];}else{float chance_l=0.0;for(int k=0;k<=j-1;k++)chance_l+=chance[k];low=Low+d*chance_l;high=Low+d*(chance_l+chance[j]);Low=low;High=high;d*=chance[j];}}else continue;}cout<<"the result is:"<<Low<<endl;}int main(){suanshu a;a.get_number();a.get_code();a.coding();return 0;}4.wav文件的读取#include <stdlib.h>#include <stdio.h>#include <Windows.h>#include <MMSystem.h>#pragma comment(lib,"WINMM.LIB")int main(){int i; //用作循环计数unsigned char ch[100]; //用来存储wav文件的头信息FILE *fp;fp=fopen("E:\\test1.wav","rb");//为读,打开一个wav文件if((fp=fopen("E:\\test1.wav","rb"))==NULL) //若打开文件失败,退出{printf("can't open this file\n");exit(0);}/**********输出wav文件的所有信息**********/printf("该wav文件的所有信息:");for(i=0;i<58;i++){ch[i]=fgetc(fp); //每次读取一个字符,存在数组ch中if(i%16==0) //每行输出16个字符对应的十六进制数printf("\n");if(ch[i]<16) //对小于16的数,在前面加0,使其用8bit显示出来printf("0%x ",ch[i]);elseprintf("%x ",ch[i]);}/*********RIFF WAVE Chunk的输出*********/printf("\n\nRIFF WAVE Chunk信息:");//输出RIFF标志printf("\nRIFF标志:");for(i=0;i<4;i++){printf("%x ",ch[i]);}//输出size大小printf("\nsize:ox");for(i=7;i>=4;i--) //低字节表示数值低位,高字节表示数值高位{if(ch[i]<16)printf("0%x",ch[i]);elseprintf("%x",ch[i]);}//输出WAVE标志printf("\nWAVE标志:");for(i=8;i<12;i++){if(ch[i]<16)printf("0%x ",ch[i]);elseprintf("%x ",ch[i]);}/*******Format Chunk的输出*******/printf("\n\nFormat Chunk信息:");//输出fmt 标志printf("\nfmt 标志:");if(ch[i]<16)printf("0%x ",ch[i]);elseprintf("%x ",ch[i]);}//输出size段printf("\nsize:ox");for(i=19;i>15;i--){if(ch[i]<16)printf("0%x",ch[i]);elseprintf("%x",ch[i]);}//输出编码方式printf("\n编码方式:ox");for(i=21;i>19;i--){if(ch[i]<16)printf("0%x",ch[i]);elseprintf("%x",ch[i]);}//输出声道数目printf("\n声道数目:ox");for(i=23;i>21;i--){if(ch[i]<16)printf("0%x",ch[i]);elseprintf("%x",ch[i]);}if(ch[i+1]==1) //1表示单声道,2表示双声道printf(" 单声道");elseprintf(" 双声道");//输出采样频率printf("\n采样频率:ox");if(ch[i]<16)printf("0%x",ch[i]);elseprintf("%x",ch[i]);}//输出每秒所需字节数printf("\n每秒所需字节数:ox");for(i=31;i>27;i--){if(ch[i]<16)printf("0%x",ch[i]);elseprintf("%x",ch[i]);}//输出数据块对齐单位printf("\n数据块对齐单位:ox");for(i=33;i>31;i--){if(ch[i]<16)printf("0%x",ch[i]);elseprintf("%x",ch[i]);}//输出每个采样所需bit数printf("\n每个采样所需bit数:ox");for(i=35;i>33;i--){if(ch[i]<16)printf("0%x",ch[i]);elseprintf("%x",ch[i]);}//输出附加信息if(ch[16]==18) //若Format Chunk的size大小为18,则该模块的最后两个字节为附加信息{ //若为16,则无附加信息printf("\n附加信息:ox");for(i=37;i>35;i--){if(ch[i]<16)printf("0%x",ch[i]);elseprintf("%x",ch[i]);}}/*******Fact Chunk的输出*******/ printf("\n\nFact Chunk信息:");//输出fact标志printf("\nfact标志:");for(i=38;i<42;i++){if(ch[i]<16)printf("0%x ",ch[i]);elseprintf("%x ",ch[i]);}//输出sizeprintf("\nsize:ox");for(i=45;i>41;i--){if(ch[i]<16)printf("0%x",ch[i]);elseprintf("%x",ch[i]);}//输出data段数据printf("\ndata段数据:");for(i=46;i<50;i++){if(ch[i]<16)printf("0%x ",ch[i]);elseprintf("%x ",ch[i]);}/*******Data Chunk的输出*******/ printf("\n\nData Chunk信息:"); //输出data标志printf("\ndata标志:");for(i=50;i<54;i++){if(ch[i]<16)网络多媒体上机实验报告Xidian University printf("0%x ",ch[i]);elseprintf("%x ",ch[i]);}//输出数据大小printf("\n数据大小:ox");for(i=57;i>53;i--){if(ch[i]<16)printf("0%x",ch[i]);elseprintf("%x",ch[i]);}printf("\n");PlaySound(TEXT("E:\\test1.wav"),NULL,SND_FILENAME|SND_SYNC);fclose(fp);}1。