Ответы пользователя по тегу Обработка сигналов
  • Как правильно сделать комплексное преобразование Фурье в python?

    @res2001
    Developer, ex-admin
    Использовать numpy.fft.fft().
    Можно использовать с действительными числами, преобразование все равно будет комплексным.
    Если уж сильно хочется чтоб было все комплексное - просто добавьте нулевую мнимую часть к вашим действительным числам. Это можно сделать например сложив ваш действительный массив с 0j.
    Ответ написан
  • Дискретизация сигналов?

    @res2001
    Developer, ex-admin
    На практике вы выбираете частоту дискретизации. Неограниченный сигнал может быть только в воображении, имхо.
    ЧД выбирается по следующим критериям:
    1. Исходя из максимальной частоты используемого частотного диапазона. Частота дискретизации получается по теореме Котельникова/Найквиста. Т.е. просто умножаем на 2 максимальную частоту вашего диапазона. Для высоких частот есть свои нюансы. Полученная ЧД является нижней границей для реальной ЧД.
    2. Характеристиками входного сигнала. Во входном сигнале могут присутствовать высокочастотные шумы, если вы не будете их фильтровать аналоговым фильтром, то это надо учитывать при выборе ЧД. Так же нужно учитывать и АЧХ аналогового фильтра, т.к. нет в жизни ничего идеального.
    3. Возможностями используемого оборудования. АЦП могут выдавать далеко не произвольную ЧД. Возможности АЦП зависят от многих деталей конкретной модели. Обычно при инициализации АЦП вы задаете желаемую ЧД, а АЦП работает на той на которой он может и которая больше всего подходит к вашей хотелке. Так что после инициализации всегда нужно опрашивать АЦП на какой же ЧД он работает.
    Ответ написан
    Комментировать
  • Какой библиотекой для создания сигналов вы используете в JS, или есть ли более удобные варианты на других языках?

    @res2001
    Developer, ex-admin
    python - numpy, scipy
    matlab
    В С/С++ зависит от того, что вам надо от библиотеки. Возможно будет достаточно fftw или аналогов.
    Ответ написан
    2 комментария
  • Как работать со звуком в С#?

    @res2001
    Developer, ex-admin
    В wav сигнал пишется во временной области, т.е. как он снимается с микрофона и преобразуется в цифру в таком виде и попадает в wav (ну это упрощенный вариант). Во временной области частот нет. Частоты это синусоиды. Временная область представляет собой сумму всех синусоид составляющих сигнал.
    Чтобы перейти к частотам (герцам) вам нужно выполнить дискретное преобразование Фурье (в матлабе - fft() ).
    На выходе fft вы получите массив частот. В первой половине массива будет то что вам нужно, берете элемент с индексом 440 (частота 440 Гц) значение этого элемента будет амплитуда частоты 440 Гц.
    Ответ написан
  • Как проинтегрировать (найти первообразную) цифрового сигнала на C++?

    @res2001
    Developer, ex-admin
    Проинтегрировать тут не выйдет, поскольку сигнал конечный, а для интегрирования подавай бесконечный.
    Если вы хотите получить спектр сигнала в частотной области, то вам нужно быстрое преобразование Фурье (FFT). Можете начать отсюда: www.fftw.org
    Во многих математических библиотеках есть реализации, например в Intel Math Kernel Library.
    Ответ написан
    Комментировать