信道编码作业MATLAB 下载本文

内容发布更新时间 : 2024/6/26 16:57:50星期一 下面是文章的全部内容请认真阅读。

信道编码MATLAB仿真作业

09274070 王若闻0903

思源现给出循环码及卷积码的编解码程序,理解各程序,完成以下习题。将程序运行结果及各目 的解答写入word中:

运行结果如下

1.用matlab运行书上习题中的“clockcode.m” (a)说明(7,4)码的纠错检错方法

答:接收码字与伴随矩阵相乘,计算得伴随矢量,伴随矢量不为0说明发生错误,为0说明无单个或两个错((7,4)码最多可检测两个错误)。

伴随式不为0时,通过查表法进行译码,对于Hamming码,伴随式组成的二进制数即为错码的位数。

(b)在程序中标注“注释”处加上注释(英文或中文) Encode: temp=data1(4*i-3:4*i); %注释:将原始数据分成四个一组,每次循环调用其中一组 cyctemp=temp*G; %注释:将原码与生成矩阵G相乘 cyctemp=mod(cyctemp,2); %注释:每个数据模2

encode(7*i-6:7*i)=cyctemp; %注释:7位一组,进行编码 Decode:

temp = x(7*j-6:7*j); %注释:将分组码数据分成七个一组,每次循环调用其中一组 s=temp*Ht; %注释:将分组码与伴随矩阵相乘生成伴随矢量 if(s == Ht(k,:)) %注释:如果伴随矢量与伴随矩阵中的某一列相等

temp(k)=mod(temp(k)+1,2);%注释:分组数据纠错:分组数据中第k个数据加1(模2加)

decode(1,4*i-3:4*i)=decode1(1,7*i-6:7*i-3);%注释:分组码每组前4位写入解码输出数据 Clockcode:

data1=rand(1,nd)>0.5; %注释:生成1000个随机数数组,以0.5作为门限取0或1 x=encode(data1); % 注释:对data1进行编码

data1=rand(1,nd)>0.5; % 注释:生成1000个随机数数组,以0.5作为门限取0或1 x=encode(data1); % 注释:用之前声称的随机逻辑数组进行编码

sigma=E/sqrt(2*SNR); %注释:计算未编码时高斯分布随机变量标准差,SNR未信噪比

sigma1=E/sqrt(2*SNR*code_rate); %注释: 计算编码后高斯分布随机变量标准差

1

if (data1(i)==0),

data2(i)=-E+Gngauss(sigma); % 注释:传0码时加入高斯分布白噪声干扰,双极性码else

data2(i)=E+Gngauss(sigma); % 注释:传1码时加入高斯分布白噪声干扰,双极性码if (x(i)==0),

data3(i)=-E+Gngauss(sigma1); % 注释:编码后数据在双极性传输时加入高斯分布白噪声干扰(空号)

else

data3(i)=E+Gngauss(sigma1); % 注释:编码后数据在双极性传输时加入高斯分布白噪声干扰(传号)

demodata1=data2 > 0; % 注释:双极性码硬判决

noe2=sum(abs(data1-demodata1)); % 错误的比特数 nod2=length(data1); % 注释:总码元数

ber(snr_num) = noe/nod; %注释:计算误比特率

(c)对于编码和未编码的情况,误比特率为1e-2、1e-3及1e-4时的Eb/N0分别是多少? BER 未编码Eb/N0 编码后Eb/N0 1e-2 4.28dB 4.53dB 1e-3 6.63dB 6.61dB 1e-4 8.17dB 7.94dB

(d)从物理意义上说明编码增益问题

答:编码增益是编码信号相对于未编码信号效率的提高。单位为分贝。在编码理论和相关的工程问题里,编码增益是一种度量,用来区别SNR(信噪比)级别在未编码的系统和编码的系统来达到相同的比特率(BER),应用在错误纠正编码(ECC)。 编码增益越高,纠错能力越强。

(e)当采用(15,11)码时,观察与(7,4)码相比编码增益的变化。

(7,4)码 (15,11)码

相同信噪比下,(15,11)码误比特率比(7,4)码低,编码增益增大 2.针对题目1中的clockcode.m

(a)若信道使信号幅度呈瑞利衰落,画出编码与未编码的Eb/N0---误比特率曲线,说明与题目1观察结果的异同,并说明原因。

2