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

📄 firlms.c

📁 该源码是自适应滤波器算法(基于LMS自适应算法)的实现例子
💻 C
字号:
/////////////////////////////////////////////////
//  Example For ICETEK-VC5416-EDU              //
//          CTR Version : V4                   //
//  Filename: FirLms.c                         //
//  Project : FirLms.pjt                       //
//  Version : 2.00                             //
//  Write by: Daniel Hawk                      //
//  Company : Realtimedsp Co.Ltd.              //
//                                             //
//  All Rights opened & no Onus  2005.06       //
/////////////////////////////////////////////////
#include"math.h"

#define PI 3.1415926
#define COEFFNUMBER 16
#define INPUTNUMBER 1024

int FIRLMS(int *nx,float *nh,int nError,int nCoeffNumber);

float h[COEFFNUMBER],fU;
int xx[INPUTNUMBER],rr[INPUTNUMBER],wc[INPUTNUMBER];

main()
{
	int i,nLastOutput;
	
	nLastOutput=0;
	fU=0.0005;
	for ( i=0;i<COEFFNUMBER;i++ )	h[i]=0;
	for ( i=0;i<INPUTNUMBER;i++ )
	{
		xx[i]=256*sin(i*2*PI/34);
		rr[i]=wc[i]=0;
	}
	for ( i=COEFFNUMBER+1;i<INPUTNUMBER;i++ )
	{
		nLastOutput=FIRLMS(xx+i,h,nLastOutput-xx[i-1],COEFFNUMBER);	// break point
		rr[i]=nLastOutput;
		wc[i]=rr[i]-xx[i];
	}
	exit(0);
}

int FIRLMS(int *nx,float *nh,int nError,int nCoeffNumber)
{
	int i,r;
	float fWork;
	
	r=0;
	for ( i=0;i<nCoeffNumber;i++ )
	{
		fWork=nx[i]*nError*fU;
		nh[i]+=fWork;
		r+=(nx[i-i]*nh[i]);
	}
	r/=128;
	return r;
}

⌨️ 快捷键说明

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