维特比解码器的MATLAB源代码
本节涵盖MATLAB源代码维特比解码器matlab代码包括约束长度为5的卷积编码器的维特比解码器规格。给出了维特比解码器matlab代码的代码段和开发步骤。
卷积编码器的规格
卷积编码器(3,1,4)规格
编码率:1/3
约束长度:5
输出位长:3
消息位长:1
最大内存顺序/个数。内存元素= 4
生成器多项式:25 (8),33 (8),37 (8)
维特比解码器规格
码字长度:20
编码率:1/3
约束长度:5
回溯长度:20
量化级别:两个(硬决策类型)
多项式:25 (8),33 (8),37 (8)
这个viterbi是为上述卷积编码器规格而设计的。请参考卷积编码器基础知识而且卷积编码器的matlab代码.
维特比解码器MATLAB代码步骤
将接收到的编码序列的连续三位连接到
编一个符号。
step 2:用于回溯跟踪的转换表。
步骤3:计算输入长度和循环FOR NUMBER of TIME单位。
步骤4:检查冗余状态
编一个符号。
step 2:用于回溯跟踪的转换表。
步骤3:计算输入长度和循环FOR NUMBER of TIME单位。
步骤4:检查冗余状态
维特比解码器MATLAB代码
下面是维特比部分解码器的matlab代码。
函数[dec_op] = viterbi_decoder(收到过)
将接收到的编码序列的连续三位连接到
编一个符号
输入= [];
j = 1:3:长度(收到过)
输入=[输入(接到(j) * 2 ^ 2) +(受到(j + 1) * 2 ^ 1) +(接到(j + 2) * 2 ^ 0));
结束
初始化输出表
Output_Table =[…
0 0 7;...
1 70 0;...
2 3 4;...
3 4 3;...
4 5 2;...
5 2 5;...
6 6 1;...
7 1 6;...
7 3 4;...
8 4 3;...
9 0 7;...
10 7 0;...
11 6 1;...
12 16 6;...
13 5 2;...
14 2 5];
初始化下一状态(输出状态)表
Next_State =[…]
0 0 8;...
10 0 8;...
2 19 9;...
3 19 9;...
4 2 10;...
5 2 10;...
6 3 11;...
7 3 11;...
8 4 12;...
9 4 12;...
10 5 13;...
11 5 13;...
12 6 14;...
13 6 14;...
14 7 15;...
15 7 15];
将接收到的编码序列的连续三位连接到
编一个符号
输入= [];
j = 1:3:长度(收到过)
输入=[输入(接到(j) * 2 ^ 2) +(受到(j + 1) * 2 ^ 1) +(接到(j + 2) * 2 ^ 0));
结束
初始化输出表
Output_Table =[…
0 0 7;...
1 70 0;...
2 3 4;...
3 4 3;...
4 5 2;...
5 2 5;...
6 6 1;...
7 1 6;...
7 3 4;...
8 4 3;...
9 0 7;...
10 7 0;...
11 6 1;...
12 16 6;...
13 5 2;...
14 2 5];
初始化下一状态(输出状态)表
Next_State =[…]
0 0 8;...
10 0 8;...
2 19 9;...
3 19 9;...
4 2 10;...
5 2 10;...
6 3 11;...
7 3 11;...
8 4 12;...
9 4 12;...
10 5 13;...
11 5 13;...
12 6 14;...
13 6 14;...
14 7 15;...
15 7 15];
%%%%%%%%%%%%%%%%%%%
t r a c e - b a c k
%%%%%%%%%%%%%%%%%%%
SLM = min(aem(:, 21));
Slm_loc =find(aem(:, 21)==slm);
Sseq (21) = (slm_loc(1)-1);
t = 20: 1:1
sseq(t) = State_Hist(sseq(t+1) +1,t+1);
结束
dec_op = [];
当k = 1:20时
dec_op (k) = Transition_Table (sseq (k) + 1, sseq (k + 1 + 1);
结束
t r a c e - b a c k
%%%%%%%%%%%%%%%%%%%
SLM = min(aem(:, 21));
Slm_loc =find(aem(:, 21)==slm);
Sseq (21) = (slm_loc(1)-1);
t = 20: 1:1
sseq(t) = State_Hist(sseq(t+1) +1,t+1);
结束
dec_op = [];
当k = 1:20时
dec_op (k) = Transition_Table (sseq (k) + 1, sseq (k + 1 + 1);
结束
相关链接
注册及下载以下论文:
https://www.academia.edu/5406231/
Design_and_Implementation_of_Convolution_Encoder_with_Viterbi_Decoder
https://apt.cs.manchester.ac.uk/ftp/pub/apt/theses/Shao07_phd.pdf
MATLAB代码的有用链接
参考以下以及左边面板上提到的链接,以获得有用的MATLAB代码。
OFDM前导信号的产生时间偏差估计频率估计信道估计11a WLAN信道PN序列生成OFDMA Tx RxAES DES载波聚合CCDF冷杉过滤器IIR滤波器低通FIR维特比译码器CRC8 CRC32
射频和无线教程
无线局域网802.11交流802.11广告wimax无线个域网z - waveGSMLTEUMTS蓝牙超宽频物联网卫星天线雷达