精华内容
下载资源
问答
  • viterbi算法

    2015-05-08 20:45:53
    viterbi decode matlab代码; 包括自己实现的matlat viterbi 译码和调用matlab内部模块的代码
  • 代码中有示例,来自李航《统计学习方法》function [Delta,Psi,P,I] = Viterbi(A,B,Pi,O)% 函数功能:利用维特比算法找到观测序列O的最优路径%% 参考文献:李航《统计学习方法》%% 思路:% 1,初始化% delta_1(i) = ...

    维特比算法实际是用动态规划求解隐马尔可夫模型解码问题,即用动态规划求概率最大路径(最优路径)。代码中有示例,来自李航《统计学习方法》

    function [Delta,Psi,P,I] = Viterbi(A,B,Pi,O)

    % 函数功能:利用维特比算法找到观测序列O的最优路径

    %

    % 参考文献:李航《统计学习方法》

    %

    % 思路:

    % 1,初始化

    % delta_1(i) = Pi_i * b_i(o1), i = 1,2,...,N

    % psi_1(i) = o, i = 1,2,...,N

    % 2,递推,对于t = 2,3,...,T

    % delta_t(i) = max_1-from-1-to-N(delta_t-1(j) * a_ji) * b_i(ot), i = 1,2,...,N

    % psi_t(i) = arg max_1-from-1-to-N(delta_t-1(j) * a_ji), i = 1,2,...,N

    % 3,终止

    % 最优路径概率P* = max_1-from-1-to-N(delta_T(i))

    % 最优路径终点i*_T = arg max_1-from-1-to-N(delta_T(i))

    % 4,最优路径回溯,对于t = T-1,T-2,...,1

    % i*_t = psi_t+1(i*_t+1)

    % 最优路径I* = (i*_1,i*_2,...,i*_T)

    % 【提示:“思路”中的i,j和本程序中的i,j不存在对应关系,只是方便理解原理】

    %

    % 输入:模型参数A,B,Pi,观测序列O

    % 输出:Delta矩阵:在时刻t状态为i的所有单个路径中概率最大值构成的矩阵,

    % 为N*K阶,即行数表示状态数,列数表示时刻。

    % Psi矩阵:在时刻t状态为i的所有单个路径中概率最大路径的第t-1个结点构成的矩阵,

    % 为N*K阶,即行数表示状态数,列数表示时刻。且第一列为0。

    % P:观测序列O的最优路径概率。

    % I:观测序列O的最优路径。

    %

    % 示例:(李航《统计学习方法》P186例10.3)

    % 输入

    % A =

    % 0.5000 0.2000 0.3000

    % 0.3000 0.5000 0.2000

    % 0.2000 0.3000 0.5000

    % B =

    % 0.5000 0.5000

    % 0.4000 0.6000

    % 0.7000 0.3000

    % Pi =

    % 0.2000

    % 0.4000

    % 0.4000

    % O1 =

    % 1

    % 2

    % 1

    % 输出:

    % >>[D,Psi,P,I] = Viterbi(A,B,Pi,O1)

    % D =

    % 0.1000 0.0280 0.0076

    % 0.1600 0.0504 0.0101

    % 0.2800 0.0420 0.0147

    % Psi =

    % 0 3 2

    % 0 3 2

    % 0 3 3

    % P =

    % 0.0147

    % I =

    % 3

    % 3

    % 3

    A_size = size(A);

    O_size = size(O);

    N = A_size(1,1);%状态集个数

    M = A_size(1,2);

    K = O_size(1,1);

    % 计算Delta矩阵第一列值

    Delta = zeros();

    for i = 1:M

    Delta(i,1) = Pi(i) * B(i,O(1,1));

    end

    % 递推计算Delta矩阵剩下值

    Delta_j = zeros();

    Psi = zeros();

    Psi(:,1) = 0;

    for t = 2:K

    for j = 1:N

    for i = 1:M

    Delta_j(i,1) = Delta(i,t-1) * A(i,j) * B(j,O(t,1));

    end

    [max_delta_j,psi] = max(Delta_j); %找到概率最大值

    Psi(j,t) = psi; %放置Psi矩阵

    Delta(j,t) = max_delta_j; %放置Delta矩阵

    end

    end

    [P_better,psi_k] = max(Delta(:,K));

    P = P_better; % 最优路径概率

    I = zeros();

    I(K,1) = psi_k;

    for t = K-1:-1:1

    I(t,1) = Psi(I(t+1,1),t+1); %路径回溯得到最优路径

    end

    展开全文
  • 程序下载链接:代码传统Viterbi译码算法只保留一条最佳路径, 该算法指出当进入每一状态的最佳路径与进入该状态的第二条最佳路径“太近”时就发出重传该帧的请求。但是他们都没有利用第二条最佳路径、第三条最佳路径...

    程序下载链接:代码

    传统Viterbi译码算法只保留一条最佳路径, 该算法指出当进入每一状态的最佳路径与进入该状态的第二条最佳路径“太近”时就发出重传该帧的请求。但是他们都没有利用第二条最佳路径、第三条最佳路径等的信息来进行译码。

    列表式的 Viterbi 译码算法提出保留多条最佳路径,然后通过CRC判断这些最佳路径是不是对,若CRC错误,则删除当前路径,然后选择第二条最佳路径。如下图所示

    a. 计算沿第l 条最佳路径的度量差值并存储在 AbsoluteDiff 的相应位置。

    b. 在 AbsoluteDiff 分别找前l 行的最小的值并将其时刻存储在 MergeTime 中, 并分别计算穿过该时刻的候选路径的累积路径度量。

    c. 在 b 中所求的l 个候选路径的累积路径度量中选择度量最大的路径即为第l +1个最佳路径,设该路径为l′,在 MergeTime( l′ )和 MergeTime( l )中存储汇合时刻。

    d. 将相应候选路径的相应汇入点扣除(即设相应 AbsoluteDiff 为无穷大)。

    9aab1289302f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    9aab1289302f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    展开全文
  • Matlab实现Viterbi译码

    2021-04-22 12:54:23
    viterbi译码算法是一种卷积码的解码算法。优点不说了。缺点就是随着约束长度的增加算法的复杂度增加很快。约束长度N为7时要比较的路径就有64条,为8时路径变为128条。 (2<先说编码(举例约束长度为7):编码器7个...

    viterbi译码算法是一种卷积码的解码算法。优点不说了。缺点就是随着约束长度的增加算法的复杂度增加很快。约束长度N为7时要比较的路径就有64条,为8时路径变为128条。 (2<

    先说编码(举例约束长度为7):编码器7个延迟器的状态(0,1)组成了整个编码器的64个状态。每个状态在编码器输入0或1时,会跳转到另一个之中。比如110100输入1时,变成101001(其实就是移位寄存器)。并且输出也是随之而改变的。

    这样解码的过程就是逆过程。算法规定t时刻收到的数据都要进行64次比较,就是64个状态每条路有两条分支(因为输入0或1),同时,跳传到不同的两个状态中去,将两条相应的输出和实际接收到的输出比较,量度值大的抛弃(也就是比较结果相差大的),留下来的就叫做幸存路径,将幸存路径加上上一时刻幸存路径的量度然后保存,这样64条幸存路径就增加了一步。在译码结束的时候,从64条幸存路径中选出一条量度最小的,反推出这条幸存路径(叫做回溯),得出相应的译码输出。

    调制方法:BPSK

    信道:channel

    G(D)=[1+D^2, 1+D+D^2]

    展开全文
  • Forward Viterbi AlgorithmForward Viterbi algorithm based on the Python code found at: ...

    Forward Viterbi Algorithm

    Forward Viterbi algorithm based on the Python code found at: http://en.wikipedia.org/wiki/Viterbi_algorithm

    Also included is an example based on the one from the Wikipedia page for a simple 2-state model with 4 observations. To paraphrase:

    Bob tells Alice his daily activities (observations) and Alice wants to determine the most likely weather each day (states). Since Alice lives far away, the weather is unknown to her (hidden). Assuming that the states behave as a Markov process, and the observations have a statistical dependency on the states, the Viterbi algorithm can find the most likely weather pattern (path).

    More information can be found at:

    http://en.wikipedia.org/wiki/Viterbi_algorithm

    展开全文
  • 2 维特比译码原理Viterbi译码是卷积码的最大似然译码算法,是一种实用化的概率算法。它的基本思想是把已接收序列与所有可能的发送序列作比较,选择其中码距最小的一个序列作为发送序列。从图2的卷积码网格图可以看出...
  • 讨论Viterbi算法在最大似然序列检测中的实现。先给出带宽受限,存在失真且先验未知以及具有AWGN条件下信道的一种数学模型。由此得到Viterbi算法在最大似然序列检测中的表示形式,且根据其在此信道模型下的算法描述,...
  • 软输入软输出维特比算法 (SOVA) 解码器的实现。 该实现假设有限长度的网格窗口可用于前向和后向递归。 因此,它非常类似于 SOVA 解码器的硬件实现。 注意:在 MATLAB R13 上的最佳性能! (另请检查: ...
  • viterbimatlab代码

    2019-09-02 13:36:22
    发一个viterbimatlab代码 Matlab viterbi.rar 4.95 KB,
  • Viterbi-Algorithm(维特比)算法

    万次阅读 2018-07-08 16:39:01
    Viterbi-Algorithm算法 维特比算法是一个特殊但应用最广的动态规划算法。利用动态规划,可以解决任何一个图中的最短路径问题。而维特比算法是针对一个特殊的图-篱笆网了(Lattice)的有向图最短路径问题而提出来的...
  • 基于 Python 代码的前向 Viterbi 算法位于: http : //en.wikipedia.org/wiki/Viterbi_algorithm 还包括一个基于 Wikipedia 页面的示例,该示例用于具有 4 个观察值的简单 2 状态模型。 转述: 鲍勃告诉爱丽丝他的...
  • matlab实现bsc代码viterbiSim 在Matlab中模拟Viterbi算法。 作者:Bhargey Mehta Uni:古吉拉特邦DA-IICT 该项目是CT111课程的一部分(通信系统简介)。 目的是实现用于信道编码的维特比算法,并研究在BSC信道中噪声...
  • 列表式的 Viterbi 译码算法 Matlab实现-附件资源
  • Viterbimatlab程序

    2010-11-11 21:41:21
    卷积码的编码和译码matlab程序,其中译码方法是Viterbi
  • HMM viterbi 算法

    2019-05-09 09:24:33
    好久没更新了,写了一个 viterbi 算法,主要是加深理解哈 # coding=utf-8 """ 首先通过语料库计算出 HMM 的三要素: 初始状态π 状态转移矩阵 A 发射矩阵 B 然后用 Viterbi 算法进行切词操作 """ TRAIN_CORPUS = ...
  • 对《通信原理》第七版(3,1,3)卷积码,进行维特比译码,适合参考。
  • Viterbi解码器算法实现 维特比算法作为卷积码的最大似然(ML)解码技术而闻名。 (n,k,m)维特比解码器中的路径存储单元负责跟踪与由路径度量单元指定的尚存路径相关联的信息位。 二进制卷积码由三元组(n,k,m...
  • Viterbi解码器的实现程序要求输入1位(nc),代码长度(l),约束长度(kc),要添加到编码后的代码字的错误数,然后程序生成给定长度的随机比特序列,使用随机生成多项式对生成多项式进行编码,将误差添加到编码...
  • 经过验证。已经得到确认是可行的代码。而且简单。高效。是做论文的好帮手。
  • 运行combined_gui 选择技术并说“执行” 相应地执行后续步骤
  • matlab实现卷积编码与viterbi译码

    千次阅读 多人点赞 2020-04-08 13:30:32
    1.仿真代码 clear all EbN0 = 0:2:10; %SNR范围 N = 1000000; %消息比特个数 M = 2; %BPSK调制 ...tre1 = poly2trellis(L,[171 133]);... %Viterbi译码器回溯深度 msg = randi([0,1],1,N); %消息比特序列 msg1...
  • 参考资料:参见 K Vasudevan 所著“数字通信和信号处理”一书中的第 5.2 节
  • matlab实现的维特比译码,已用数字通信第二版实例验证通过
  • Viterbi译码及matlab代码(二)

    万次阅读 2017-04-21 16:10:11
    2、算法 每一步:用前一状态的幸存路径(Fa,Fb,Fc,Fd)和本步的分支路径(S0,S1,S2,S3)计算出到达每个状态的累计度量, 保留幸存路径,从第一步开始执行此过程,到最后一步得到最优路径复杂度。 每步需要比较8条路径...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 407
精华内容 162
关键字:

viterbi算法的matlab实现

matlab 订阅