static std::shared_ptr<FeatureChannels_> mulSpectrumsFeatures(const cv::Mat& Af, const std::shared_ptr<FeatureChannels_>& Bf, bool conjBf = false) { std::shared_ptr<FeatureChannels_> resf(new FeatureChannels_()); for (int i = 0; i < NUMBER_OF_CHANNELS; ++i) { mulSpectrums(Af, Bf->channels[i], resf->channels[i], 0, conjBf); } return resf; }
int main(int argc, char *argv[]) { ofstream resf("res.dat"); long num; long loops=12; long i; double snr=11.0; long paths=3; if (argc!=4) { num = 100000; } else { num = ((long)atof(argv[1])); // Number of symbols simulated snr = atof(argv[2]); // SNR dBs paths = ((long)atof(argv[3])); // Number of multipath paths } baud_eq_env Environment(paths); long rcv_symbols=0; long symbols=0; Environment.num = num; time_t current_time; time(¤t_time); noise random_offset; random_offset.set_seed((double)(current_time*10)); // MAIN LOOP for (i=0;i<loops;i++) { snr -= 1; Environment.snr = snr; Environment.loop_init(); symbols = 0; do { Environment.step(); // Get data output from Chip Environment.BER_mon->synchronize(&symbols,Environment.data); // Correlate with reference PN if (Environment.BER_mon->found_sync()) Environment.BER_mon->ber_results(symbols++); else symbols++; if (Environment.rcv_symbols > num && !Environment.BER_mon->found_sync()) break; } while (symbols < num); cout << " SNR = " << snr << " BER = " << Environment.BER_mon->ber(symbols) << '\n'; resf << snr << " " << Environment.BER_mon->ber(symbols) << '\n'; Environment.BER_mon->final_results(symbols); Environment.loop_end(); } resf.close(); return(1); }
int main(int argc, char *argv[]) { void usage(void); #ifdef _DEBUG ofstream sampf("samp.dat"); ofstream resf("res.dat"); #endif long num; double snr=9.0; double timing_offset=0.0; if (argc<3) { num = 600; } else if (argc!=3) { usage(); } else { num = ((long)atof(argv[1])); // Number of symbols simulated snr = atof(argv[2]); // Unfiltered noise std dev } double actual_over=4.00; sim_equalizer Environment(4,3); long rcv_symbols=0; long symbols=0; Environment.num = num; Environment.snr = snr; time_t current_time; time(¤t_time); noise random_offset; random_offset.set_seed((double)(current_time*10)); Environment.loop_init(); // Environment.BER_mon->init_delay(68); // makes correlation occur earlier symbols = 0; // MAIN LOOP do { Environment.step(); #ifdef _DEBUG sampf.width(4); sampf.setf(ios::fixed); sampf << Environment.base.re << " "; sampf << Environment.base.im << '\n'; #endif // if (Environment.DUT->symclk()==1) { if (Environment.rcv_symbols > WAITSYMBOLS ) { // Get data output from Chip Environment.BER_mon->synchronize(&symbols,Environment.data); // Correlate with reference PN if (Environment.BER_mon->found_sync()) Environment.BER_mon->ber_results(symbols++); else symbols++; } // } if (Environment.rcv_symbols > num && !Environment.BER_mon->found_sync()) break; } while (symbols < num); Environment.BER_mon->final_results(symbols); Environment.loop_end(); #ifdef _DEBUG sampf.close(); resf.close(); #endif return(1); }