#include #include #include #include "layer1/freq_est.h" #include "utils.h" int main(void) { #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.08f); nco_crcf_set_phase(nco, -1.37f); chan = channel_cccf_create(); channel_cccf_add_awgn(chan, -80, 5); // ** Generate signal ** for(size_t i = 0; i < N; i++) { s1[i] = 1.0f; } // ** Mix up ** 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(s3, N, &final_phase); fprintf(stderr, "Estimated frequency: %.6f rad/sample\n", est_freq); fprintf(stderr, "Final phase: %.6f rad\n", final_phase); // ** Cleanup ** nco_crcf_destroy(nco); fprintf(stderr, "Done.\n"); }