📄 test14.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 + -