summaryrefslogtreecommitdiff
path: root/viterbi_generator/tests/test_gen.m
diff options
context:
space:
mode:
Diffstat (limited to 'viterbi_generator/tests/test_gen.m')
-rwxr-xr-xviterbi_generator/tests/test_gen.m83
1 files changed, 83 insertions, 0 deletions
diff --git a/viterbi_generator/tests/test_gen.m b/viterbi_generator/tests/test_gen.m
new file mode 100755
index 0000000..a2639fb
--- /dev/null
+++ b/viterbi_generator/tests/test_gen.m
@@ -0,0 +1,83 @@
+#!/usr/bin/octave --silent
+
+addpath("./tests/utils");
+addpath("./utils");
+addpath("./utils/lower_utils");
+addpath("./utils/lower_utils/lower_utils");
+arg_list=argv();
+Lh=sscanf(arg_list{1}, "%d", "C");
+
+INCREMENT_NUM=2**(Lh-1);
+BRANCH_NUM=2**(Lh+1);
+PATHS_NUM=2**(Lh);
+
+load tests/data/rhh.dat;
+load tests/data/normal_burst.dat;
+
+[r BURST_SIZE] = size(normal_burst);
+
+SYMBOLS = make_symbols(Lh);
+START = make_start(Lh,SYMBOLS);
+STOP = make_stops(Lh,SYMBOLS);
+
+[increment, pm_candidates_imag, pm_candidates_real] = equations_gen(Lh);
+
+f_name="test";
+test_file = fopen([f_name '.cpp'],'w');
+
+print_matrix_type=sprintf(" printf(\"# name: path_metrics_test_result\\n# type: matrix\\n# rows: %d\\n# columns: %d\\n\");\n", BURST_SIZE, PATHS_NUM);;
+
+print_path_metrics=[ "\n\
+ for(i=0; i<" int2str(PATHS_NUM) "; i++){\n\
+ printf(\" %0.6f\", new_path_metrics[i]);\n\
+ }\n\
+ printf(\"\\n\");\n\n" ];
+
+viterbi_detector = viterbi_generator(Lh, print_matrix_type, print_path_metrics);
+
+fprintf(test_file, "\
+#include <stdio.h>\n", BURST_SIZE);
+
+fprintf(test_file, "%s", viterbi_detector);
+
+fprintf(test_file, [ "\
+int main()\n\
+{\n\
+ gr_complex rhh[" int2str(Lh+1) "];\n\
+ gr_complex input[BURST_SIZE];\n\
+ float output[BURST_SIZE];\n\
+ float path_metrics[" int2str(PATHS_NUM) "];\n\
+ unsigned int i;\n\n" ]);
+
+for i=1:Lh+1,
+ fprintf(test_file," rhh[%d] = gr_complex(%0.10f,%0.10f);\n",i-1, real(Rhh(i)), imag(Rhh(i)));
+end
+
+for i=1:BURST_SIZE,
+ fprintf(test_file," input[%d] = gr_complex(%0.10f,%0.10f);\n",i-1, real(normal_burst(i)), imag(normal_burst(i)));
+end
+
+[STOPS_NUM c] = size(STOP);
+
+stop_states=[" unsigned int stop_states[" int2str(STOPS_NUM) "] = { "];
+for i=1:STOPS_NUM,
+ stop_states=[ stop_states int2str(ceil(STOP(i)/2)-1) ", "];
+end
+stop_states=[ stop_states " };\n\n" ];
+
+fprintf(test_file, stop_states);
+
+fprintf(test_file, [" viterbi_detector(input, BURST_SIZE, rhh, " int2str(ceil(START/2)-1) ", stop_states, " int2str(STOPS_NUM) ", output);" ]);
+
+print_output=[ "\n\
+ printf(\"# name: output\\n# type: matrix\\n# rows: 1\\n# columns: " int2str(BURST_SIZE) "\\n\");\n\
+ for(i=0; i<BURST_SIZE ; i++){\n\
+ printf(\" %d\\n\", output[i]>0);\n\
+ }\n\
+ printf(\"\\n\");\n" ];
+
+fprintf(test_file, "%s", print_output);
+
+fprintf(test_file, "\n}\n");
+
+
personal git repositories of Harald Welte. Your mileage may vary