MATLAB实现十三折线编码
源代码:
%主函数:
function pcm()
t=0:0.1:6pi;
x=sin(t); %模拟信源
subplot(2,1,1);
plot(t,x);
title ( ‘原始模拟信号’ );
t1=0:2pi/32:6*pi; %按每周期取32个点抽样
x1=sin(t1);
subplot(2,1,2);
plot(t1,x1);
stem(t1,x1);
title ( ‘抽样信号’ );
x2=zhexian_(x1); %13折线
x3=bianma(x2); %调用编码函数
x1
x2
x3
%编码函数
`function y=bianma(x)
z=sign(x);
x=x/max(x); %归一化
x=abs(x); %取绝对值
x=2048*x;
x=fix(x); %量化,靠0取整
y=zeros(length(x),8); %储存矩阵(全零)
%段落码判断
for m=1:length(x)
if x(m)>128&&x(m)<2048 %在第五段与第八段之间,段落码第一位为1
y(m,2)=1;
end
if (x(m)>32&&x(m)<128)||(x(m)>512&&x(m)<2048)%在第三第四第七第八段内,段落码第二位为1
y(m,3)=1;
end
if (x(m)>16&&x(m)<32)||(x(m)>64&&x(m)<128)||(x(m)>256&&x(m)<512)||(x(m)>1024&&x(m)<2048)%在第二第四第六第八段内,段落码第三位为1
y(m,4)=1;
end
%符号位判断<