教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 建筑文档 >

语音信号的A律13折线PCM编译码的MATLAB实现(2)

来源:网络收集 时间:2025-09-22
导读: 也会带来量化噪声,及信号再生时引入的定时抖动失真,需要对再生信号进行幅度及相位的补偿,同时滤除高频分量,在这里使用与编码模块中相同的低通滤波器。 2.2 A律13折线原理 实际中,非均匀量化的实际方法通常是将

也会带来量化噪声,及信号再生时引入的定时抖动失真,需要对再生信号进行幅度及相位的补偿,同时滤除高频分量,在这里使用与编码模块中相同的低通滤波器。

2.2 A律13折线原理

实际中,非均匀量化的实际方法通常是将抽样值通过压缩再进行均匀量化。通常使用的压缩器中,大多采用对数式压缩。广泛采用的两种对数压缩律是?压缩律和A压缩律。美国采用?压缩律,我国和欧洲各国均采用A压缩律,因此,PCM编码方式采用的也是A压缩律。

所谓A压缩律也就是压缩器具有如下特性的压缩律: y?Ax1,0?X? (3) 1?lnAA1?lnAx1 y?,?X?1 (4)

1?lnAA其中A?87.6。

在实际中,A律13折线应用比?律13折线用得广泛。表3列出了计算x值与13折线时的x值的比较。

表3 计算值x与A律13折线时x值的比较

y 0 0 0 1 16 x 按折线 分段时的x 段落 斜率 1 81 1282 81 60.634 8811 30.615.41 321 164 4 5 2 5 81 7.791 867 8811 3.931.981 46 1 1 1 1 8 1 1282 16 1 643 8 1 27 1 21 4

表3中第二行的x值是根据A?87.6时计算得到的,第三行的x值是13折线分段时的值。可见,13折线各段落的分界点与A?87.6曲线十分逼近,同时x按2的幂次分割有利于数字化。

A律压扩特性是连续曲线,A律不同压扩特性也不同,在电路上实现这样的函数规律是相当复杂的。实际中,往往采用近似于A律函数规律的13折线(A?87.6)的压扩特性。这样,它基本上保持了连续压扩特性曲线的优点,。本设计中所用到的PCM编码正是采用这种压扩特性来编码的。

3 程序设计

3.1程序流程图

1. PCM编码函数设计流程图

开始 语音信源 PCM编码 调制,加噪声,解调 PCM解码 结束 图3 主函数流程图

2. PCM编码函数设计流程图

开始 输入信号 判断符号 归一化和量化 段落判断 段内判断 输出 结束 图4 编码函数

3. PCM译码函数设计流程图

开始 输入码组 提取符号 判断段落位置 判断段内位置 判断符号位 输出 结束 图5 译码

3.2程序代码(见附录)

4 仿真结果及分析

4.1 举例分析

4.2 通过绘制图形整体分析

5 设计体会

参考文献

[1] 樊昌信,曹丽娜.通信原理[M].北京:国防工业出版社,2011.

[2] 别志红,别红霞.信息与通信系统仿真[M].北京:北京邮电大学出版社,2010. [3] 赵守彬,李鸿刚. 利用Matlab 实现PCM 编码的A 律13 折线法量化[J]. 科技信息,2010.

[4] 刘全金. 一种A 律PCM编码的简化方法[J]. 安庆师范学院学报(自然科学版), 2007 年11 月第13 卷第4 期.

[5] 曹志刚,钱亚生.现代通信原理[M].北京:清华大学出版社,1992. [6] 张志勇,杨祖撄. MATLAB教程[M]. 北京:北京航空航天大学出版社,2006.

附录:

1. 主程序 close all; clear all; N=1001;

[M]=wavread('a.wav');

S=M(2000:3000); %语音信源 plot(S,'r'); hold on;%画出编码前信号 t1=pcm1(S); %调用编码函数

t2=tqm(t1); %将N行8列矩阵转换为1行8*N列的矩阵的函数 sim('mod1'); %调制

sim('channel1'); %送入信道,加噪声 sim('dem1'); % 解调

t6=tqn(t5); %将8*N行1列的矩阵转换为N行8列矩阵的函数 t7=pcm2(t6); %调用译码函数 plot(t7); % 画出译码后信号

title('PCM编译码前后信号的比较'); %标题 legend('PCM编码前的信号','PCM译码后的信号')%添加图例注解 xlabel('时间') grid on

2. A律十三折线PCM编码函数 function Y=pcm1(S)

z=sign(S); %判断S的正负 Max=max(abs(S)); %求S的最大值 S=abs(S/Max); %归一化 Q=2048*S; %量化

Y=zeros(length(S),8); %存储矩阵(全零) %%段落码判断%% for m=1:length(S)

if Q(m)>128 & Q(m)<2048 %在第五段与第八段之间,段位码第一位都为“1”

% x坐标名

ylabel('幅值') % y坐标名

%添加网格

%将图形设置为正方形

axis square

Y(m,2)=1; end

if (Q(m)>32 & Q(m)<128) || (Q(m)>512 & Q(m)<2048)

Y(m,3)=1; %在第三四七八段内,段位码第二位为“1” end

if (Q(m)>16&Q(m)<32)||(Q(m)>64&Q(m)<128)||(Q(m)>256&Q(m)<512)|| (Q(m)>1024&Q(m)<2048)

Y(m,4)=1; %在二四六八段内,段位码第三位为“1” end

%符号位的判断 if z(m)>0 Y(m,1)=1; elseif z(m)<0 Y(m,1)=0;

end end

%段内码判断程序 N=zeros(length(S)); for m=1:length(S)

N(m)=Y(m,2)*4+Y(m,3)*2+Y(m,4)+1; %找到Y位于第几段 end

a=[0,16,32,64,128,256,512,1024]; %量化间隔

b=[1,1,2,4,8,16,32,64]; %除以16,得到每段的最小量化间隔 for m=1:length(S)

q=ceil((Q(m)-a(N(m)))/b(N(m))); %求出在段内的位置 if q==0

Y(m,(5:8))=[0,0,0,0]; %如果输入为零则输出“0” else k=num2str(dec2bin(q-1,4)); %编码段内码为二进制 Y(m,5)=str2num(k(1)); Y(m,6)=str2num(k(2)); Y(m,7)=str2num(k(3)); Y(m,8)=str2num(k(4)); end end end

…… 此处隐藏:771字,全部文档内容请下载后查看。喜欢就下载吧 ……
语音信号的A律13折线PCM编译码的MATLAB实现(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/438530.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)