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

📄 adaptpredict.c

📁 DSP的C程序源代码
💻 C
字号:
//Adaptpredict.C Adaptive predictor to cancel interference 

#include "wbsignal.h"             //wide-band signal table look-up
#define beta 1E-14                //rate of convergence      
#define N 60                      //# of coefficients of adapt FIR        
const short bufferlength = NS;    //buffer length for wideband signal
short splusn[N+1];     		    //buffer wideband signal+interference
float w[N+1];          		    //buffer for weights of adapt FIR  
float delay[N+1];      		    //buffer for input to adapt FIR

interrupt void c_int11()          //ISR
{                         
 static short buffercount=0;      //init buffer
 int i;
 float yn, E; 		          //yn=out adapt FIR, error signal
 short wb_signal;			    //wideband desired signal
 short noise;			    //external interference 
 
 wb_signal=wbsignal[buffercount]; //wideband signal from look-up table
 noise = input_sample();          //external input as interference 
 splusn[0] = wb_signal + noise;   //wideband signal+interference
 delay[0] = splusn[3];            //delayed input to adaptive FIR 
 yn = 0;                          //init output of adaptive FIR 
 
 for (i = 0; i < N; i++)
   yn += (w[i] * delay[i]);       //output of adaptive FIR filter 
 E = splusn[0] - yn;              //(wideband+noise)-out adapt FIR
 
 for (i = N-1; i >= 0; i--)         
  {
   w[i] = w[i]+(beta*E*delay[i]); //update weights of adapt FIR 
   delay[i+1] = delay[i];         //update buffer delay samples 
   splusn[i+1] = splusn[i];       //update buffer corrupted wideband 
  } 
 
 buffercount++;                   //incr buffer count of wideband 
 if (buffercount >= bufferlength) //if buffer count=length of buffer
   buffercount = 0;		    //reinit count  
 output_sample((short)E);         //overall output     
 return;
}

void main()
{
 int T = 0;
 for (T = 0; T < N; T++)          //init variables
  {
   w[T] = 0.0;			    //buffer for weights of adaptive FIR
   delay[T] = 0.0;		    //buffer for delay samples 
   splusn[T] = 0;			    //buffer for wideband+interference
  } 
 comm_intr();                     //init DSK, codec, McBSP
 while(1);                        //infinite loop
}

⌨️ 快捷键说明

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