信道编码作业MATLAB教学内容.docx
- 文档编号:5691582
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:12
- 大小:442.99KB
信道编码作业MATLAB教学内容.docx
《信道编码作业MATLAB教学内容.docx》由会员分享,可在线阅读,更多相关《信道编码作业MATLAB教学内容.docx(12页珍藏版)》请在冰点文库上搜索。
信道编码作业MATLAB教学内容
信道编码作业MATLAB
信道编码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);%注释:
计算编码后高斯分布随机变量标准差
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观察结果的异同,并说明原因。
未编码时信号幅度若成瑞利衰落,则误比特率会提高;
编码后则差别不大。
(b)若信道使信号幅度呈莱斯衰落,画出编码与未编码的Eb/N0---误比特率曲线,更改K值的大小,观察曲线的现象,能得出什么结论。
K=0.3dBK=10dB
K=30dBK=100dB
随着K值的增加,误比特率不断地提高,交点不断左移,说明在K值大的情况下,编码的可靠性要比未编码的可靠性高的多。
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([01],numSymb,1);%注释:
生成1e6个二进制原始信息序列
msg_enc=convenc(msg_orig,trellis);%注释:
对其进行卷积编码
hMod=modem.pskmod('M',M,'PhaseOffset',0,...
'SymbolOrder','Gray','InputType','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,...
'SymbolOrder','Gray','OutputType','Bit');%注释:
建立PSK解调模型
msg_demod=real(msg_rx);%注释:
调制后信号取实部
%[qcode]=quantiz(msg_demod,[-.50.5],3:
-1:
0);%注释:
产生量化指标和量化的输出值
msg_dec=vitdec(qcode,trellis,tblen,'cont','soft',3);%注释:
用Viterbi算法进行卷积解码
BE_count(i)=length(find(msg_orig(1:
end-tblen)~=msg_dec(1+tblen:
end)));%注释:
计算误码个数,如果原值与解码后值不等,误码个数+1
(b)在误比特率Pb=10-5处,硬判决的编码增益(与未编码比较)
编码后4.53dB编码前9.58dB编码增益5.05dB
(c)详细的解释以下函数(包括函数用法,意义,参数设置等方面)
trellis=poly2trellis(constlen,codegen)
反馈编码(编码率为K/N)。
ConsLen是1-K的向量,K为输入编码器的比特流的延迟。
CodeGen是一个八进制数的K-n矩阵,K为输入编码器的比特流的延迟,n个输出连接。
expVitBER=bercoding(EbNo,'conv','hard',codeRate,dspec)
返回在加性高斯白噪声(AWGN)通道内传输的PSK调制的二进制卷积码的误码率上限。
EbNo是信噪比(dB)。
'hard'代表硬判决。
CodeRate代表卷积码码率。
dspec输入是一个结构,它包含有关代码的距离谱的信息。
msg_rx=awgn(msg_tx,EsN0-10*log10(1/codeRate))
添加高斯白噪声信号,msg_tx为原信号,EsN0-10*log10(1/codeRate)为误码率
hMod=modem.pskmod('M',M,'PhaseOffset',pi/4,'SymbolOrder','Gray','InputType','Bit')
建设PSK调制模型,M为M进制信号,默认为2;'PhaseOffset'为理想星座信号的相位偏移;Gray为灰盒映射,输入为Bit流。
msg_tx=modulate(hMod,msg_enc)
以hMod模型调制msg_enc。
hDemod=modem.pskdemod('M',M,'PhaseOffset',pi/4,'SymbolOrder','Gray','OutputType','Bit')
建设PSK解调模型,M为M进制信号,默认为2;'PhaseOffset'为理想星座信号的相位偏移;Gray为灰盒映射,输入为Bit流。
msg_demod=demodulate(hDemod,msg_rx);
以hDemod模型解调msg_demod。
(d)要保证性能没有显著下降,tblen至少应为多少;
tblen=5tblen=10
tblen=15
为了保证性能不变tblen应该至少15
4.bpsks.m为(2,1,7)卷积码采用软判决译码时在AWGN中的误比特性能的仿真主程序,用matlab运行主程序bpsks.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([01],numSymb,1);%注释:
生成1e6个二进制原始信息序列
msg_enc=convenc(msg_orig,trellis);%注释:
对其进行卷积编码
hMod=modem.pskmod('M',M,'PhaseOffset',0,...
'SymbolOrder','Gray','InputType','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,...
'SymbolOrder','Gray','OutputType','Bit');%注释:
建立PSK解调模型
msg_demod=real(msg_rx);%注释:
调制后信号取实部
%[qcode]=quantiz(msg_demod,[-.50.5],3:
-1:
0);%注释:
产生量化指标和量化的输出值
msg_dec=vitdec(qcode,trellis,tblen,'cont','soft',3);%注释:
用Viterbi算法进行卷积解码,用软解码方式
BE_count(i)=length(find(msg_orig(1:
end-tblen)~=msg_dec(1+tblen:
end)));%注释:
计算误码个数,如果原值与解码后值不等,误码个数+1
(b)在SNR=4dB时,要保证仿真精度,大概需要至少仿真多少个码字?
至少8e4个码字。
(c)在误比特率Pb=10-5处,2比特软判决的编码增益(与未编码比较)?
编码前:
9.58dB编码后:
4.53dB增益:
5.05dB
(d)在误比特率Pb=10-5处,3比特软判决的编码增益(与未编码比较)?
编码前:
9.58dB编码后:
4.71dB增益:
4.87dB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信道编码 作业 MATLAB 教学内容
![提示](https://static.bingdoc.com/images/bang_tan.gif)