Я пытаюсь найти решение в течение нескольких недель, и я действительно прочитал все темы, связанные с этой темой, поэтому я действительно надеюсь, что кто -то сможет мне помочь. < /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
Сделать Math.net Fourier работать ⇐ C#
Место общения программистов C#
1739894755
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[i], 0);
buffer[i] = 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>
Подробнее здесь: [url]https://stackoverflow.com/questions/35540086/make-math-net-fourier-work[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия