resurrecting fdmdv tests to trace sample slip problem in FreeDV GUI
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Wed, 2 May 2018 00:45:11 +0000 (00:45 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Wed, 2 May 2018 00:45:11 +0000 (00:45 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@3552 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/octave/fdmdv.m
codec2-dev/octave/fdmdv_demod_c.m
codec2-dev/octave/ofdm_ldpc_rx.m
codec2-dev/octave/plot_specgram.m

index a7965b33f5a5e8e62e1783c7a0aefa6d892bc9f4..bed5df7a4702a7c244941625cc20c168f0044a50 100644 (file)
@@ -840,7 +840,7 @@ function [sync bit_errors error_pattern f] = put_test_bits(f, test_bits, rx_bits
   % Append to our memory
 
   [m n] = size(rx_bits);
-  f.rx_test_bits_mem(1:f.Ntest_bits-n) = freedv.rx_test_bits_mem(n+1:f.Ntest_bits);
+  f.rx_test_bits_mem(1:f.Ntest_bits-n) = f.rx_test_bits_mem(n+1:f.Ntest_bits);
   f.rx_test_bits_mem(f.Ntest_bits-n+1:f.Ntest_bits) = rx_bits;
 
   % see how many bit errors we get when checked against test sequence
index b5c75334fc2a0220ef656bf7e2b36a51f5dc027e..540ec1aeb0ec426412fed8449af5dec862dbc44f 100644 (file)
@@ -9,10 +9,13 @@
 % Version 2
 %
 
-function fdmdv_demod_c(dumpfilename, bits, NumCarriers)
+function fdmdv_demod_c(dumpfilename, bits)
  
   fdmdv; % include modem code
-
+  f = fdmdv_init;
+  Nc = f.Nc; Nb = f.Nb; Rs = f.Rs; M = f.M; Fs = f.Fs;
+  test_bits = f.test_bits;
+  
   frames = bits/(Nc*Nb);
 
   load(dumpfilename);
@@ -30,17 +33,17 @@ function fdmdv_demod_c(dumpfilename, bits, NumCarriers)
 
   bits_per_frame = Nc*Nb;
 
-  for f=1:frames
+  for fr=1:frames
 
-    rx_bits = rx_bits_log_c((f-1)*bits_per_frame+1:f*bits_per_frame);
+    rx_bits = rx_bits_log_c((fr-1)*bits_per_frame+1:fr*bits_per_frame);
 
     % count bit errors if we find a test frame
 
-    [test_frame_sync bit_errors] = put_test_bits(test_bits, rx_bits);
+    [test_frame_sync bit_errors error_pattern f] = put_test_bits(f, test_bits, rx_bits);
     if (test_frame_sync == 1)
       total_bit_errors = total_bit_errors + bit_errors;
-      total_bits = total_bits + Ntest_bits;
-      bit_errors_log = [bit_errors_log bit_errors/Ntest_bits];
+      total_bits = total_bits + f.Ntest_bits;
+      bit_errors_log = [bit_errors_log bit_errors/f.Ntest_bits];
     else
       bit_errors_log = [bit_errors_log 0];
     end
@@ -106,8 +109,8 @@ function fdmdv_demod_c(dumpfilename, bits, NumCarriers)
   xt1 = (1:b)/Fs;
   plot(xt1, rx_fdm_log_c(1:b));
   title('Rx FDM Signal');
-  subplot(212)
-  spec(rx_fdm_log_c(1:b),8000);
+  subplot(212);
+  plot_specgram(rx_fdm_log_c(1:b), 8000);
   title('FDM Rx Spectrogram');
 
   figure(4)
index bf2a8589dd0f6979139b8bc266cf9a85d1ab58cc..f37eafa7599c40993668de3655fa386b08681604 100644 (file)
@@ -261,9 +261,9 @@ function ofdm_ldpc_rx(filename, interleave_frames = 1, error_pattern_filename)
 
   end
 
+  printf("Raw BER..: %5.4f Tbits: %5d Terrs: %5d\n", Terrs/(Tbits+1E-12), Tbits, Terrs);
   printf("Coded BER: %5.4f Tbits: %5d Terrs: %5d\n", Terrs_coded/(Tbits_coded+1E-12), Tbits_coded, Terrs_coded);
   printf("Codec PER: %5.4f Tpkts: %5d Terrs: %5d\n", Tpacketerrs/(Tpackets+1E-12), Tpackets, Tpacketerrs);
-  printf("Raw BER..: %5.4f Tbits: %5d Terrs: %5d\n", Terrs/(Tbits+1E-12), Tbits, Terrs);
 
   figure(1); clf; 
   plot(rx_np_log,'+');
index adb50d6cdeecaa3c68cc897f3e1930eca4dbec3e..98dcd1aec86c873d8bc4352dedb8af7a29e51384 100644 (file)
@@ -3,9 +3,7 @@
 %
 % As the name suggests.....
 
-function S = plot_specgram(x)
-
-  Fs = 8000;
+function S = plot_specgram(x, Fs = 8000)
   
   step = fix(20*Fs/1000);     # one spectral slice every 5 ms
   window = fix(160*Fs/1000);  # 40 ms data window