2011-12-29 3 views
-3

FFT 구현에 문제가 있습니다. 대상 장치는 Windows Phone 7입니다.FFT 구현

이것이 내가하는 방법입니다. 버퍼 난 (시피)를 사용하고있어 클래스 SaluseMediakit에서 1024

var o = Observable.FromEvent<EventArgs>(Microphone.Default, "BufferReady"); 
     o.Subscribe(evt => 
     { 
      double[] dImageArray = this.buffer.Select(i => Convert.ToDouble(i)).ToArray(); 

      fftoutput = Saluse.MediaKit.Sample.FourierTransform.FFTDb(ref dImageArray); 

     }); 

고정 사이즈의 바이트 배열 (source)

이 적절한 경로는? 아니면 내가 어딘가 착각 한거야?

+4

FFT 구현에 문제가 있습니다. - 그런 다음 문제를 설명하십시오. 세부 사항을 포함하십시오 (컴파일러 오류, 예외 세부 사항, ...) –

+0

그것은 fftoutput에 관한 것입니다. 결과를 확인하는 방법을 모르겠습니다. 그것은 옳은가? 아니다. mikrophone의 바이트 배열을 올바르게 변환합니까? –

+0

'어딘가에 잘못 됐어?'네, 작동하지 않으면 예. –

답변

1

AFORGE (이 라이브러리는 저에게 여러 번 저를 저장했습니다)와 함께 좋은 FFT를 수행 할 수있었습니다. 마이크에서 파형 정보를 얻는 올바른 방법.

double[] sampleBuffer = new double[buffer.Length/2]; 
      int h = 0; 
      for (int i = 0; i < buffer.Length; i += 2) 
      { 
       sampleBuffer[h] = Convert.ToDouble(BitConverter.ToInt16((byte[])buffer, i)); 
       h++; 
      } 

다른 질문으로 후속 조치. 나는 시각적으로 동등한 것을 만들고 싶다. 그러나 나는 어떻게하는지 전혀 모른다.

+0

마이크 (byte [])에서 데이터를 가져 와서 double []로 변환하면 AFortge가 변경됩니다. 어떻게 데이터를 다시 변환하는지 (double [] -> byte [])를 설명 할 수 있습니까? – RredCat

+0

다음과 같이 표시됩니다. http://stackoverflow.com/questions/6952923/conversion-double-array-to-byte-array is answer. – RredCat

+0

하지만 당신이 보여주는 것보다 다른 접근법이 있습니다. – RredCat