📄 归一化.cpp
字号:
#include"fft.h"
void TimeNormalize(double **x_in, int len_in, double *x_out, int len_out)
{
int i,j,k;
double *cum_dist, rate0, rate1, deno, delta_dist, dif, tmp;
len_in = len_in-1;
cum_dist = new double [len_in];
for(i=0,cum_dist[0]=0.,tmp=0. ; i<len_in-1 ; i++){
tmp+=GetDist(x_in[i+1],x_in[i+2],iNUM);
cum_dist[i+1]=tmp;
}
delta_dist=cum_dist[len_in-1]/(double)(len_out-1);
for(i=0;i<iNUM;i++) x_out[i]=x_in[1][i];
for(i=1; i<len_out-1;i++){
dif=delta_dist*(double)i;
for(j=0;j<len_in-1;j++)
if(dif>=cum_dist[j]&&dif<cum_dist[j+1]){
deno=cum_dist[j+1]-cum_dist[j];
rate0=(dif-cum_dist[j])/deno;
rate1=(cum_dist[j+1]-dif)/deno;
for(k=0;k<iNUM;k++)
x_out[i*iNUM+k]=(double)(rate0*x_in[j+2][k]+rate1*x_in[j+1][k]);
}
}
for(k=0;k<iNUM;k++)
x_out[(len_out-1)*iNUM+k]=x_in[len_in+1-1][k];
delete [] cum_dist; cum_dist = NULL;
}
void AmpNormalize(double *x_in, int iLen)
{
int i;
double dSum;
for( i=0, dSum=0 ; i<iLen ; i++ )
{
dSum += x_in[i];
}
dSum/=(double)iLen;
for( i=0 ; i<iLen ; i++ )
{
x_in[i]/=dSum;
}
}
double GetDist(double *x, double *y, int dim)
{
int i;
double distance;
for(i=0, distance=0.;i<dim;i++)
if(x[i]>y[i]) distance+=(x[i]-y[i]);
else distance+=(y[i]-x[i]);
return(distance);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -