예제 #1
0
double z_freqz_db(bool hpf, double f, double a, double h, double l) {
  double wf = f * PI;
  complex<double> hf;
  if (!hpf) { hf = h + l * (1 + (1.0 + polar(a, -wf)) / (a + polar(1.0, -wf))); } else {
    a = 1.0 / a;
    hf = h + l * (1 - (1.0 + polar(a, -wf)) / (a + polar(1.0, -wf)));
  }
  double db = 10.0 * log(magsq(hf)) / log(10.0);
  return (db);
}
예제 #2
0
파일: other_freq.cpp 프로젝트: CAOU/spuc
void cic_freq(int rate, int order, int pts, double* w, int freq_off, double inc) {
	double db=0;
	double sum = 0;
	double wf = inc*PI/(double)pts;		
	for (int i=0;i<pts;i++) {
		if (i!=freq_off) sum = (1.0/rate)*sin(0.5*wf*(i-freq_off)*rate)/sin(0.5*wf*(i-freq_off));
        else sum = 0;
		//	  std::cout << "w1[" << i << "] = " << sum << "\n";
		db = 10.0*order*log(magsq(sum))/log(10.0);
		w[i] = db;
	}
}
예제 #3
0
void equalizer::update_levels() {
  for (int i = 0; i < num_bands; i++) { levels[i] = lev_gain * levels[i] + (1 - lev_gain) * magsq(eq[i]); }
}
예제 #4
0
complex<double> sqrt(complex<double> x) {
  double mag = sqrt(sqrt(magsq(x)));
  double ang = 0.5*arg(x); // ambiguity
  return(polar(mag,ang));
}
예제 #5
0
double Vector3::deg_cosine(Vector3& another)
{
    double d = dot(another);
    d /= sqrt(magsq()*another.magsq());
    return d;
}
//*******************************************************************************
// Symbol lock detector
//*******************************************************************************
long qpsk_discriminators::symbol_lock_out()
{
	long sym_lock;
	sym_lock =  magsq(data) - magsq(prev_sam);
	return(sym_lock);
}