diff --git a/impl/test/layer1/test_freq_est.c b/impl/test/layer1/test_freq_est.c index fbcff5f..5c82142 100644 --- a/impl/test/layer1/test_freq_est.c +++ b/impl/test/layer1/test_freq_est.c @@ -1,8 +1,5 @@ #include -#include -#include -#include -#include +#include #include @@ -21,18 +18,26 @@ int main(void) { -#define N 1024 +#define N 63 float complex s1[N]; float complex s2[N]; + float complex s3[N]; nco_crcf nco; + channel_cccf chan; // ** Initialize ** + srand(time(NULL)); + nco = nco_crcf_create(LIQUID_NCO); - nco_crcf_set_frequency(nco, 0.05f); - nco_crcf_set_phase(nco, 1.37f); + nco_crcf_set_frequency(nco, -0.08f); + nco_crcf_set_phase(nco, -1.37f); + + chan = channel_cccf_create(); + + channel_cccf_add_awgn(chan, -80, 5); // ** Generate signal ** @@ -44,14 +49,17 @@ int main(void) nco_crcf_mix_block_up(nco, s1, s2, N); + channel_cccf_execute_block(chan, s2, N, s3); + dump_array_cf(s1, N, 1.0f, "/tmp/freq_est_source.cpx"); dump_array_cf(s2, N, 1.0f, "/tmp/freq_est_mixed.cpx"); + dump_array_cf(s3, N, 1.0f, "/tmp/freq_est_channelized.cpx"); // ** Estimate frequency ** float final_phase; - float est_freq = freq_est_data_free(s2, 32, &final_phase); + float est_freq = freq_est_data_free(s3, N, &final_phase); fprintf(stderr, "Estimated frequency: %.6f rad/sample\n", est_freq); fprintf(stderr, "Final phase: %.6f rad\n", final_phase);