From 2ca60c0c4c649846dc7ff31668e080875eed6cec Mon Sep 17 00:00:00 2001 From: drowe67 Date: Wed, 14 Sep 2016 09:57:13 +0000 Subject: [PATCH] llr calculations in C, modified Octave to use bit exact procedure git-svn-id: https://svn.code.sf.net/p/freetel/code@2862 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/src/ldpc_dec.c | 51 ++++++++++++++++++++++++++++++++++++--- codec2-dev/src/ldpc_enc.c | 2 ++ 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/codec2-dev/src/ldpc_dec.c b/codec2-dev/src/ldpc_dec.c index 70af95a9..ec1c5286 100644 --- a/codec2-dev/src/ldpc_dec.c +++ b/codec2-dev/src/ldpc_dec.c @@ -66,7 +66,12 @@ int main(int argc, char *argv[]) if (argc < 2) { fprintf(stderr, "usage: %s --test\n", argv[0]); - fprintf(stderr, "usage: %s InOneSDSymbolPerDouble OutOneBitPerByte\n", argv[0]); + fprintf(stderr, " Run internal self test and print code parameters.\n\n"); + fprintf(stderr, "usage: %s InOneSymbolPerDouble OutOneBitPerByte [--sdinput]\n", argv[0]); + fprintf(stderr, " InOneSymbolPerDouble is a file of double LLRs. If the\n"); + fprintf(stderr, " --sd flag is used the input file can be Soft Decision\n"); + fprintf(stderr, " symbols, and LLRs will be calculated internally. Use -\n"); + fprintf(stderr, " for the file names to use stdin/stdout.\n"); exit(0); } @@ -81,7 +86,7 @@ int main(int argc, char *argv[]) fprintf(stderr, "Codeword length: %d\n", CodeLength); fprintf(stderr, "Parity Bits....: %d\n", NumberParityBits); - num_runs = 1; num_ok = 0; + num_runs = 100; num_ok = 0; for(r=0; r 0.0) - (input_double[i] < 0.0); + x = (input_double[i] - sign); + sum += x; + sumsq += x*x; + } + mean = sum/CodeLength; + estvar = sumsq/CodeLength - mean*mean; + + estEsN0 = 1.0/(2.0 * estvar + 1E-3); + for(i=0; i -- 2.25.1