MATLAB Communication System(7)通信系统的信源与信道四

信源编码、译码

A律编译码

Mu律编译码

差分编译码

量化编译码

 MATLAB编译码示例:HDB3码

代码

clear all;
xn=[1 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0];  %输入单极性码
yn=xn;   %输出yn初始化
num=0;   %计算器初始化
for k=1:length(xn)
    if xn(k)==1
        num=num+1;             %"1"计数器
        if num/2==fix(num/2)  %奇数个1时输出-1,进行极性交替
            yn(k)=1;
        else
            yn(k)=-1;
        end
    end
end
%HDB3编码
num=0;    %连零计数器初始化
yh=yn;    %输出初始化
sign=0;   %极性标志初始化为0
V=zeros(1,length(yn));   %V脉冲位置记录变量
B=zeros(1,length(yn));   %B脉冲位置记录变量
for k=1:length(yn)
    if yn(k)==0
        num=num+1;   %连0个数计数
        if num==4  
            num=0;   %如果连0个数为4,计数器清零
            yh(k)=1*yh(k-4);
            %让0000的最后一个0改变为与前一个非零符号相同极性的符号
            V(k)=yh(k);  %V脉冲位置记录
            if yh(k)==sign    %如果当前V符号与前一个V符号极性相同 
                yh(k)=-1*yh(k);
                %则让当前V符号极性反转,以满足V符号间相互极性反转要求
                yh(k-3)=yh(k);  %添加B符号,与V符号同极性
                B(k-3)=yh(k);   %B脉冲位置记录
                V(k)=yh(k);     %V脉冲位置记录
                yh(k+1:length(yn))=-1*yh(k+1:length(yn));
                %并让后面的非零符号从V开始再交替变化
            end
            sign=yh(k);   %记录前一个V符号的极性
        end
    else
        num=0;    %当前输入为[1],则连[0]计数器清零
    end
end           %完成编码
re=[xn',yn',yh',V',B'];  %结果输出
%HDB3解码
input=yh;
decode=input;   %输出初始化
sign=0;         %极性标志初始化
for k=1:length(yh)
    if input(k)~=0
        if sign==yh(k)   %如果当前码与前一个非零码的极性相同
            decode(k-3:k)=[0 0 0 0];  %则该码判为V码并将*00V清零
        end
        sign=input(k);     %极性标志
    end
end
decode=abs(decode);   %整流
error=sum([xn'-decode']);  %解码的正确性检验
%作图
subplot(311);stairs([0:length(xn)-1],xn);axis([0 length(xn) -2 2]);
subplot(312);stairs([0:length(xn)-1],yh);axis([0 length(xn) -2 2]);
subplot(313);stairs([0:length(xn)-1],decode);axis([0 length(xn) -2 2]);

结果

输入序列

1    0    1    1    0    0    0    0    0    0    0    1    1    0    0    0    0    0    0    1    0 

AMI编码

-1    0    1    -1    0    0    0    0    0    0    0    1    -1    0    0    0    0    0    0    1    0

HDB3编码

-1    0    1    -1    0    0    0    -1    0    0    0    1    -1    1    0    0    1    0    0    -1    0

译码

1    0    1    1    0    0    0    0    0    0    0    1    1    0    0    0    0    0    0    1    0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

岳小诺

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

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

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

打赏作者

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

抵扣说明:

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

余额充值