2017-02-17 11 views
1

Math.NET과 .NET4.0을 사용하여 데이터 세트에서 FFT를 계산할 때 문제가 있습니다. FFT with Math.NET 4.0 - Complex32 [] vs. Complex []

나는 오류없이이 같은 Math.NET와 .NET 3.5을 사용 :
public Ergebnisse_FFT_Abs_PSD_MNF FFT_Abs_PSD_MNF(double[] data) 
    { 
     Complex[] samples = new Complex[data.Length]; 
     double[] FFT_abs_1d = new double[data.Length/2]; 

     int zaehler = 0; 
     foreach(double val in data) 
     { 
      samples[zaehler] = new Complex(val, 0); 
      Fenster[zaehler] = Math.Exp(-0.5 * Math.Pow(((zaehler - (samples.Length - 1)/2)/(sigma * (samples.Length - 1)/2)), 2)); // Gauß 
      samples[zaehler] = samples[zaehler].Real * Fenster[zaehler]; 
      zaehler++; 
     } 
     MathNet.Numerics.IntegralTransforms.Fourier.BluesteinForward(samples, MathNet.Numerics.IntegralTransforms.FourierOptions.Matlab); 
    } 

는 이제 .NET 4.0을 사용하려는 복잡한 [] 더 이상 알려져있다 - 단지 Complex32합니다.

public Ergebnisse_FFT_Abs_PSD_MNF FFT_Abs_PSD_MNF(double[] data) 
    { 
     Complex32[] samples = new Complex32[data.Length]; 
     double[] FFT_abs_1d = new double[data.Length/2]; 

     int zaehler = 0; 
     foreach(double val in data) 
     { 
      samples[zaehler] = new Complex32((float)val, 0); 
      Fenster[zaehler] = Math.Exp(-0.5 * Math.Pow(((zaehler - (samples.Length - 1)/2)/(sigma * (samples.Length - 1)/2)), 2)); // Gauß 
      samples[zaehler] = samples[zaehler].Real * (float)Fenster[zaehler]; 
      zaehler++; 
     }  

     MathNet.Numerics.IntegralTransforms.Fourier.BluesteinForward(samples, MathNet.Numerics.IntegralTransforms.FourierOptions.Matlab); 
    } 

이 오류 메시지가 발생합니다 :

오류 7 MathNet.Numerics.IntegralTransforms.Fourier.BluesteinForward '에 가장 적합한 오버로드 된 메서드 지금은 단지 [] Complex32 []로 변경 (System.Numerics.Complex [], MathNet.Numerics.IntegralTransforms.FourierOptions)는 '일부 잘못된 인수

있다

사람이 어떻게 .NET 4.0에서이 문제를 해결하는 아이디어를 가지고 있습니까?

+1

System.Numerics에 대한 참조 추가 –

+0

어셈블리 참조가 없습니다. 고마워. – MomooomoM

답변

1

Hans Passant의 의견은 정확합니다. System.Numerics에 대한 참조 만 추가하면됩니다. 기술적으로 이는 NuGet 패키지에 선언되어 있으므로 패키지가 다시 설치되면 프로젝트에 자동으로 추가되어야합니다 (프로젝트의 대상 프레임 워크를 변경할 때 필요함).

.Net 3.5에는 System.Numerics가 없으므로 Math.NET Numerics가 자체 구현을 제공하지만 .NET 4.0 이상에서는 System.Numerics의 기본 제공 형식을 사용하여 호환 가능합니다. 생태계와