2017-02-17 508 views
1

我有一個問題,從我的數據集使用Math.NET .NET4.0計算FFT。FFT與Math.NET 4.0 - Complex32 []與複雜[]

我所使用的.NET 3.5 Math.NET像這樣沒有任何錯誤:

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。 當我現在變更配合物[]至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最好重載方法匹配(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的內置類型來兼容與生態系統。