From: drowe67 Date: Wed, 2 May 2018 00:45:11 +0000 (+0000) Subject: resurrecting fdmdv tests to trace sample slip problem in FreeDV GUI X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=865e4e5188333df8c4a514019db0352f752ddfd4;p=freetel-svn-tracking.git resurrecting fdmdv tests to trace sample slip problem in FreeDV GUI git-svn-id: https://svn.code.sf.net/p/freetel/code@3552 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2-dev/octave/fdmdv.m b/codec2-dev/octave/fdmdv.m index a7965b33..bed5df7a 100644 --- a/codec2-dev/octave/fdmdv.m +++ b/codec2-dev/octave/fdmdv.m @@ -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 diff --git a/codec2-dev/octave/fdmdv_demod_c.m b/codec2-dev/octave/fdmdv_demod_c.m index b5c75334..540ec1ae 100644 --- a/codec2-dev/octave/fdmdv_demod_c.m +++ b/codec2-dev/octave/fdmdv_demod_c.m @@ -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) diff --git a/codec2-dev/octave/ofdm_ldpc_rx.m b/codec2-dev/octave/ofdm_ldpc_rx.m index bf2a8589..f37eafa7 100644 --- a/codec2-dev/octave/ofdm_ldpc_rx.m +++ b/codec2-dev/octave/ofdm_ldpc_rx.m @@ -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,'+'); diff --git a/codec2-dev/octave/plot_specgram.m b/codec2-dev/octave/plot_specgram.m index adb50d6c..98dcd1ae 100644 --- a/codec2-dev/octave/plot_specgram.m +++ b/codec2-dev/octave/plot_specgram.m @@ -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