Turbo码的编译码算法仿真汇总Word格式文档下载.docx
- 文档编号:3929680
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:11
- 大小:116.83KB
Turbo码的编译码算法仿真汇总Word格式文档下载.docx
《Turbo码的编译码算法仿真汇总Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Turbo码的编译码算法仿真汇总Word格式文档下载.docx(11页珍藏版)》请在冰点文库上搜索。
其中MAP算法是一种最佳后验概率算法。
SOVA类算法主要包括软输出的维特比算法(SOVA)和连续列表输出维特比算法(SLVA)。
SOVA算法实际上就是veterbi算法的扩展,保留的路径数不是两条而是和状态数有关从所有可行的路径中找最优的是最大似然序列检测。
d.衰落信道
由于多径和移动台运动等影响因素,使得移动信道对传输信号在时间、频率和角度上造成了色散,如时间色散、频率色散、角度色散等等。
根据不同无线环境,接收信号包络一般服从几种典型分布,如瑞利分布、莱斯分布和Nakagami-m分布。
在仿真衰落信道时,最重要的参数是多径扩展和多普勒频移。
通常在离基站较远、反射物较多的地区,发射机和接收机之间没有直射波路径,存在大量反射波;
到达接收天线的方向角随机且在(0~2pi)均匀分布;
各反射波的幅度和相位都统计独立。
图3瑞利分布概率分布密度
3、设计与实现过程
图4、程序一框图
●具体实现过程:
按照流程图中的各方面(模块)内容进行代码级的详细说明,例如:
●衰落信道的设计
在进行仿真的过程中尝试使用了两种不同的编写方式:
a.CreateRayleighfadingchannelobject.
chan_ray=rayleighchan(1/10000,100);
fadedSig=filter(chan_ray,modSignal);
%Applythechanneleffects
hChan=comm.AWGNChannel('
NoiseMethod'
'
Signaltonoiseratio(SNR)'
);
hChan.SNR=EbNo_db(n);
receivedSignal=step(chan,fadedSig);
b.调用改进JAKES模型产生单径平坦型瑞利衰落信道子程序
nsamp=8;
%脉冲抽样点数
ts=1/(num*nsamp);
%抽样时间间隔
t=(0:
num*nsamp-1)*ts;
%抽样时间序列
·
h=rayleigh(10,t);
%调用瑞利衰落子程序,输入为(最大多普勒频移,抽样时间序列)
modSignal=rectpulse(modSignal,nsamp);
%矩形脉冲形成
modSignal=h'
.*modSignal;
%通过瑞利信道
receivedSignal=intdump(receivedSignal,nsamp);
%匹配滤波相干解调
使用matlab函数rayleighchan
●程序一:
a.调用turbo编码器解码器
encoder=comm.TurboEncoder('
InterleaverIndicesSource'
'
Inputport'
decoder=comm.TurboDecoder('
...
'
NumIterations'
4);
b.调用AWGN信道
chan=comm.AWGNChannel('
EbNo'
EbNo_db,'
BitsPerSymbol'
log2(M));
c.进行编码解码
Turbo编码:
encodedData=step(encoder,msg,index);
调制编码·
过信道receivedSignal=step(chan,modSignal);
解调·
Turbo译码:
receivedBits=step(decoder,-demodSignal,index);
●程序二
code_length=1024;
%码长
rate=1/2;
%码率
niter=4;
%迭代次数
a.信道:
AWGN
EbN0_db=2:
6;
en=10^(EbN0_db(nEN)/10);
L_c=4*en*rate;
%信道置信度
sigma=1/sqrt(2*rate*en);
%AWGN信道标准差
过信道:
r=encoder_out+sigma*randn(1,code_length*
(2));
b.Turbo编码器
%第一个分量RSC编码
output1=rsc_encode(G,msg,1);
%1*2048
y(1,:
)=output1(1:
2:
2*code_length);
%系统比特
y(2,:
)=output1(2:
%校验比特
%第二个分量RSC编码
a=reshape(y(1,:
),32,32);
y_inv=reshape(a'
1,1024);
output2=rsc_encode(G,y_inv,-1);
%输入1024输出1*2048
y(3,:
)=output2(2:
%校验比特输出
删余生成码率为1/2的码
encoder_out(1:
end)=y(1,:
encoder_out(2:
4:
end)=y(2,1:
end);
encoder_out(4:
end)=y(3,2:
%删余,奇为系统比特
c.Turbo译码器
通过解复用生成每个分量译码器的译码输入数据;
初始化外部信息L_e(1:
code_length)后。
根据迭代次数,循环依次进行第一分量译码、第二分量译码。
%第一分量译码器
L_a(index)=L_e;
%先验信息
L_all=sova(rec_s(1,:
),G,L_a,1);
L_e=L_all-2*rec_s(1,1:
2*code_length)-L_a;
%计算外部信息
%第二分量译码器
L_a=L_e(index);
L_all=sova(rec_s(2,:
),G,L_a,2);
L_e=L_all-2*rec_s(2,1:
最后再估计信息比特值。
d.软输入Viterbi算法
初始化时,建立网格图,网格中的零状态初始化度量为0,其他为负无穷。
输入先验信息L_a、RSC码生成矩阵以及数据;
前向跟踪计算所有路径度量值;
第一分量译码器,从零状态开始向后跟踪;
第二分量译码器从最可能的状态开始后向跟踪;
后向跟踪获得估计比特及最大似然路径;
找到相应于不同信息比特估计的竞争路径的最小delta值,得到软输出。
(具体可参看刘向东、向良军编著的《信道编码与matlab仿真》,除SOVA算法外里面还给出了Log_MAP算法)。
4、结论
在进行仿真时,发现上述两种衰落信道误码率基本都是50%左右,也就意味着基本上全部都是错的。
在进行了分析之后发现,在不加其他模块进行仿真的时候,光对比经过衰落信道前后的比特流基本就能错一半左右。
图5衰落信道下程序1仿真结果
图6仿真得出ber值
因无法仿真出较好的衰落信道,因此两个程序都放弃衰落信道改用加性高斯白噪声信道。
图7程序1结果
在16QAM调制信号时在-1dB便能达到接近
。
图8程序2结果
程序二是1/2码率,采用BPSK调制、sova译码算法,需要到9dB时,误码率大概能达到
量级。
两者程序出现如此大的结果差异,最主要的可能与Turbo译码方式相关。
成绩评定表
成
绩
评
定
项目
比例
得分
报告成绩(百分制)
20%
答辩成绩(百分制)
80%
总评成绩(百分制)
100%
评语:
评审教师:
时间:
注:
课题设计成绩评定表单独一页,装订在报告的最后
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Turbo 译码 算法 仿真 汇总