2011-12-29 35 views
-3

我在实现FFT时遇到了问题。目标设备是Windows Phone 7.FFT实现

这就是我如何做到的。 缓冲区的字节数组有固定大小的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); 

     }); 

我使用(因为你可以看到)类是从SaluseMediakit(source

这是正确的道路?或者我错了吗?

+4

我在实现FFT时遇到了问题。 - 然后描述问题。包含详细信息(编译器错误,异常详细信息,...) – 2011-12-29 21:47:55

+0

这是关于fftoutput的。我不知道如何验证结果。这是否合适?来自mikrophone的字节数组,我能正确转换它吗? – 2011-12-29 22:19:36

+0

'我错了吗?'是的,如果它不起作用。 – 2011-12-29 22:26:45

回答

1

我已经设法执行一个很好的FFT,与AFORGE(这个库保存了几次)。从麦克风获取波形信息的正确方法。

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

你从麦克风(字节[])获取数据将其转换为double []使用AFortge进行了一些更改。你能描述一下你如何转换你的数据(double [] - > byte [])吗? – RredCat 2012-10-29 10:16:45

+0

看起来像这个http://stackoverflow.com/questions/6952923/conversion-double-array-to-byte-array是答案。 – RredCat 2012-10-29 18:43:38

+0

但还有其他方法比你显示.. – RredCat 2012-10-30 08:01:27