通信原理编码实验报告.docx
- 文档编号:14927438
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:13
- 大小:971.77KB
通信原理编码实验报告.docx
《通信原理编码实验报告.docx》由会员分享,可在线阅读,更多相关《通信原理编码实验报告.docx(13页珍藏版)》请在冰点文库上搜索。
通信原理编码实验报告
大连理工大学
语音信号A律编码解码报告
课程名称:
通信原理
学院(系):
电信
专业:
通信工程
班级:
1101
学号:
201181227201181145
学生姓名:
殷青张非凡
2014年4月17日
一.
实验原理
1.1总体框图
1.2低通滤波器
信道中所用的音频信号频率范围为300~3400hz,因此,我们需要对获得的音频信号滤波,使用低通滤波器。
1.38k重采样
信道中的带宽为8khz,因此,我们需要对获得的音频信号进行重采样,以获得8khz的信号。
1.4抽样信号的非均匀量化编码(13折线)
为了改善小信号时的信号量噪比,采用非均匀量化,量化间隔随信号采样值的不同而变化,信号抽样值小时,量化间隔也小;信号抽样值大时,量化间隔也大,实际用13折线法近似逼近A律压缩来进行非均匀量化。
如下图所示:
语音信号中通常采用8位的PCM编码就能保证满意的通信质量。
8bits的安排:
极性码:
第一位;段落码:
第二至四位,代表13折线中的8个段落;段内码:
第五至八位,代表每一段落内的16个均匀划分的量化间隔。
段落码和段内码的编码规则如下表所示:
二.实验内容
2.1语音信号的获取。
我们用电脑上的录音机录了一段“早上好,我是***”的录音。
并用软件“格式工厂”将其转成wav格式。
原始信号波形图如下。
代码:
figure;
[x0,fs0,bits0]=wavread('DSP2.wav');
plot(x0);
xlabel('t'),ylabel('幅值');
title('原始信号波形');
2.2信号处理——低通滤波器&8k重采样
2.2.1低通滤波:
设计思想:
利用窗函数FIR函数,将语音信号的高频成分滤除,即达到低通滤波的目的。
低通滤波器的频响特性曲线如下图:
2.2.2重采样:
设计思想:
wav文件的抽样频率已经是44khz,要用8khz重采样,而从44k到8k,由于44不能被8整点采样,造成可能的语音信号的缺失,因此,我们先用插0法将44khz的信号扩展成88khz的信号,再对88khz信号每11点抽一个值,这样,8k重采样基本完成。
44khz原始信号的频谱波形
插“0”并滤波后的88khz信号频域波形
抽取成8khz的信号频域波形
各个频率的频谱波形图
8k重建后的时域信号波形。
代码:
functionoutput_signal=resample(input_signal)
%Easietwaytoimplementis:
input_signal1=interp(input_signal,2);
%upsampleto88kHz,twicethesamplingfrequencyoftheoriginalaudiosignal
output_signal=zeros(2*length(input_signal),1);
%initializetheoutputsignal
fori=1:
length(input_signal)
%forloopusingiasaninterger
output_signal(2*i-1)=input_signal(i);
%interpolateonesinglebit
end
%LPF,tryFIR1tomeetthespecalsoananti-aliasingfilter%assumefilterlength=240;
%cut-offfrequency=4kHz,Wn=Fc/Fs,Fsisthesamplingfrequency%(88000),Fc=4000
N=240;
Fc=4000;
Wn=Fc/44000;
b=fir1(N,Wn);
%multiplebytwo%
output_signal1=conv(output_signal,2.*b);
%downsamplingto8kHz,1/11ofthesamplingfreuquencyoftheaudiosignal
%Easietwaytoimplementisusingdecimationfunction
forj=1:
floor(length(output_signal1)/11)%roundtowardsminusinfinity
output_signal2(j)=output_signal1(1+11*(j-1));%assignevery11pointsasthelastoutputsignal
end%plotthepowerspectrumusingpwlechfunction
figure
(1);
pwelch(input_signal,[],[],[],88000,'twosided');
title('inputsignalat44kHz');
figure
(2);
pwelch(output_signal1,[],[],[],88000,'twosided');
title('outputsignal1at88kHzafterfir1');
figure(3);
pwelch(output_signal2,[],[],[],8000,'twosided');
title('outputsignal2at8kHz');
figure(4);
freqz(b);%fftofthethreesignalsandplotthem
new_input_signal=fft(input_signal);
new_output_signal=fft(output_signal);
new_output_signal1=fft(output_signal1);
new_output_signal2=fft(output_signal2);
figure(5)
subplot(411);
plot((1:
length(new_input_signal)),new_input_signal);
title('FFTofOriginalsignalat44kHz')
subplot(412);plot((1:
length(new_output_signal)),new_output_signal);
title('FFTof88kHzbeforefir1')
subplot(413);
plot((1:
length(new_output_signal1)),new_output_signal1);
title('FFTof88kHzaferfir1');
subplot(414);
plot((1:
length(new_output_signal2)),new_output_signal2);
title('FFTof8kHzoutputsignal');%%listentothesounds
%soundsc(input_signal,44000);%theoriginalsoundpause;
soundsc(output_signal1,88000);%soundafterup-samplepause;
%soundsc(output_signal2,8000);%soundafterdown-sample%savetheaudioastheaudiofile
wavwrite(output_signal2,'music_singal_8kHz');
end
2.3A律13折线pcm编译码
2.3.1A律pcm编码
MATLAB代码
%A律13折线PCM编码实现
z=sign(xn);%判断S正负
xnnor=abs(xn)/max(abs(xn));%xn取模归一化
S=2048*xnnor;
S=floor(S);%向负无穷方向取整
figure(6);
plot(S);
title('取模、归一、乘2048、取整后的序列');
code=zeros(length(S),8);%码组矩阵
%极性码第一位和段落码第二三四位
fori=1:
length(S)
ifz(i)>=0
code(i,1)=1;
end
if(S(i)>=128)
code(i,2)=1;
if(S(i)>=512)
code(i,3)=1;
if(S(i)>1024)
code(i,4)=1;
end
else
if(S(i)>=256)
code(i,4)=1;
end
end
else
if(S(i)>=32)
code(i,3)=1;
if(S(i)>=64)
code(i,4)=1;
end
else
if(S(i)>=16)
code(i,4)=1;
end
end
end
end
%段内码第五六七八位
N=zeros(1,length(S));
fori=1:
length(S)
N(i)=bin2dec(num2str(code(i,(2:
4))))+1;%找到code位于第几段
end
sp=[0,16,32,64,128,256,512,1024];%每段起始值
spmin=[1,1,2,4,8,16,32,64];%每段最小量化间隔
fori=1:
length(S)
loc=floor((S(i)-sp(N(i)))/spmin(N(i)));%向负无穷方向取整,段内第几段
if(loc==16)
loc=loc-1;
end%正负2048时,loc=16,当做15处理
fork=1:
4
code(i,9-k)=mod(loc,2);
loc=floor(loc/2);
end
end%十进制数转化为4位二进制
code
编码输出波形如图:
2.3.2.接收端重建原音频信号
MATLAB代码
%A律13折线译码实现
dcode=code;
dS=zeros(1,size(dcode,1));
fori=1:
size(dcode,1)
par=bin2dec(num2str(dcode(i,(2:
4))))+1%段落位置
parmid=bin2dec(num2str(dcode(i,(5:
8))));%段间位置
dS(i)=sp(par)+spmin(par)*(parmid+0.5);
ifdcode(i,1)==0
dS(i)=-dS(i);
end
end
dS=dS/2048;%归一化
figure(7);
plot(dS);
dS%dS为将8位PCM码解码后的归一化值
译码后信号输出波形如图:
分析:
通过与原始信号的波形对比,可以观察到,A律PCM译码后的信号波形与原始音频信号波形基本相同,达到了无失真转换。
通过soundsc(dS,8000)听取经过编码译码输出后的语音信号,与原始语音信号基本相同,通信质量基本满意,即接收端重建语音信号成功。
至此,语音信号的A律13折线PCM编码译码已通过matlab仿真实现。
三、实验体会:
首先,通过本次实验,两人一组很好的锻炼了我们的合作沟通能力,我们两人从研究整体的编码译码构架,到最终确定算法思想,也经历了一番挣扎,比如我们一开始不太了解到底是将低通滤波器放在重采样前还是重采样后;也比如我们不确定是用13折线还是用书上讲的那个公式。
但是最后我们还是采用了13折线,13折线虽然写起来所用语言比较多,但是我们推测,直接用A律的函数公式可能要运行的时间更长一点,因为毕竟一共2万多个点都要算,而且其中还有log函数。
其次,我们也更深刻的感受到了编码和译码不仅仅是书上讲的这么简单,真正实现起来有很大的难度。
而我们也要考虑的更全面一点。
总而言之,知识是无穷的。
我们要端正心态,再接再厉。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信 原理 编码 实验 报告