gusucode.com > matlab通信工程仿真源码(张德丰等编著)程序书籍 > matlab_code/matlab通信工程仿真源码(张德丰等编著)/第9章/li9_19.m

     clear all;
Ts=1e-3;               %采样间隔
t=0:Ts:40*Ts;          %仿真时间序列
x=sin(2*pi*50*t)+0.5*sin(2*pi*150*t);   %信号
x(20:41)=0.2*sin(2*pi*50*t(20:41));
delta=0.4;         %量化阶距
D(1+length(t))=0;      %预测器初始状态
K=1.3;            %自适应量化间距调整系数
for k=1:length(t)
    e(k)=x(k)-D(k);          %误差信号
    e_q(k)=delta*(2*(e(k)>=0)-1);   %量化器输出
    if k>1
        delta=delta*(K.^sign(e_q(k).*e_q(k-1)));   %自适应步长调整
    end
    D(k+1)=e_q(k)+D(k);       %延迟器状态更新
    codeout(k)=(e_q(k)>0);    %编码输出
end
%解码
Dr(1+length(t))=0;         %解码端预测的初始状态
delta=0.4;
for k=1:length(t)
    eq(k)=delta*(2*codeout(k)-1);   %解码
    if k>1
        delta=delta*(K.^sign(eq(k).*eq(k-1)));   %自适应步长调整
    end
    xr(k)=eq(k)+Dr(k);
    Dr(k+1)=xr(k);     %延迟器状态更新
end
stairs(t,xr);  %解码输出
hold on;plot(t,x);    %原信号
ylabel('幅度');xlabel('时间/s');