2014-09-12 1 views
0

나는 비디오 녹음에서받은 오디오 신호에 대해 DFT를 수행하기 위해 fftw 라이브러리를 사용하고 있습니다.이산 푸리에 변환 C++ - 다음에 할 일?

이것은 처음으로 이런 종류의 수학을 사용하고 신호를 분석하는 것이지만 계산 후 데이터에서 올바른 값을 얻었습니다.

그러나 이제 복소수 배열을 어떻게 처리해야하는지, 그래프로 그릴 수 있는지 알 수 없습니다.

사람이 다음에 무엇을해야하는지에 대한 조언을 할 수 제발, 여기에/데이터 후 ... 전과의 예입니다

(in, out(real;im)) 
(-12190,   (real:-3103; im:0)) 
(-16316,   (real:-3108.465666587691;  im:49.512823501357843)) 
(-10005,   (real:-3096.7767811251124; im:99.645004992013128)) 
(first 3 from a sample of 512) 

또한, 여기에 내가 이러한 결과를 얻기 위해 사용하고있는 코드가 ...

int n = 512; 

    double in[512]; 
    fftw_complex out[512]; 
    fftw_plan p; 

    ifstream rFile ("audioswap.csv"); 
    string line; 

    if (rFile.is_open()) 
    { 
     for (int i = 0; i < n; i++) 
     { 
      if (getline (rFile, line)) 
      { 
       in[i] = ::atof(line.c_str()); 
      } 
      else 
      { 
       break; 
      } 
     } 
    } 

    p = fftw_plan_dft_r2c_1d(n, in, out, FFTW_ESTIMATE); 

    fftw_execute(p); 

    fftw_destroy_plan(p); 

결과를 얻는 데 문제가 있다면 누군가에게 조언을 구하십시오.

사전에 도움을 주셔서 감사합니다. :)

+1

당신이 목적을 설명하면 도움이 될 것입니다. 즉 무엇을 성취하려고합니까? –

+0

늦게 답변을 드려 죄송합니다. 일을하기 위해 나라 밖으로 왔습니다. 나는 이것을 분석 소프트웨어의 일부로 사용하여 비디오를 암호화/압축하고 프로세스를 되 돌린 후에 왜곡 된 정도를 확인합니다. FFT를 사용하여 오디오 분석 다이어그램 플로팅 – bd99

답변

1

거의 모든 목적을 위해 다음으로 할 일은 각 복소수 값의 크기를 취하는 것입니다. 푸리에 도메인의 위상 정보는 시간 도메인에서 (작은) 시간 이동 결과이며 일반적으로 중요하지 않습니다. 위상 정보를 변경하고 다시 시간 영역으로 변환하면 여전히 동일하게 들립니다.

크기를 직접 그래프로 표시 할 수 있습니다. 의미가 있습니다.