string Lex::getStr(string str, int num){ int k = 0; str = str + " "; for (unsigned i = 1; i <= num; i++){ int last = k; while (k < str.length() && str[k] != ' ')k++; if (k == str.length())return ""; else { if (i == num)return spilt(str, last, k - 1); k++; } } return ""; }
void Saliencefunc(double *peaks,int *index,int *peaksnum,int N,int sampleRate,int framenumber,double **leftpeaks_p,int **leftindex_p,int **leftpeaksnum_p,double **filteredpeaks_p,int **filteredindex_p,int **filteredpeaksnum_p) { double *saliencebins; double *speaks; int *sindex; int *speaksnum; double *maxpeaks; double *leftpeaks; int *leftindex; int *leftpeaksnum; double *left_peaks; int *left_index; int *left_peaksnum; double *filtered_peaks; int *filtered_index; int *filtered_peaksnum; double tfirst=0.25; double tplus=0.9; saliencebins=(double *)malloc(sizeof(double)*BIN_NUM*framenumber); for(int i=0;i<framenumber;i++) { for(int j=0;j<BIN_NUM;j++) { saliencebins[i*BIN_NUM+j]=salience(peaks,index,i,peaksnum[i],N,sampleRate,j+1); } } speaks=(double *)malloc(sizeof(double)*PEAK_NUM*framenumber); sindex=(int *)malloc(sizeof(int)*PEAK_NUM*framenumber); speaksnum=(int *)malloc(sizeof(int)*framenumber); maxpeaks=(double *)malloc(sizeof(double)*framenumber); leftpeaks=(double *)malloc(sizeof(double)*HALF_PEAK_NUM*framenumber); leftindex=(int *)malloc(sizeof(int)*HALF_PEAK_NUM*framenumber); leftpeaksnum=(int *)malloc(sizeof(int)*framenumber); left_peaks=(double *)malloc(sizeof(double)*QTR_PEAK_NUM*framenumber); left_index=(int *)malloc(sizeof(int)*QTR_PEAK_NUM*framenumber); left_peaksnum=(int *)malloc(sizeof(int)*framenumber); filtered_peaks=(double *)malloc(sizeof(double)*HALF_PEAK_NUM*framenumber); filtered_index=(int *)malloc(sizeof(int)*HALF_PEAK_NUM*framenumber); filtered_peaksnum=(int *)malloc(sizeof(int)*framenumber); findpeaks(saliencebins,BIN_NUM,framenumber,speaks,sindex,speaksnum,PEAK_NUM); max(speaks,speaksnum,PEAK_NUM,framenumber,maxpeaks); biggerfilter(speaks,sindex,maxpeaks,speaksnum,PEAK_NUM,framenumber,leftpeaks,leftindex,leftpeaksnum,HALF_PEAK_NUM,tfirst); spilt(leftpeaks,leftindex,leftpeaksnum,maxpeaks,HALF_PEAK_NUM,framenumber,left_peaks,left_index,left_peaksnum,QTR_PEAK_NUM,filtered_peaks,filtered_index,filtered_peaksnum,HALF_PEAK_NUM,tplus); /* for(int i=0;i<framenumber;i++) { printf("frame %d,leftpeaksnum %d,left %d,filtered %d\n",i+1,leftpeaksnum[i],left_peaksnum[i],filtered_peaksnum[i]); } */ free(saliencebins); free(speaks); free(sindex); free(speaksnum); free(maxpeaks); free(leftpeaks); free(leftindex); free(leftpeaksnum); *leftpeaks_p=left_peaks; *leftindex_p=left_index; *leftpeaksnum_p=left_peaksnum; *filteredpeaks_p=filtered_peaks; *filteredindex_p=filtered_index; *filteredpeaksnum_p=filtered_peaksnum; }