📄 readme.txt
字号:
1.本文件夹的函数实现ctc的编译码功能,仿真环境是matlab
2.共有10个.m文件
1)main
参数选择,生成随机数,编码,调制,加噪声,解调,译码,统计误码率
2)CtcEncoder
CtcCode=CtcEncoder(data,index)---Ctc总编码器
data是一个码块的信息,index是ctc的种类序号
返回编码结果CtcCode
3)ctcenc---ctc子编码器
[code,FinalState]=ctcenc(data,InitialState)
data:一个码块的信息部分
InitialState:编码器初始状态,第一次为0,第二次要在main里查表得到
返回编码结果code和编码器终止状态FinalState,其中,第一次的FinalState用来确定第二次的InitialState
第二次的编码结果code是需要的编码结果
4)CtcInterleaver
alpha=CtcInterleaver(data)
data是一个码块的信息
返回alpha是信息原始下标交织后的位置
5)trellis
state_map=trellis
返回trellis包括每个状态的下4个状态,前4个状态,以及这8个分支上的输入2比特和输出1比特.
因此state_map一行的长度是4+4+4*3+4*3=32
6)CtcDecoder
CtcDecode=CtcDecoder(CtcCode,niter,index,L1)
CtcCode是解调之后的数据乘以信道置信因子的结果,也就是main里的变量y
niter是迭代总数
index是是ctc的种类序号
L1是用于估计编码器状态的迭代次数
返回CtcDecode,是全部的译码结果
7)logmap
[L_all,start_state]=logmap(rec,state_map,L_a_1row,iter,start_state,L1)
rec是子译码器1或2的输入,是系统码及其校验或者交织码及其校验
state_map是网格图
L_a_1row是边信息
iter:当前第几轮迭代
start_state:估计的编码器状态
L1:用于估计编码器状态的迭代次数
8)dec2bin
d=dec2bin(i,k)
i是十进制数
k是它要被转为几位的二进制数
返回d是二进制表示
9,10)modulation/demodulation
3.运行main.m之后可以得到译码结果CtcDecode以及统计好的BER和PER
4.如果要配合c写的ctc译码程序使用,将main.m运完行y=0.5*L_c*DemoduResult;这一行终止,
将y写入noise.dat,将原始数据写入data.dat.把两个文件移到与码率匹配的ctc,ctc23,ctc34中的一个里即可
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -