viterbi算法
⑴ 译码的算法
viterbi译码算法是一种卷积码的解码算法。缺点就是随着约束长度的增加算法的复杂度增加很快。约束长度N为7时要比较的路径就有64条,为8时路径变为128条。(2<<(N-1))。所以viterbi译码一般应用在约束长度小于10的场合中。
算法规定t时刻收到的数据都要进行64次比较,就是64个状态每条路有两条分支(因为输入孝橡乎0或1),同时,跳传到不同巧悉的两个状态中去,将两条相应的输出和实际接收到的输出比较,量度值大的抛弃(也就是比较结果相差大的),留下来的就叫做幸存路径,将幸存路径加上上一时刻幸存路径的量度然后保存,这样64条幸存路径就增加了一步。在译码结束的时候,从64条幸存路径中选出一条量度最小的,反推出这条幸存路径(如销叫做回溯),得出相应的译码输出。
⑵ 谁能通俗的讲解下viterbi算法吗
我们来分析Viterbi 算法的复杂度: (n, k, N)卷积码的状态数为2k (N−1) ,对每一时刻要
做2k (N−1) 次“加-比-存”操作,每一操作包括2k 次加法和2k −1 次比较,同时要保留2k (N−1)
条幸存路径。由此可见,Viterbi 算法的复杂度与信道质量无关,其计算量和存储量都随约束
长度N 和信息元分组k 呈指数增长。因此,在约束长度和信息元分组较大时并不适用。
为了充分利用信道信息,提高卷积码译码的可靠性,可以采用软判决Viterbi 译码算法。
此时解调器不进行判决而是直接输出模拟量,或是将解调器输出波形进行多电平量化,而不
是简单的 0、1 两电平量化,然后送往译码器。即编码信道的输出是没有经过判决的“软信
息”。
⑶ 最通俗易懂的解说viterbi维特比算法!
这篇回答你绝对看得懂!如下图,假如你从S和E之间找一条最短的路径,除了遍历完所有路径,还有什么更好的方法?
答案:viterbi (维特比)算法。
过程非常简单:
为了找出S到E之间的最短路径,我们先从S开始从左到右一列一列地来看。
首先起点是S,从S到A列的路径有三种可能:S-A1、S-A2、S-A3,如下图:
我们不能武断的说S-A1、S-A2、S-A3中的哪一段必定是全局最短路径中的一部分,目前为止任何一段都有可能是全局最短路径的备选项。
我们继续往右看,到了B列。B列的B1、B2、B3逐个分析。
先看B1:
如上图,经过B1的所有路径只有3条:
S-A1-B1
S-A2-B1
S-A3-B1
以上这三条路径,我们肯定可以知道其中哪一条是最短的(把各路径每段距离加起来比较一下就知道哪条最短了)。假设S-A3-B1是最短的,那么我们就知道了经过B1的所有路径当中S-A3-B1是最短的,其它两条路径路径S-A1-B1和S-A2-B1都比S-A3-B1长,绝对不是目标答案,可以大胆地删掉了。删掉了不可能是答案的路径,就是viterbi算法(维特比算法)的重点,因为后面我们再也不用考虑这些被删掉的路径了。现在经过B1的所有路径只剩一条路敬纤径了,如下图亮扰仿:
接下来,我们继续看B2:
如上图,经过B2的路径有3条:
S-A1-B2
S-A2-B2
S-A3-B2
这三条路径中我们肯定也可以知道其中哪一条是最短的,假设S-A1-B2是最短的,那么我们就知道了经过B2的所有路径当中S-A1-B2是最短的,其它两条路径路径S-A2-B2和S-A3-B1也可以删掉了。经过B2所有路径只剩一条,如下图:
接下来我们继续看B3:
如上图,经过B3的路径也有3条:
S-A1-B3
S-A2-B3
S-A3-B3
这三条路径中我们也肯定可以知道其中哪一条是最短的,假设S-A2-B3是最短的,那么我们就知道了经过B3的所有路径当中S-A2-B3是最短的,其它两条路径路径S-A1-B3和S-A3-B3也可以删掉了。李者经过B3的所有路径只剩一条,如下图:
现在对于B列的所有节点我们都过了一遍,B列的每个节点我们都删除了一些不可能是答案的路径,看看我们剩下哪些备选的最短路径,如下图:
上图是我们我们删掉了其它不可能是最短路径的情况,留下了三个有可能是最短的路径:S-A3-B1、S-A1-B2、S-A2-B3。现在我们将这三条备选的路径汇总到下图:
S-A3-B1、S-A1-B2、S-A2-B3都有可能是全局的最短路径的备选路径,我们还没有足够的信息判断哪一条一定是全局最短路径的子路径。
如果我们你认为没毛病就继续往下看C列,如果不理解,回头再看一遍,前面的步骤决定你是否能看懂viterbi算法(维特比算法)。
接下来讲到C列了,类似上面说的B列,我们从C1、C2、C3一个个节点分析。
经过C1节点的路径有:
S-A3-B1-C1、
S-A1-B2-C1、
S-A2-B3-C1
和B列的做法一样,从这三条路径中找到最短的那条(假定是S-A3-B1-C1),其它两条路径同样道理可以删掉了。那么经过C1的所有路径只剩一条,如下图:
同理,我们可以找到经过C2和C3节点的最短路径,汇总一下:
到达C列时最终也只剩3条备选的最短路径,我们仍然没有足够信息断定哪条才是全局最短。
最后,我们继续看E节点,才能得出最后的结论。
到E的路径也只有3种可能性:
E点已经是终点了,我们稍微对比一下这三条路径的总长度就能知道哪条是最短路径了。
在效率方面相对于粗暴地遍历所有路径,viterbi 维特比算法到达每一列的时候都会删除不符合最短路径要求的路径,大大降低时间复杂度。
viterbi算法果然很简单吧!
抱歉,有时候将viterbi算法错写成了veterbi算法,而且为了给搜索引擎埋关键词,在不少地方强行加了不少维特比算法之类的关键词。
不管如何,如果看得懂就去左下角点个赞吧!
⑷ 如何用r语言编写viterbi算法
Viterbi译码算法是由Viterbi于1967年提出的一种最大似然译码办法,译码器根据接收序列R按最大似然准则力图找出正确的原始码序列。随着大规模集成电路技术的发展,采用Viterbi算法的卷积编码技术已成为广泛应用的纠错方案。Viterbi译码过程可用状态表示。Sj,t和Sj N/2,t表示t时刻的两个状态。在t1时刻,这两个状态值根据路径为0或者1,转移到状态S2j,t1和S2j1,t1。每一种可能的状态转移都根据接收到的有噪声的序列R计算路径度量,然后选择出各个状态的最小度量路径(幸存路径)。Viterbi算法就是通过在状态中寻找最小量路径向前回溯L步,最后得到的即为译码输出。
在卷积码(n,k,m)表示法中,参数k表示每次输入信息码位数,n表示编码的输出卷积码位数,m称为约束长度(一些书中采用k=m1为约束长度,也可称(2,1,2)码网格图,r=k/n称为信息率,即编码效率。本文运用的是(2,1,3)码,约速长度为2,状态数为22=-4。
TMS320C6000系列DSPs(数字信号处理器)是TI公司推出的一种并行处理的数字信号处理器,是基于TI的VLIW技术的。本文采用的是TMS320C6211。该处理器的工作频率经过倍频可达到150MHz,每个时钟周期最多可并行执行8条指令,从而可以实现1200MIPS定点运算能力。
⑸ 用matlab viterbi算法怎么求传输
[mlse_Eq.zip] - 含有已知信道下BPSK,QPSK,8PSK,16QAM的mlse均衡,MMSE(频域)均衡SER,BER性能的对比。
[wanzhengchengxu.rar] - 信号在信道进行传输时,经常会出现串扰,采用基于最大似然序列估计(mlse)的电子色散均衡器的方法,克服光纤通信中的由各种色散引起的码间干扰。 研究基于最大似然序列估计(MLSE)的均衡器,采用维特比算法实现,用matlab仿真出采用MLSE后的性能指标(眼图和误码率)的提升。
[TCMchengxu.rar] - matlab实现8PSK TCM网格编码调制,包含维特比译码和与未编码的QPSK误码性能比较
[OFDM_code.rar] - 本代码是关于OFDM通信系统的仿真源程序,其中信道编码,QPSK调制,QPSK解调,FFT,IFFT,viterbi编译码,误比特统计,滤波等模块。