exp8a.c

来自「(Ebook-Pdf) Dsp - Real Time Digital Sign」· C语言 代码 · 共 52 行

C
52
字号
/*
    exp8a.c - Experiment 8A
    System identification using LMS adaptive filter
*/
   
#include "LP_coef.dat"

#define N0      48       /* Adaptive filter order */    
#define N1      48       /* Unknown filter order */
#define Ns      128      /* Number of input signal */

#pragma CODE_SECTION(main, "lms_code"); 
#pragma DATA_SECTION(fir_index, "lms_data"); 
#pragma DATA_SECTION(sys_index, "lms_data"); 
#pragma DATA_SECTION(w, "lms_coef"); 
#pragma DATA_SECTION(d_sys, "lms_data"); 
#pragma DATA_SECTION(d_fir, "lms_data"); 
#pragma DATA_SECTION(in, "lms_in"); 
#pragma DATA_SECTION(d, "lms_out"); 

extern unsigned int fir_filt(int *, unsigned int, int *, unsigned int,
                        int *, int *, unsigned int); 
extern unsigned int adaptive(int *, int *, int *, int *, unsigned int,
                             unsigned int, unsigned int);
extern void init(int *, unsigned int);
extern void random(int *, unsigned int);

int w[N0],              /* Adaptive filter coefficients */
    d_sys[N0],          /* Adaptive filter delayed sample buffer */
    d_fir[N1],          /* Unknown system delayed sample buffer */
    in[Ns],             /* Input sample buffer */
    d[Ns];              /* Unknown system output buffer */
    
unsigned int fir_index,sys_index;

void main()
{
    init(w,N0);         /* Initialize adaptive filter coefficients */
    init(d_sys,N0);     /* Initialize adaptive filter delay-line */
    init(d_fir,N1);     /* Initialize unknown filter delay-line */
        
    fir_index=0;        /* Init the unknown filter delay-line index */
    sys_index=0;        /* Init the adaptive filter delay-line index */

    for (;;)            /* Generate samples to both filter and */ 
    {                   /*    identify unknown system */
        random(in,Ns);
        fir_index=fir_filt(in,Ns,LP_coef,N1,d,d_fir,fir_index);
        sys_index=adaptive(in,d,d_sys,w,Ns,N0,sys_index);
    }
}

⌨️ 快捷键说明

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