如何从含有多个频率的波形中提取指定频率的波形?有一个波形曲线,它是由很多种不同频率的波形共同形成的,比如:y = sin(100*PI*t)+2*cos(20*PI*t)+3*cos(200*PI*t);我需要将上述3个频率的波形分别提取出来,请问改如何处理?谢谢大家帮忙!

解决方案 »

  1.   

    for(int k=0;nfft[i][j][k];k++) {

    pdfft[i][j][k]=new int[nfft[i][j][k]];
    memset(pdfft[i][j][k],0,sizeof(int)*nfft[i][j][k]);

    for(jj=1,jj2=0;jj<nfft[i][j][k];jj++,jj2++) {
    pdfft[i][j][k][jj2]= pifft[i][j][k][jj]-pifft[i][j][k][jj2];
    } for(jj=1,jj2=0;jj<nfft[i][j][k];jj++,jj2++) {
    int v=pdfft[i][j][k][jj]*pdfft[i][j][k][jj2];
    if(abs(v)>360 && v<0) {
    #ifdef _DEBUG
    ofs<<"\t"<<k<<"\t"<<jj<<"\t"<<pdfft[i][j][k][jj2]<<"\t"<<pdfft[i][j][k][jj]<<endl;
    #endif
    fft_s[jj].n++;
    fft_s[jj].v+=abs(v); result.voice_fft[j][i][k][jj]=pifft[i][j][k][jj];
    }
    } }//end of for(int k=0;nfft[i][j][k];k++)
      

  2.   

    先用FFT把这几个波的频率找出来,然后再拟合