break LDPC code->headerfile func out of ldpc_fsk_lib.m
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sat, 18 Mar 2017 06:11:45 +0000 (06:11 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Sat, 18 Mar 2017 06:11:45 +0000 (06:11 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@3068 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/octave/ldpc_fsk_lib.m
codec2-dev/octave/ldpc_gen_h_file.m [new file with mode: 0644]

index a47169dc798707c644cbcdeebfae304e225dfd0e..661758da9d6054ce2f8a60538f7dbd3f025dec54 100644 (file)
@@ -177,81 +177,11 @@ function [detected_data Niters] = ldpc_decode(r, code_param, max_iterations, dec
   detected_data = x_hat(Niters,:);\r
   \r
   if isfield(code_param, "c_include_file")\r
-    write_code_to_C_include_file(code_param, max_iterations, decoder_type, llr, x_hat, detected_data);\r
+    ldpc_gen_h_file(code_param, max_iterations, decoder_type, llr, x_hat, detected_data);\r
   end\r
 end\r
 \r
 \r
-% optionally create a C include file for use in mpdecode.c C cmd line LDPC decoder\r
-\r
-function write_code_to_C_include_file(code_param, max_iterations, decoder_type, input_decoder_c, x_hat, detected_data)\r
-       \r
-  f = fopen(code_param.c_include_file, "wt");\r
-\r
-  fprintf(f, "/*\n  FILE....: %s\n\n  Static arrays for TRC HF modem, generated", code_param.c_include_file);\r
-  fprintf(f, "\n  by test_ldpc_fsk.m:simple_ut().\n\n*/\n\n");\r
-   \r
-  fprintf(f,"#define NUMBERPARITYBITS %d\n", rows(code_param.H_rows));\r
-  fprintf(f,"#define MAX_ROW_WEIGHT %d\n", columns(code_param.H_rows));\r
-  fprintf(f,"#define CODELENGTH %d\n", code_param.symbols_per_frame);\r
-  fprintf(f,"#define NUMBERROWSHCOLS %d\n", rows(code_param.H_cols));\r
-  fprintf(f,"#define MAX_COL_WEIGHT %d\n", columns(code_param.H_cols));\r
-  fprintf(f,"#define DEC_TYPE %d\n", decoder_type);\r
-  fprintf(f,"#define MAX_ITER %d\n", max_iterations);\r
-\r
-  fprintf(f,"\ndouble H_rows[] = {\n");\r
-     \r
-  % clock out 2D array to linear C array in row order ....\r
-\r
-  [r c] = size(code_param.H_rows);\r
-  for j=1:c\r
-    for i=1:r\r
-      fprintf(f, "%d", code_param.H_rows(i,j));\r
-      if (i == r) && (j ==c)\r
-        fprintf(f,"\n};\n");\r
-      else\r
-        fprintf(f,", ");\r
-      end\r
-    end\r
-  end\r
-\r
-  fprintf(f,"\ndouble H_cols[] = {\n");\r
-  [r c] = size(code_param.H_cols);\r
-  for j=1:c\r
-    for i=1:r\r
-      fprintf(f, "%d", code_param.H_cols(i,j));\r
-      if (i == r) && (j == c)\r
-        fprintf(f,"\n};\n");\r
-      else\r
-        fprintf(f,", ");\r
-      end\r
-    end\r
-  end\r
-\r
-  fprintf(f,"\ndouble input[] = {\n");\r
-  for i=1:length(input_decoder_c)\r
-    fprintf(f, "%.17g", input_decoder_c(i));\r
-    if i == length(input_decoder_c)\r
-      fprintf(f,"\n};\n");\r
-    else\r
-      fprintf(f,", ");            \r
-    end\r
-  end\r
-\r
-  fprintf(f,"\nchar detected_data[] = {\n");\r
-  for i=1:length(detected_data)\r
-    fprintf(f, "%d", detected_data(i));\r
-    if i == length(detected_data)\r
-      fprintf(f,"\n};\n");\r
-    else\r
-      fprintf(f,", ");            \r
-    end\r
-  end\r
-\r
-  fclose(f);\r
-end\r
-\r
-\r
 % One application of FSK LDPC work is SSTV.  This function generates a\r
 % simulated frame for testing\r
 \r
diff --git a/codec2-dev/octave/ldpc_gen_h_file.m b/codec2-dev/octave/ldpc_gen_h_file.m
new file mode 100644 (file)
index 0000000..663019e
--- /dev/null
@@ -0,0 +1,72 @@
+% ldpc_gen_h_file.m
+% David Rowe Sep 2015
+%
+% Create a C include file for use in mpdecode.c C cmd line LDPC decoder
+
+function ldpc_gen_h_file(code_param, max_iterations, decoder_type, input_decoder_c, x_hat, detected_data)
+       
+  f = fopen(code_param.c_include_file, "wt");
+
+  fprintf(f, "/*\n  FILE....: %s\n\n  Static arrays for TRC HF modem, generated", code_param.c_include_file);
+  fprintf(f, "\n  ldpc_gen_h_file.m.\n\n*/\n\n");
+   
+  fprintf(f,"#define NUMBERPARITYBITS %d\n", rows(code_param.H_rows));
+  fprintf(f,"#define MAX_ROW_WEIGHT %d\n", columns(code_param.H_rows));
+  fprintf(f,"#define CODELENGTH %d\n", code_param.symbols_per_frame);
+  fprintf(f,"#define NUMBERROWSHCOLS %d\n", rows(code_param.H_cols));
+  fprintf(f,"#define MAX_COL_WEIGHT %d\n", columns(code_param.H_cols));
+  fprintf(f,"#define DEC_TYPE %d\n", decoder_type);
+  fprintf(f,"#define MAX_ITER %d\n", max_iterations);
+
+  fprintf(f,"\ndouble H_rows[] = {\n");
+     
+  % clock out 2D array to linear C array in row order ....
+
+  [r c] = size(code_param.H_rows);
+  for j=1:c
+    for i=1:r
+      fprintf(f, "%d", code_param.H_rows(i,j));
+      if (i == r) && (j ==c)
+        fprintf(f,"\n};\n");
+      else
+        fprintf(f,", ");
+      end
+    end
+  end
+
+  fprintf(f,"\ndouble H_cols[] = {\n");
+  [r c] = size(code_param.H_cols);
+  for j=1:c
+    for i=1:r
+      fprintf(f, "%d", code_param.H_cols(i,j));
+      if (i == r) && (j == c)
+        fprintf(f,"\n};\n");
+      else
+        fprintf(f,", ");
+      end
+    end
+  end
+
+  fprintf(f,"\ndouble input[] = {\n");
+  for i=1:length(input_decoder_c)
+    fprintf(f, "%.17g", input_decoder_c(i));
+    if i == length(input_decoder_c)
+      fprintf(f,"\n};\n");
+    else
+      fprintf(f,", ");            
+    end
+  end
+
+  fprintf(f,"\nchar detected_data[] = {\n");
+  for i=1:length(detected_data)
+    fprintf(f, "%d", detected_data(i));
+    if i == length(detected_data)
+      fprintf(f,"\n};\n");
+    else
+      fprintf(f,", ");            
+    end
+  end
+
+  fclose(f);
+end
+