コード例 #1
0
ファイル: LexGenerator.cpp プロジェクト: zurl/WeakScript
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 "";
}
コード例 #2
0
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;
}