m基于A律13折线法与μ律15折线的信号压缩MATLAB仿真

目录

1.算法概述

2.仿真效果预览

3.MATLAB部分代码预览

4.完整MATLAB程序


1.算法概述

        在通信中,由于信号量噪比的不恒定而影响通信质量。为了对不同的信号强度保持信号量噪比恒定,在理论上要求压缩特性为对数特性。为了使信号量噪比保持恒定,引入A压缩律与μ压缩律以及相应的近似算法-13折线法和15折线法。  对A律13折线法与μ律15折线法进行理论研究,然后利用MATLAB实现仿真,对A律13折线法与μ律15折线法进行性能分析。最后得到一般来说,U律的15折线比A律的13折线,各个段落的斜率都相差2倍,所以小信号的信号量噪比也比A律大一倍,但是对于大信号来说,u律比a律差。   

A律压扩

其特性可表示为:

     

其中x表示为归一化的压缩器输入电压;y为归一化的压缩器输出电压,A为压扩参数,表示压缩程度。

很明显,小信号时为线性特性,大信号时近似为对数特性。这种压扩特性常把压缩、量化和编码合为一体。A律可用13段折线逼近(相当于A=87.6),便于用数字电路实现。

13段折线的压缩特性如下图。过程为:

第一步:把x(x>0 部分)划分为不均匀的8段。第一分点取在V/2处,然后每段都是剩下部分的1/2。依次取第八段为V~V/2,第七段为V/2~V/4;第一段为V/128~0。

第二步:把每段均匀划分为16等份,每一份表示一个量化级,显然8段共16x8=128= 个量化级,需要二进制7位编码表示。可以看出每个量化级是不均匀的。在小信号的量化台阶很小,使小信号时量化噪声减小。如果按均匀量化计算,以最小台阶 为单位,最大信号需用L=128X16=2048=个量化级表示,既需要11位编码。这样非均匀编码使小信号量化台阶缩小了16倍,相当于小信号信噪比改善了20dB。

第三步:把y轴均匀划分为8段,每段均匀分为16分。这样y也分为128个量化级,与x轴的128个量化级对应。因此,压扩特性各段的斜率 是不同的。第一段斜率 其他段为:

以上分段为x取正值时的情况。而x取负值时,压扩特性与x取正值成奇对称。在正8段和负8段中,正1,2段和负1,2段斜率相同,合为一段。所以原来的16段折线变为13段折线。

U律压扩

    μ律压扩的数学解析式:

其中:x为输入信号的归一化值;y为压扩后的信号。对话音信号编码,常采用μ=255,这样适量化信噪比改善约24dB。由于上式的是一个近似的对数关系,因此也称为近似对数压缩律,其15折线:近似m律:

  μ律(m-Law)压扩主要用在北美和日本等地区的数字电话通信中。m为确定压缩量的参数,它反映最大量化间隔和最小量化间隔之比,通常取100≤m≤500。由于m律压扩的输入和输出关系是对数关系,所以这种编码又称为对数PCM。

2.仿真效果预览

matlab2022a仿真

 

 

 

3.MATLAB部分代码预览

function ypcm=unmulaw(name)
%本函数针对国际通用的PCM量化mu律15特性近似编码进行解码

% %从文件读入压缩编码
% fid=fopen([name,'.u'],'rb');
% x=fread(fid,'int8');
x=name;
s=sign(x);
x=abs(x);
%归一化
x=x/128;
ypcm=zeros(length(x),1);

%基于15折线的分段解码映射
for i=1:length(x)
    if x(i)<1/8           %序列值位于第1折线
        ypcm(i)=8/255*x(i);
    elseif x(i)<2/8           %序列值位于第2折线
        ypcm(i)=16/255*(x(i)-1/16);
    elseif x(i)<3/8      %序列值位于第3折线
        ypcm(i)=32/255*(x(i)-5/32);
    elseif x(i)<4/8      %序列值位于第4折线
        ypcm(i)=64/255*(x(i)-17/64);
    elseif x(i)<5/8     %序列值位于第5折线
        ypcm(i)=128/255*(x(i)-49/128);
    elseif x(i)<6/8     %序列值位于第6折线
        ypcm(i)=256/255*(x(i)-129/256);
    elseif x(i)<7/8    %序列值位于第7折线
        ypcm(i)=512/255*(x(i)-321/512);
    else               %序列值位于第8折线
        ypcm(i)=1024/255*(x(i)-769/1024);
    end
end
%还原符号
ypcm=ypcm.*s;
A01-17M

4.完整MATLAB程序

matlab源码说明_我爱C编程的博客-CSDN博客

V

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱C编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值