📄 smooft.c
字号:
#include <math.h>
void smooft(y,n,pts)
float y[],pts;
int n;
{
int nmin,m=2,mo2,k,j;
float yn,y1,rn1,fac,cnst;
void realft();
nmin=n+(int) (2.0*pts+0.5);
while (m < nmin) m *= 2;
cnst=pts/m,cnst=cnst*cnst;
y1=y[1];
yn=y[n];
rn1=1.0/(n-1);
for (j=1;j<=n;j++)
y[j] += (-rn1*(y1*(n-j)+yn*(j-1)));
for (j=n+1;j<=m;j++) y[j]=0.0;
mo2=m >> 1;
realft(y,mo2,1);
y[1] /= mo2;
fac=1.0;
for (j=1;j<mo2;j++) {
k=2*j+1;
if (fac) {
if ( (fac=(1.0-cnst*j*j)/mo2) < 0.0) fac=0.0;
y[k]=fac*y[k];
y[k+1]=fac*y[k+1];
} else y[k+1]=y[k]=0.0;
}
if ( (fac=(1.0-0.25*pts*pts)/mo2) < 0.0) fac=0.0;
y[2] *= fac;
realft(y,mo2,-1);
for (j=1;j<=n;j++)
y[j] += rn1*(y1*(n-j)+yn*(j-1));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -