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

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

Сообщение Anonymous »

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

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

< P> Задача, над которой я работал так долго,-это заставить эту трансформу Фурье работать. < /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 для расчета, попробуйте его с фактором из двух массивов, потому что они просто должны работать, даже если они используют любой другой алгоритм Atm. < /P>

Чтобы получить ошибку с этим попыткой, из-за преобразования с плавающей точкой, но она не поднимает. Комплексные числа В этом БПФ все они имеют y = 0, но x зависит от аудио-файла (читайте в другом потоке, что y-значения не нужны для аудио-FFT, поэтому вы должны установить их на 0). Все x-значения являются нормальными плавающими номерами, нет NANS. Но все же, БПФ просто возвращает массив, полный Нанса. , так что я, что конструкция с переменной TMP. < /p>

Редактировать:
Я закончил читать еще больше статей об алгоритмах FFT.
Теперь я все еще Получите мои звуковые атмосферы и преобразовать их в комплексную аварий. Я проверил все преобразования в соответствии с последовательностью, и в этой области все в порядке. Итак, мой вопрос: если я действительно должен использовать это только < /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#»