⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lmstest.cpp

📁 Adaptive digital Filters in C++
💻 CPP
字号:
// lmstest.cpp		Test the LMSFilter class

//		input data is from named file or STDIN
//		output is to a named file or STDOUT

static const char rcsid[]= "@(#)lmstest.c++	1.1 15:59:53 3/31/94   EFC";

#define PROGRAM "lmstest"
#define REV_LEV "V1.1"

#include <stdlib.h>

#include <standio.hpp>

#include <getargs.h>

#include "lmsfilter.hpp"

// #define DEBUG

#ifdef DEBUG
#include <heartbeat.hpp>
#endif


int menu = 0;
int verbose = 0;
double beta = 1.0e-9;
int order = 4;
int errout = 0;

ARG	Argtab[] =
{
	{ 'b', REAL, (int *)&beta,	"beta coefficient"	},
	{ 'e', BOOLEAN, &errout,	"output filter error"	},
	{ 'o', INTEGER, &order,		"filter order"		},
	{ 'v', BOOLEAN, &verbose,	"verbose execution"	},
	{ '-', BOOLEAN, &menu,		"display this list"	}
};

#define TABSIZE     ( sizeof(Argtab) / sizeof(ARG) )

int main(int argc, char **argv)
{
        float x, y;
        
	argc = getargs( argc, argv, Argtab, TABSIZE);
        
        if (menu)
	{
		menu = 0;
                cerr << PROGRAM << '\t' << REV_LEV << '\n';
		pr_usage( Argtab, TABSIZE);
		exit(1);
	}


	LMSFilter filter(order, beta);

        if ( !filter )
        {
        	cerr << PROGRAM << " error, unable to create filter\n";
                exit(1);
        }
       
	if ( verbose )
        {
		cerr << PROGRAM << " filter order: " << filter.order() << endl;
        }

	Stdin fin(&argc, argv);
        
	if ( !fin )
        {
		cerr << PROGRAM << "  unable to open input file\n";
                exit(1);
        }


	Stdout fout(&argc, argv);

        if ( !fout )
        {
        	cerr << PROGRAM << "  unable to open output file\n";
                exit(1);
        }
        

#ifdef DEBUG
	HeartBeat h;
        int k = 0;
        cerr << "Starting filter\n";
#endif

	if ( errout )
		filter.output_error();

	while ( !fin.eof() )
        {
		fin >> x;
                if ( fin.eof() || fin.fail() )
                		break;

#ifdef DEBUG
		k++;
		h.tick();
#endif                

		x >> filter >> y;
                              
               fout << y << '\n';
        }
        
#ifdef DEBUG
	cerr << '\n' << k << " points filtered\n";       
#endif

	return 0;

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -