基于MATLAB的A律非均匀量化

(1)A律压缩特性:

基于MATLAB的A律非均匀量化_第1张图片
其中,A 为压缩系数;y 为归一化的压缩器输出电压;x 为归一化的压缩器输入电压
(2)MATLAB实现

function y=a_pcm(x,a)   %x为一个序列,值在0到1,A律量化将得到的结果存在序列y中
t=1/a;                  %a为一个正实数,大于1
for i=1:length(x)
    if x(i)>=0          %判断输入序列值是否大于0
        if (x(i)<=t)
            y(i)=(a*x(i))/(1+log(a)); %若值小于1/a,用此算法
        else
            y(i)=(1+log(a*x(i)))/(1+log(a)); %若值大于1/a,用此算法
        end
    else
        if (x(i)>=-t)
            y(i)=-(a*-x(i))/(1+log(a));     %若值小于0,用此算法
        else
            y(i)=-(1+log(a*-x(i)))/(1+log(a));
        end
    end
end

上述为A律量化函数

x=[0:0.001:1];%定义幅度序列
y1=a_pcm(x,1);%参数为1的A律曲线
y2=a_pcm(x,10);
y3=a_pcm(x,87.65);
plot(x,y1,':',x,y2,'-',x,y3,'-.');
legend('A=1','A=10','A=87.65')
title('对数量化特性曲线')

基于MATLAB的A律非均匀量化_第2张图片

t=0:0.0001:0.005;
y=sin(1000*pi*t);      %输入模拟信号
figure
subplot(2,1,1)
plot(t,y)
axis([0,0.005,-1,1])
xlabel('时间')
ylabel('幅值')
title('原始信号')
z=a_pcm(y,87.65);       %实用中,A=87.65,sin(0)到sin(0.005)的量化值
z
subplot(2,1,2)
plot(t,z)
axis([0,0.005,-1,1])
xlabel('时间')
ylabel('幅值')
title('量化信号')

A=87.65
基于MATLAB的A律非均匀量化_第3张图片

A=10
基于MATLAB的A律非均匀量化_第4张图片
A=1
基于MATLAB的A律非均匀量化_第5张图片

你可能感兴趣的:(基于MATLAB的A律非均匀量化)