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
--- /dev/null
+% 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
+