Algorithm 维特比块译码

Algorithm 维特比块译码,algorithm,matlab,encoding,viterbi,Algorithm,Matlab,Encoding,Viterbi,我不知道这是否适合这里,但这里是: 我有一些用a编码的噪声数据,我想用a解码它们 我做了家庭作业,因此我知道维特比块解码器是如何工作的,但我想避免完全由我自己实现,因为这将花费相当长的时间,可能是次优的 我的问题是:你知道维特比块解码器的matlab函数吗? 我发现了,但它只适用于卷积编码 同时,我尝试从编码器中检索尽可能多的信息,以防将来可能需要(请参阅下面的代码) 你真的能用维特比解码器解码汉明码吗?我从没听说过。你能给“维特比块解码器”贴一个链接吗?@LuisMendo我没有链接,但基本思

我不知道这是否适合这里,但这里是:

我有一些用a编码的噪声数据,我想用a解码它们

我做了家庭作业,因此我知道维特比块解码器是如何工作的,但我想避免完全由我自己实现,因为这将花费相当长的时间,可能是次优的

我的问题是:你知道维特比块解码器的matlab函数吗? 我发现了,但它只适用于卷积编码

同时,我尝试从编码器中检索尽可能多的信息,以防将来可能需要(请参阅下面的代码)


你真的能用维特比解码器解码汉明码吗?我从没听说过。你能给“维特比块解码器”贴一个链接吗?@LuisMendo我没有链接,但基本思想是使用维特比算法将软位字符串转换为硬位字符串,以0结尾,以0开始,然后使用常规技术解码。是的,但你如何定义代码格?维特比算法需要知道它应该在网格上预期哪些转换。也就是说,必须用具有特定约束长度的等效卷积码来表示块码。你确定可以做到吗?除非原始块码具有某些属性,否则我认为等效卷积码的约束长度将非常大,维特比解码器的复杂性也将非常大。@LuisMendo我找不到在线资源,但这是我对网格的公式。如果
H
是形式为
[P.'I]
H(t)
的奇偶校验矩阵,则
H
t
S(t)
状态和
b(t)
位,然后:
S(t)=S(t-1)XOR b(t)*H(t)
% Parameters
codewordLength = 31;
messageLength = 26;
data = randi([0, 1], 1, messageLength);

% Encoder 1
encoder1 = comm.BCHEncoder(...
    'CodewordLength', codewordLength, ...
    'MessageLength', messageLength);

% Encoder 2
M = ceil(log2(codewordLength+1));
primitivePolynomialDe = primpoly(M, 'nodisplay');
primitivePolynomialBi = fliplr(de2bi(primitivePolynomialDe));
SL = (2^M-1) - codewordLength;
generatorPolynomial = bchgenpoly(codewordLength + SL, ...
    messageLength + SL, primitivePolynomialDe);
encoder2 = comm.BCHEncoder(...
    'CodewordLength', codewordLength, ...
    'MessageLength', messageLength, ...
    'PrimitivePolynomialSource', 'Property', ...
    'PrimitivePolynomial', primitivePolynomialBi, ...
    'GeneratorPolynomialSource', 'Property', ...
    'GeneratorPolynomial', generatorPolynomial);



dataEncoded1 = step(encoder1, data.').';
dataEncoded2 = step(encoder2, data.').';

sum(dataEncoded1~=dataEncoded2)