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

📄 test14.c

📁 5402开发板附带的源程序
💻 C
字号:
#include "math.h"

float im,hd[201],h[201],w[201],wc,pi;
float a,b,p,wf,re,d,db[300];
int m,n,k,i,l;

main()
{
   for(;;)
   {
      m=1;     /* m=1-5 */
      n=21;    /* n=21,51,101,201*/
      wc=0.25; /* wc=0.10-0.90 */
      l=200;   /* 50-300 */
      a=(n-1)/2;
      pi=4.0*atan(1.0);

      for(i=0;i<n;i++)
      {
         if(i==a)
            hd[i]=wc;
         else
         {
            b=i-a;
            hd[i]=sin(pi*b*wc)/(pi*b);
         }
      }

      switch(m)
      {
         case 1:    /* retangular window function */
            for(i=0;i<n;i++)
               w[i]=1.0;
         break;

         case 2:   /* bartlett window function */
            for(i=0;i<n;i++)
            {
               if(i>=a)
                  w[i]=2.0-2.0*i/(n-1);
               else
                  w[i]=2.0*i/(n-1);
            }
         break;

         case 3:   /* hanning window function */
            for(i=0;i<n;i++)
              w[i]=0.5*(1.0-cos(2.0*pi*i/(n-1)));
         break;

         case 4:  /* hamming window function */
            for(i=0;i<n;i++)
              w[i]=0.54-0.46*cos(2.0*pi*(float)i/(n-1));
         break;

         case 5: /* blackman window function */
            for(i=0;i<n;i++)
              w[i]=0.42-0.5*cos(2.0*pi*i/(n-1))+0.08*cos(4.0*pi*i/(n-1));
         break;
      }

      for(i=0;i<n;i++)
         h[i]=hd[i]*w[i];
      p=pi/l;

      for(k=0;k<=l-1;k++)
      {
         wf=p*k;
         re=0.0;
         im=0.0;
         for(i=0;i<n;i++)
         {
            re=re+h[i]*cos((float)i*wf);
            im=im+h[i]*sin((float)i*wf);
         }
         d=sqrt(pow(re,2)+pow(im,2));
         db[k]=20.0*log10(d);
      }
   }
}

⌨️ 快捷键说明

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