diff --git a/csdr.c b/csdr.c index 7842726..98e3604 100755 --- a/csdr.c +++ b/csdr.c @@ -2523,8 +2523,8 @@ int main(int argc, char *argv[]) { if(argc<=2) return badsyntax("need required parameter (algorithm)"); timing_recovery_algorithm_t algorithm = timing_recovery_get_algorithm_from_string(argv[2]); - if(algorithm == TIMING_RECOVERY_ALGORITHM_DEFAULT) - fprintf(stderr,"#timing_recovery_cc: algorithm = %s\n",timing_recovery_get_string_from_algorithm(algorithm)); + //if(algorithm == TIMING_RECOVERY_ALGORITHM_DEFAULT) + // fprintf(stderr,"#timing_recovery_cc: algorithm = %s\n",timing_recovery_get_string_from_algorithm(algorithm)); if(argc<=3) return badsyntax("need required parameter (decimation factor)"); int decimation; sscanf(argv[3],"%d",&decimation); @@ -2533,12 +2533,12 @@ int main(int argc, char *argv[]) int add_q = (argc>=5 && !strcmp(argv[4], "--add_q")); int debug_n = 0; - int output_error = 0; + int output_error = 0; if(argc>=7 && !strcmp(argv[5], "--octave")) debug_n = atoi(argv[6]); if(debug_n<0) badsyntax("debug_n should be >= 0"); - if(argc>=6 && !strcmp(argv[5], "--output_error")) output_error = 1; - float* timing_error = NULL; - if(output_error) timing_error = (float*)malloc(sizeof(float)*the_bufsize); + if(argc>=6 && !strcmp(argv[5], "--output_error")) output_error = 1; + float* timing_error = NULL; + if(output_error) timing_error = (float*)malloc(sizeof(float)*the_bufsize); if(!initialize_buffers()) return -2; sendbufsize(the_bufsize/decimation); diff --git a/grc_tests/bpsk31_scurve.m b/grc_tests/bpsk31_scurve.m index dc0bab4..a1cfac2 100755 --- a/grc_tests/bpsk31_scurve.m +++ b/grc_tests/bpsk31_scurve.m @@ -20,31 +20,46 @@ function output=shrunf(cmd) until(feof(pout)) waitpid(pid); %kill(pid, SIGTERM); + fclose(pin); + fclose(pout); end -function error_value=run_tr(skip) - out_vect=shrunf(sprintf('dd bs=8 skip=%d if=bpsk31_baseband_sample_complex_8000_sps_010101.raw | csdr timing_recovery_cc EARLYLATE 256 --add_q --output_error',skip)); +function error_value=run_tr(skip, which_ted) + out_vect=shrunf(sprintf('dd bs=8 skip=%d if=bpsk31_baseband_sample_complex_8000_sps_010101.raw | csdr timing_recovery_cc %s 256 --add_q --output_error', skip, which_ted)); error_value=out_vect(2); end -skips=0:256; -error_values=[] -for skip=skips - error_values=[error_values run_tr(skip)]; +function error_values=mkscurve(which_ted, skips) + error_values=[] + for skip=skips + error_values=[error_values run_tr(skip, which_ted)]; + end end -error_values +function fmtplot(h) + FN = findall(h,'-property','FontName'); + set(FN,'FontName','/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed.ttf'); + set(FN,'FontName','times'); + FS = findall(h,'-property','FontSize'); + set(FS,'FontSize',18); + xlabel('Phase offset in number of samples'); + ylabel('Error value (TED output)'); +end + +skips_gardner=0:256 +error_values_gardner=mkscurve('GARDNER',skips_gardner); +skips_earlylate=0:256 +error_values_earlylate=mkscurve('EARLYLATE',skips_earlylate); %graphics_toolkit("gnuplot") h=figure(1); -plot(skips, error_values, 'linewidth', 2); -xlabel('Phase offset in number of samples'); -ylabel('Error value (TED output)'); - -FN = findall(h,'-property','FontName'); -set(FN,'FontName','/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed.ttf'); -set(FN,'FontName','times'); -FS = findall(h,'-property','FontSize'); -set(FS,'FontSize',18); +plot(skips_gardner, error_values_gardner, 'linewidth', 2); +title('S-curve for Gardner TED'); +fmtplot(h) +pause + +plot(skips_earlylate, error_values_earlylate, 'linewidth', 2); +title('S-curve for early-late TED'); +fmtplot(h) pause