📄 sync.c
字号:
#include <stdio.h>
#include <math.h>
int sync(float *in , const float *training_seq) {
int i;
int k;
float corr[2*PADDING];
float temp[TRAININGSIZE];
float sum;
int index;
float max = 0;
for (i=0;i<(2*PADDING);i++) { // we assume the delay is not larger than twice the padding
sum=0;
for(k=0;k<TRAININGSIZE;k++) {
temp[k] = in[k+i];
temp[k] = temp[k]*training_seq[k];
sum=sum+temp[k];
}
corr[i]=sum;
}
i=0;
for (i;i<(2*PADDING);i++) {
if (corr[i] > max) {
max = corr[i];
index = i;
}
}
return index;
}
int approxnext(int ind) {
return ind + GUARD + UPFRAME_SIZE;
}
void extracting (float *in, float *out, int index ) { //extract , downsample and store the frame in a buffer
int m;
for (m=0;m<FRAME_SIZE;m++){
out[m]=in[index+m*UPFACTOR];
}
}
void main() {
int i;
int k;
int index;
float in[BUFFSIZE];
float out[FRAME_SIZE];
float training[42];
for(i=0;i<20;i++) in[i]=0;
for(i=20;i<62;i++) in[i]=i;
for(i=62;i<828;i++) in[i]=-i;
for(i=828;i<840;i++) in[i]=0;
for(k=0;k<42;k++) training[k]=k+20;
index=sync(in,training);
printf("first sample of the frame is %d \n",index);
extracting(in, out, index);
printf("the first elements of the frame are %f %f %f \n",out[0],out[1],out[2]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -