2 / 2 / 4
Регистрация: 18.04.2013
Сообщений: 127
1

Сверточное декодирование Витерби работает некорректно

18.04.2015, 15:44. Показов 2184. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Нужна реализация сверточного декодирования Витерби. Кодирование я реализовал.
Но с декодированием возникли проблемы. Я реализовал его, оно декодирует сообщение, если оно передано без ошибок. Но когда вношу ошибки, то декодирует неправильно. Помогите пожалуйста. Срочно надо. Если есть исходники, поделитесь пожалуйста.
Вот кусок моего кода:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
public List<int> GetDecodedList(List<int> codedList) // codedList - закодированное сообщение
        {
            List<int> decodedList = new List<int>();
            int[] zeroSost = new[] { 0, 0, 0 }; // состояние регистра
            int[] oneSost = new[] { 0, 0, 0 }; // состояние регистра
            int[] sost = new int[] { 0, 0, 0 }; // состояние регистра
            int zeroSum = 0; // вес пути, когда передается 0
            int oneSum = 0; // вес пути, когда передается 1
 
            for (int i = 0; i < codedList.Count - 1; i += 2)
            {
                zeroSost = CloneMassiv(sost);
                oneSost = CloneMassiv(sost);
 
                zeroSum = GetSum(0, ref zeroSost, codedList, i);// вес пути, когда передается 0
                oneSum = GetSum(1, ref oneSost, codedList, i); // вес пути, когда передается 1
 
                if (zeroSum < oneSum)
                {
                    decodedList.Add(0);
                    sost = CloneMassiv(zeroSost);
                }
                else if (zeroSum > oneSum)
                {
                    decodedList.Add(1);
                    sost = CloneMassiv(oneSost);
                }
                else
                {
                    // ВОТ ЗДЕСЬ НЕ УВЕРЕН, ЧТО ПРАВИЛЬНО, НЕ ЗНАЮ КАК ЗДЕСЬ НАДО
                    int last = decodedList.LastOrDefault(); 
                    decodedList.Add(last);                      
                }
            }
 
            return decodedList;
        }
 
        private int[] CloneMassiv(int[] sost)
        {
            int[] massiv = new int[sost.Length];
            for (int i = 0; i < sost.Length; i++)
            {
                massiv[i] = sost[i];
            }
 
            return massiv;
        }
 
        public int GetSum(int symbol, ref int[] sost, List<int> codedList, int currentIndex)
        {
            int[] realExitValue = new int[2];
            int[] myExitValue = new int[2];
 
            realExitValue[0] = codedList[currentIndex];
            realExitValue[1] = codedList[currentIndex + 1];
 
            for (int i = sost.Length - 1; i > 0; i--)
            {
                sost[i] = sost[i - 1];
            }
            sost[0] = symbol;
 
            myExitValue[0] = sost[0] ^ sost[1] ^ sost[2];
            myExitValue[1] = sost[0] ^ sost[2];
 
            int sum = (myExitValue[0] ^ realExitValue[0]) + (myExitValue[1] ^ realExitValue[1]);
 
            return sum;
        }
Реализовываю по этой статье: http://sernam.ru/book_md.php?id=13
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2015, 15:44
Ответы с готовыми решениями:

Декодирование текста в приведенном коде работает некорректно
в конце не печатает s1 using System; using System.Collections.Generic; using System.Linq;...

Сверточное кодирование. Алгоритм Витерби
Никак не могу исправить ошибки в своей программе дипломного проекта. А сдавать уже очень скоро на...

Декодер Витерби
Здравствуйте. Написал декодер для сверточного кода памяти 2 и скорости 1/2 (5,7) на языке си....

Алгоритм Витерби
Нужно реализовать алгоритм свёрточного кодирования и алгоритм декодирования на основе ММП....

1
4 / 4 / 3
Регистрация: 28.11.2017
Сообщений: 107
07.06.2018, 22:39 2
Ты нашел ошибку??
0
07.06.2018, 22:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.06.2018, 22:39
Помогаю со студенческими работами здесь

Декодер Витерби
Доброе время суток! Интересует реализация алгоритма декодирования Витерби на Java. Нужно для...

Некорректно работает if
Здравствуйте. У меня проблема. Если я указываю такое условие: if ( (i != k) &amp;&amp; (j != l) ) то if...

Некорректно работает
Здравствуйте помогите пож-та с задачкой: Сформировать вещественный массив X1(N), N≤20,...

Do while работает некорректно
Не могу понять почему после умножения 2ух переменных я не могу ввести хочу ли я продолжить или нет....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru