2017-02-17 5 views
1

У меня проблема с вычислением БПФ из моего набора данных с использованием Math.NET с .NET4.0.FFT с Math.NET 4.0 - Complex32 [] vs Complex []

Я использовал .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 и должно быть добавлено автоматически в проект после того, как пакет будет переустановлен (что требуется при изменении целевой структуры проекта).

Нет. System.Numerics в .Net 3.5, поэтому Math.NET Numerics приносит свою собственную реализацию там, но для .Net 4.0 и новее он использует встроенный тип из System.Numerics, чтобы быть совместимым с экосистемой.

Смежные вопросы