?? signal.c
字號:
# include <stdio.h>
# include <math.h>
# define pi 3.1415926
void main()
{ int A[5]={0,1,3,2,2};
int B[5]={0,2,4,2,1};
float a[5]={0,pi/8,pi/6,pi/6,pi/6};
float b[5]={0,0,pi/4,pi/4,pi/8};
int f[5]={0,35,280,1120,4480};
int i,k,fs;
float hh[1201],a11[1201],a1[1201],b11[1201],b1[1201],c11[1201],c1[1201];
float aa11,a1a,bb11,b1a,ab11,ac11,diff11;
float h[202]={0.0000,0.0010,0.0010,0.0010,0.0010,0.0011,0.0011,
0.0011,0.0011,0.0011,0.0011,0.0011,0.0011,
0.0011,0.0011,0.0011,0.0011,0.0011,0.0010,
0.0009,0.0009,0.0008,0.0007,0.0005,0.0004,
0.0002,-0.0000,-0.0002,-0.0005,-0.0007,-0.0010,
-0.0013,-0.0017,-0.0020,-0.0024,-0.0028,-0.0032,
-0.0036,-0.0041,-0.0045,-0.0050,-0.0055,-0.0059,
-0.0064,-0.0068,-0.0073,-0.0077,-0.0082,-0.0086,
-0.0089,-0.0093,-0.0096,-0.0099,-0.0101,-0.0103,
-0.0105,-0.0106,-0.0106,-0.0106,-0.0105,-0.0104,
-0.0102,-0.0099,-0.0096,-0.0092,-0.0088,-0.0083,
-0.0077,-0.0070,-0.0063,-0.0056,-0.0048,-0.0039,
-0.0030,-0.0020,-0.0010,0.0000,0.0011,0.0021,
0.0032,0.0044,0.0055,0.0066,0.0077,0.0088,
0.0099,0.0109,0.0119,0.0129,0.0138,0.0147,
0.0155,0.0163,0.0170,0.0176,0.0182,0.0186,
0.0190,0.0193,0.0196,0.0197,0.0197,0.0197,
0.0196,0.0193,0.0190,0.0186,0.0182,0.0176,
0.0170,0.0163,0.0155,0.0147,0.0138,0.0129,
0.0119,0.0109,0.0099,0.0088,0.0077,0.0066,
0.0055,0.0044,0.0032,0.0021,0.0011,0.0000,
-0.0010,-0.0020,-0.0030,-0.0039,-0.0048,-0.0056,
-0.0063,-0.0070,-0.0077,-0.0083,-0.0088,-0.0092,
-0.0096,-0.0099,-0.0102,-0.0104,-0.0105,-0.0106,
-0.0106,-0.0106,-0.0105,-0.0103,-0.0101,-0.0099,
-0.0096,-0.0093,-0.0089,-0.0086,-0.0082,-0.0077,
-0.0073,-0.0068,-0.0064,-0.0059,-0.0055,-0.0050,
-0.0045,-0.0041,-0.0036,-0.0032,-0.0028,-0.0024,
-0.0020,-0.0017,-0.0013,-0.0010,-0.0007,-0.0005,
-0.0002,-0.0000,0.0002,0.0004,0.0005,0.0007,
0.0008,0.0009,0.0009,0.0010,0.0011,0.0011,
0.0011,0.0011,0.0011,0.0011,0.0011,0.0011,
0.0011,0.0011,0.0011,0.0011,0.0011,0.0010,
0.0010,0.0010,0.0010};
float A1[1001],B1[1001],C1[1001];
printf("please choose fs from 3500hz,28000,112000,448000:");
scanf("%d",&fs);
for (k=1;k<=1000;k++)
{
A1[k]=A[1]*sin(2*pi*35*k/fs+a[1])+A[2]*sin(2*pi*280*k/fs+a[2])+A[3]*sin(2*pi*1120*k/fs+a[3])+A[4]*sin(2*pi*4480*k/fs+a[4]);
B1[k]=B[1]*sin(2*pi*35*k/fs+b[1])+B[2]*sin(2*pi*280*k/fs+b[2])+B[3]*sin(2*pi*1120*k/fs+b[3])+B[4]*sin(2*pi*4480*k/fs+b[4]);
C1[k]=B[1]*sin(2*pi*35*k/fs+pi/2+b[1])+B[2]*sin(2*pi*280*k/fs+pi/2+b[2])+B[3]*sin(2*pi*1120*k/fs+pi/2+b[3])+B[4]*sin(2*pi*4480*k/fs+pi/2+b[4]);
}
for (i=1;i<=201;i++)
hh[i]=h[i];
for (i=202;i<=1200;i++)
hh[i]=0;
for (i=1;i<=1000;i++)
{ a1[i]=A1[i];
b1[i]=B1[i];
c1[i]=C1[i];
}
for (i=1001;i<=1200;i++)
{ a1[i]=0;
b1[i]=0;
c1[i]=0;
}
for (i=1;i<=1200;i++)
{ a11[i]=0;
b11[i]=0;
c11[i]=0;
for (k=1;k<=i;k++)
{ a11[i]=a11[i]+hh[k]*a1[i+1-k];
b11[i]=b11[i]+hh[k]*b1[i+1-k];
c11[i]=c11[i]+hh[k]*c1[i+1-k];
}
}
aa11=0;
for (i=1;i<=1200;i++)
aa11=aa11+a11[i]*a11[i];
a1a=sqrt(2*aa11/1200);
printf("the range of signal A is %f\n",a1a);
bb11=0;
for (i=1;i<=1200;i++)
bb11=bb11+b11[i]*b11[i];
b1a=sqrt(2*bb11/1200);
printf("the range of signal B is %f\n",b1a);
ab11=0;
for (i=1;i<=1200;i++)
ab11=ab11+a11[i]*b11[i];
ac11=0;
for (i=1;i<=1200;i++)
ac11=ac11+a11[i]*c11[i];
diff11=atan(ac11/ab11)*180/pi;
printf("the difference of degree between A and B is %f\n",diff11);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -