Как использовать декодер Viterbi из Radio Library GNUC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать декодер Viterbi из Radio Library GNU

Сообщение Anonymous »

мне нужно сделать декодирование Витерби какого-то сверточного кодируемого сигнала. Мое приложение должно работать с большими файлами, поэтому я не могу вставить весь сигнал в кучу, поэтому мне нужно обрабатывать данные последовательно отдельных буферов. Я нашел хорошую библиотеку для декодирования Viterbi - Encoder и декодер Viterbi в C ++ на DR. Доббс . Я применил декодер из Libarary, он работает правильно, но не обеспечивает функцию для постоянного использования (вызовите функцию много раз для каждого буфера сигнала с учетом предыдущих расчетов). Затем я нашел библиотеку Radio C ++, которая обеспечивает необходимые функции. Но я не понимаю, как использовать его функции, потому что это не предоставляет документацию. Он содержит пример декодирования Витерби, с помощью приведенного ниже: < /p>

extern "C" {
#include
}

#include
#include

#define MAXCHUNKSIZE 4096
#define MAXENCSIZE MAXCHUNKSIZE*16

int main()
{
unsigned char data[MAXCHUNKSIZE];
signed char syms[MAXENCSIZE];
int count = 0;

// Initialize metric table
int mettab[2][256];
int amp = 100; // What is it? ***
float RATE=0.5;
float ebn0 = 12.0;
float esn0 = RATE*pow(10.0, ebn0/10);
gen_met(mettab, amp, esn0, 0.0, 4);

// Initialize decoder state
struct viterbi_state state0[64];
struct viterbi_state state1[64];
unsigned char viterbi_in[16];
viterbi_chunks_init(state0);

while (!feof(stdin)) {
unsigned int n = fread(syms, 1, MAXENCSIZE, stdin);
unsigned char *out = data;

for (unsigned int i = 0; i < n; i++) {

// FIXME: This implements hard decoding by slicing the input stream
unsigned char sym = syms > 0 ? -amp : amp; // What is it? ***

// Write the symbol to the decoder input
viterbi_in[count % 4] = sym;

// Every four symbols, perform the butterfly2 operation
if ((count % 4) == 3) {
viterbi_butterfly2(viterbi_in, mettab, state0, state1);

// Every sixteen symbols, perform the readback operation
if ((count > 64) && (count % 16) == 11) {
viterbi_get_output(state0, out);
fwrite(out++, 1, 1, stdout);
}
}

count++;
}
}

return 0;
}
< /code>

file viterbi.c из него также содержит следующую функцию viterbi () < /code>, без объявления: < /p>

/* Viterbi decoder */
int viterbi(unsigned long *metric, /* Final path metric (returned value) */
unsigned char *data, /* Decoded output data */
unsigned char *symbols, /* Raw deinterleaved input symbols */
unsigned int nbits, /* Number of output bits */
int mettab[2][256] /* Metric table, [sent sym][rx symbol] */
) { ...
< /code>

Также я нашел еще одну реализацию для декодирования Viterbi - спиральный проект. Но это также не содержит нормального описания и не хочет компилировать. И еще две реализации в библиотеке DSP ExpertCore и Forward Firom. сигнал)?

Подробнее здесь: https://stackoverflow.com/questions/418 ... io-library
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ссылка GNU Radio Companion на библиотеку/папку Python?
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Ссылка GNU Radio Companion на библиотеку/папку Python?
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Добавление свойства в модуль GNU Radio OOT
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Нужна помощь в использовании прогноза () и General_work () в GNU Radio 3.10 в C ++
    Гость » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Гость
  • GNU Radio + RFNOC FIR Filter: блокируемые соединения остаются красными, несмотря на совпадающие типы USRP X410
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»