资源简介

差分脉冲编码调制算法研究 : 用Matlab实现DPCM算法 ,文件包括源码、运行结果分析、实验问报告文档。该文件演示了DPCM压缩文件和对文件进行解压缩的过程以及一些参数的分析,含有详细注释。

资源截图

代码片段和文件信息

% 用Matlab实现的DPCM算法实现。
% 351 工程主要执行文件
% 该文件演示了DPCM压缩文件和对文件进行解压缩的过程。

function dpcm351
clc
disp(‘ ‘)
disp(‘ DPCM CODING ELEC 351 PROJECT 1997‘);
disp(‘ By Justin Hall and Daniel Moutin‘)
disp(‘ ‘); 

% 获取外界输入信息,清屏,关掉窗体

% 外部输入波形文件的名称 input351
input351=input(‘Enter the Wave file name (ie ‘‘test.wav‘‘) => ‘‘s‘);
disp(‘ ‘)


% 从外部输入波形文件在信道上传输时每个抽样点编码表示时所需的位数 chanlbits
chanlbits=input(‘Enter the Channel bits => ‘‘s‘);
chanlbits=sscanf(chanlbits‘%i‘);
disp(‘ ‘)

% 清空屏幕、关掉当前所开的窗体(比如:运行程序时生成的窗体)
clc
for i=1:6
close
end 

% 启动执行时间(将当前的时间保存到变量time里面,以供计算时间间隔时用)
time = clock;

% 读入数据 (以 [采样得到的幅值   频率  (为表示该幅值所要用到的)位数] 的形式读入)
[inputsamplefsbits]=wavread(input351);
disp(‘ ‘)
samples=size(inputsample);
inputbyte=round((samples*bits)/8);  % 所输入的波形文件的字节数--->原始文件大小 
outbits=bits;  % 保存原始的表示波形文件采样幅值时所用的位数

% clock - time  读文件的时间              
readtime= etime(clocktime);

%****************
% 开始压缩文件
%**************** 

% 重新设置变量time的值为刚要开始压缩文件时的时间(用来后面计算文件压缩时间用的)
time=clock; 

% 对输入的波形文件的幅值进行规格化
maxi=max(abs(inputsample));
norminput=inputsample/maxi; 

% 对输入的波形文件的幅值进行量化(波形文件的幅值在计算机中用bits个二进制位进行存储)
step=round(norminput*(2^bits));
qnormin=step/(2^bits); 

% 以下应用 DPCM 算法对文件进行压缩

% 取得输入信号存储矩阵的维数 ( [row col] )
dimension=size(qnormin);
% 初始化一数组 sigrotate ,最后来存放从预测器出来的一系列的预测值(对当前样本的幅值的预测)
sigrotate=zeros(dimension); 

% 采用一循环获得当前所输入的样本值的预测值 (这里我们用上一个样本的实际值作为当前样本值的预测值)
for i=1:(dimension-1)
sigrotate(i+1)=qnormin(i);
end 

% 当前样本的实际值 - 预测值 = 差值 ( 即:被压缩的信号 ) ---> 每个元素与它的前一个元素的差值(第一个元素是和0比较的)
dpcmin=qnormin-sigrotate; 

% 对此被压缩的信号进行规格化
maxi=max(abs(dpcmin));
normout=dpcmin./maxi; 

% 对此被压缩的信号进行量化
step=round(normout*(2^bits));
qnormin=step/(2^bits); 
qnormin = qnormin * 128; % 扩大差值倍数,便于输出显示   


% 对被压缩的波形声音信号文件进行存储
fid = fopen(‘dpcm.hql‘‘wb‘);
fwrite(fidqnormin‘int4‘);
fclose(fid);
% 计算压缩文件所用的时间 
comptime= etime(clocktime);

%*****************
%  解压
%***************** 

% 重新设置变量time的值为刚要开始解压文件时的时间(用来后面计算文件解压时间用的)
time = clock; 

% 恢复差值
qnormin = qnormin / 128; 

% 规格化差分信号  注:在这里为什么还要再一次对差分信号进行规格化和量化呢?--> 因为前一步的恢复差值的操作已经破坏了原先已经规格化和量化好了的差分信号。
maxi=max(abs(qnormin));
normout=qnormin./maxi; 

% 量化差分信号
step=round(normout*(2^bits));
qnormout=step/(2^bits); 

% 按照以下途径对文件dpcm.hql进行解压

% 首先,获取输入信号(相对于接收端来说,指差值)的维数
dimension=size(qnormout); 
% 对差值信号进行解压
% 初始化一个全零数组 decodeout(维数和输入信号的维数相同)用来存放解压完毕后的结果。
decodeout=zeros(dimension); 
decodeout(1)=qnormout(1); % 第一个元素比较特殊,差值刚好等于样本的实际值。
for i=2:(dimension)
decodeout(i)=decodeout(i-1)+qnormout(i); % 用前一个值和差值求出下一个值
end 

% 规格化此解压过的信号
maxi=max(abs(decodeout));
normout=decodeout./maxi;

% 量化此解压过的信号
step=round(normout*(2^bits));
qnormout=step/(2^bits); 

% 计算解压文件所用的时间 
decomptime= etime(clocktime);

% 计算信号在信道上传输的总的字节数
outputbyte=round((samples*chanlbits)/8);

%******************************************
% 压缩百分比 信噪比 和 误差分析  
%****************************************** 

% 压缩百分比
percomp=(1-chanlbits/bits

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      76058  2004-12-28 09:33  dpcm算法研究\dpcm.WAV

     文件       8409  2009-10-27 17:53  dpcm算法研究\dpcm315.m

     文件     107008  2009-10-26 22:54  dpcm算法研究\演示文稿1.ppt

     文件      19000  2010-03-17 14:08  dpcm算法研究\dpcm.hql

     文件     253952  2009-11-04 14:00  dpcm算法研究\dpcm文件的运行程序.doc

     文件      53248  2009-11-03 20:48  dpcm算法研究\用Matlab实现的DPCM算法实现(注意版本  红色标记).doc

     文件      98497  2010-03-17 13:41  dpcm算法研究\差分脉冲编码1.rar

     文件      21504  2009-10-29 11:01  dpcm算法研究\备忘录.doc

     文件     120832  2009-10-14 16:32  dpcm算法研究\dpcm\dpcm\dpcm.doc

     文件      67763  2009-09-27 13:29  dpcm算法研究\dpcm\dpcm\dpcm.docx

     文件      16888  2009-10-10 09:36  dpcm算法研究\dpcm\dpcm\dpcm.mdl

     文件      42681  2009-10-10 20:44  dpcm算法研究\dpcm\dpcm\dpcm.swf

     文件      75264  2009-10-14 16:32  dpcm算法研究\dpcm\dpcm\dpcm压缩算法.doc

     文件      35292  2009-09-29 17:49  dpcm算法研究\dpcm\dpcm\dpcm压缩算法.docx

     文件       9514  2009-09-29 17:39  dpcm算法研究\dpcm\dpcm\matlab实现DPCM编码.png

     文件     563712  2009-10-21 11:10  dpcm算法研究\dpcm\dpcm\SIMUlink仿真基础 .ppt

     文件       2330  2009-10-20 13:58  dpcm算法研究\dpcm\dpcm\压缩被压缩.png

     文件    1554432  2009-10-23 22:21  dpcm算法研究\dpcm\dpcm\差分脉码调制(DPCM.ppt

     文件     210798  2009-10-10 21:17  dpcm算法研究\dpcm\dpcm\差分脉码调制(DPCM.pptx

     文件     110080  2009-10-26 19:08  dpcm算法研究\dpcm\dpcm\DPCM原理草稿.doc

     文件      26965  2009-10-10 20:23  dpcm算法研究\dpcm\dpcm\图片库\1507150.jpg

     文件      40586  2009-10-10 20:13  dpcm算法研究\dpcm\dpcm\图片库\20081203022117907.jpg

     文件      14043  2009-10-10 20:10  dpcm算法研究\dpcm\dpcm\图片库\46be7f63490bf7f9e7113a84.jpg

     文件      17302  2009-10-10 20:19  dpcm算法研究\dpcm\dpcm\图片库\68f5bd586cd336fb9d8204df.jpg

     文件      38362  2009-10-10 20:10  dpcm算法研究\dpcm\dpcm\图片库\95fe7b5922807ea5800a1885.jpg

     文件      61831  2009-10-10 20:18  dpcm算法研究\dpcm\dpcm\图片库\a3db43175478ac3c962b435b.jpg

     文件      26664  2009-10-10 20:18  dpcm算法研究\dpcm\dpcm\图片库\img200811061600121.jpg

     文件       5926  2005-11-28 16:19  dpcm算法研究\dpcm\dpcm\差分脉冲编码\差分脉冲编码\dpcm351-1.m

     文件       6552  2005-11-28 16:23  dpcm算法研究\dpcm\dpcm\差分脉冲编码\差分脉冲编码\dpcm351.2.txt

     文件       5814  2005-03-23 15:16  dpcm算法研究\dpcm\dpcm\差分脉冲编码\差分脉冲编码\dpcm351.m

............此处省略12个文件信息

评论

共有 条评论