예제 #1
0
파일: lms.c 프로젝트: Tipoca/scmutils
void
main (int argc, char ** argv)
{
  struct f_context c;
  filter f;

  if (argc != 5)
    usage ();
  (c.m) = (convert_index_arg ((argv[1]), 8196));
  (c.delay) = (convert_index_arg ((argv[3]), 8196));
  (c.mu) = (convert_real_arg (argv[2]));
  (c.h) = (xmalloc ((c.m) * (sizeof (REAL))));
  {
    REAL * sh = (c.h);
    REAL * eh = (sh + (c.m));
    while (sh < eh)
      (*sh++) = 0.;
  }
  switch (convert_index_arg ((argv[4]), 2))
    {
    case 0:
      f = cancel_noise;
      break;
    case 1:
      f = cancel_tones;
      break;
    }
  apply_filter ((make_filter_state ((fileno (stdin)),
				    (fileno (stdout)),
				    8000,
				    ((c.m) + (c.delay)))),
		f,
		(&c));
  exit (0);
}
예제 #2
0
void
main (int argc, char ** argv)
{
  REAL fr = ((atan2 (1., 1.)) / 1000.);
  struct f_context c;

  if (argc != 4)
    usage ();
  (c.h) =
    (kaiser_bandpass_coefficients (((convert_real_arg (argv[1])) * fr),
				   ((convert_real_arg (argv[2])) * fr),
				   (convert_real_arg (argv[3])),
				   .001,
				   (& (c.m))));
  fprintf (stderr, "Filter order = %d\n", ((c.m) - 1));
  fflush (stderr);
  apply_filter ((make_filter_state ((fileno (stdin)),
				    (fileno (stdout)),
				    8000,
				    (c.m))),
		bandpass,
		(&c));
  exit (0);
}