📄 ch6example14prog1.m
字号:
% ch6example14prog1.m
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); % 原信号
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -