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

📄 iir1.c

📁 用dsp解压mp3程序的算法
💻 C
字号:
/*****************************************************************
*  iir1.c - C program for first-order IIR filtering
******************************************************************
*  System configuration:
*
* 
*  x(n) |----------------| y(n)
*  ---->| Lowpass filter |----->
*       |----------------|
*
******************************************************************
*  System simulation configuration:
*
*     x(n) is the input data from data file "xn.dat"
*     y(n) is the output data to data file "yn.dat"
*
*****************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void main()
{

/*****************************************************************
*    Define variable arrays, define and clear variables
*****************************************************************/
  
  int xn = 0;                /* x(n) from xn.dat file           */
  float yn = 0.0;            /* y(n), output from IIR filter    */
  float alpha = 0.25;        /* alpha = 0.25                    */
  float alpha1 = 0.75;       /* alpha1 = 1 - alpha = 0.75       */

/*****************************************************************
*    Declare file pointers
*****************************************************************/

  FILE *xn_in;                    /* file pointer of x(n)       */
  FILE *yn_out;                   /* file pointer of y(n)       */
  xn_in = fopen("xn.dat","r");    /* open file for input x(n)   */
  yn_out = fopen("yn.dat","w");   /* open file for output y(n)  */

/*****************************************************************
*    Start of main program
*****************************************************************/

  while( (fscanf(xn_in,"%d",&xn)) != EOF)
  {           /* read in x(n) from data file and processing it  */

    /*************************************************************
    *    IIR filtering:
    *         y(n) = (1-alpha)*y(n-1)+alpha*x(n)
    *************************************************************/
    
    yn = alpha1*yn + alpha*(float)xn; 
      
    fprintf(yn_out,"%d\n",(int)(yn+0.5));
        /* rounding y(n) to integer and write it to output file */
  }    
    printf("Finish");
    fclose(yn_out); 
    fclose(xn_in);                    /* close all opened files */
}

⌨️ 快捷键说明

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