Сделать Math.net Fourier работатьC#

Место общения программистов C#
Ответить
Anonymous
 Сделать Math.net Fourier работать

Сообщение Anonymous »

Я пытаюсь найти решение в течение нескольких недель, и я действительно прочитал все темы, связанные с этой темой, поэтому я действительно надеюсь, что кто-то может помочь мне с этим. Фурье-преобразователь для работы. < /p>

вместо того, чтобы дать мне разумные результаты, я получаю только NAN-значения. < /p>

У меня есть следующий код: < /p>

public FFTPerformer(float[] soundvalues)
{
buffer = new System.Numerics.Complex[4096];
try {
for (int i = 0; i < 4096; i++)
{
System.Numerics.Complex tmp = new System.Numerics.Complex(soundvalues, 0);
buffer = tmp;
}
}
catch(Exception ex)
{
System.Windows.MessageBox.Show("Es ist ein Fehler bei der Konvertierung des float arrays zum Complex-Array aufgetreten; " + ex.Message);
}
}
< /code>

4096 обычно заменяется более высоким числом, которое все еще является силой, но даже не работает с этим. < /p>

public void performFFT()
{
try
{
MathNet.Numerics.IntegralTransforms.Fourier.Forward(buffer, MathNet.Numerics.IntegralTransforms.FourierOptions.Matlab);
}
catch(Exception ex)
{
System.Windows.MessageBox.Show("Fehler: " + ex.Message);
}
}
< /code>

Немного более подробное описание:
Я устанавливаю длину для значений 4096, потому что это фактор двух, и эта длина предназначена только для испытательных целей, так что это немного быстрее, чем использование исходного звука из некоторых миллионов ценностей;), так что это похоже на это, только до тех пор, пока альгорит не доказывается. Это также является причиной странной для петли. Даже Tough Math.net использует алгоритм Bluestein для расчета, попробуйте его с фактором из двух массивов, потому что они просто должны работать, даже если они используют какой-либо другой алгоритм атм. 4096 Комплексные числа В этом БПФ все они имеют y = 0, но X зависит от аудио-файла (читайте в другом потоке, что y-значения не нужны для аудио-FFT, поэтому вы должны установить их на 0). Все x-значения являются нормальными плавающими номерами, нет NANS. Но, тем не менее, FFT просто дает массив, полный NANS. Все еще получайте мои звуковые атмосферы и преобразуйте их в комплексную аварию. Я проверил все преобразования в соответствии с последовательностью, и в этой области все в порядке. Итак, мой вопрос: если я действительно должен использовать это только < /p>

MathNet.Numerics.IntegralTransforms.Fourier.Forward(buffer, MathNet.Numerics.IntegralTransforms.FourierOptions.Matlab);
< /code>

или, если мне нужно что -то, чтобы сделать это, чтобы сделать чистый FFT в math.net < /p>

Подробнее здесь: https://stackoverflow.com/questions/355 ... urier-work
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»