matlab信道编码程序,信道编码作业matlab.doc

41528d3028836879cd698677c3999917.gif信道编码作业matlab.doc

信道编码 MATLAB 仿真作业 09274070 王若闻 思源 0903 1 现给出循环码及卷积码的编解码程序,理解各程序,完成以下习题。将程序运行结果及各 目 的解答写入 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); % 注释:计算未编码时高斯分布随机变量标准差,2 SNR 未信噪比 sigma1=E/sqrt(2*SNR*code_rate); % 注释: 计算编码后高斯分布随机变量标准差 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)码低,编码增益增大3 2.针对题目 1 中的 clockcode.m(a)若信道使信号幅度呈瑞利衰落,画出编码与未编码的 Eb/N0--- 误比特率曲线,说明 与题目 1 观察结果的异同,并说明原因。未编码时信号幅度若成瑞利衰落,则误比特率会提高; 编码后则差别不大。(b)若信道使信号幅度呈莱斯衰落,画出编码与未编码的 Eb/N0--- 误比特率曲线,更改 K 值的大小,观察曲线的现象,能得出什么结论。K=0.3dB K=10dBK=30dB K=100dB 随着 K 值的增加,误比特率不断地提高,交点不断左移,说明在 K 值大的情况下,编 码的可靠性要比未编码的可靠性高的多。4 3.bpskh.m 为(2,1,7)卷积码采用硬判决译码时在 AWGN 中的误比特性能的仿真主程 序,用 matlab 运行主程序 bpskh.m ,将运行结果写入 word 文档中,并回答以下问题(tblen 为回溯长度): 运行结果为第一个图 (a)在标识注释处注释(中文或英文) trellis = poly2trellis(constlen, codegen); % 注释:卷积码多项式转换到网格形式 dspec = distspec(trellis, 7); % 注释:计算卷积码的距谱 expVitBER = bercoding(EbNo, conv , soft , codeRate, dspec); %注释:生成已编码的 AWGN 信道的误码率 rand( state , seed(1)); randn( state , seed(2)); %注释:将随机数生成器 rand 指定在 seed1 状态,randn 指定在 seed2 状态,这样每次生成的随机值都是一样的 msg_orig = randi([0 1], numSymb, 1); % 注释:生成 1e6 个二进制原始信息序 列 msg_enc = convenc(msg_orig, trellis); % 注释:对其进行卷积编码 hMod = modem.pskmod( M , M, PhaseOffset , 0, . SymbolOrder , Gray , Type , Bit ); % 注释:建立 PSK 调制模型 msg_tx = modulate(hMod, msg_enc); % 注释:发送端调制信号 msg_rx = awgn(msg_tx, EsN0-10*log10(1/codeRate)); % 注释:接收端在信号中添加高斯 白噪声 hDemod = modem.pskdemod( M , M, PhaseOffset , 0, .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值