Частотный анализ очень короткого сигнала в GNU Octave

У меня есть несколько очень коротких сигналов от осциллографа (50–200 тыс. Отсчетов), зарегистрированных в течение примерно 2 мсек. Это акустические сигналы с зарегистрированным сигналом искры ЭСР (электростатического разряда). Я хотел бы получить некоторые частотные данные этого сигнала в почти акустическом диапазоне частот (примерно до 30 кГц) с как можно более высоким временным разрешением.

Я попытался построить спектрограмму (спектрограмму в октаве) для просмотра сигнала, но результат на самом деле бесполезен. Используя specgram( x, N, fs );, где x - мой сигнал частоты дискретизации fs, я получаю график, начинающийся с очень высоких частот около 500 МГц для низких значений N, и я получаю лучшее разрешение по частоте для больших значений N (например, 2 ^ 12-13), но окно слишком широкий, и я получаю только 2 значения спектра по всей длине сигнала.

Я понимаю, что это может быть ограничение преобразования Фурье, которое, вероятно, используется функцией specgram (на самом деле, я мало что знаю об анализе сигналов).

Есть ли другой способ получить информацию о частоте (как функции времени) такого сигнала? Я кое-что читал о вейвлетах, но когда я попытался использовать dwt функцию пакета signal, я получил эту ошибку:

error: 'wfilters' undefined near line 51 column 14
error: called from
    dwt at line 51 column 12

Даже если бы это сработало, я не уверен, знаю ли я, как на самом деле использовать вывод этих вейвлет-функций ...


person Soul Reaver    schedule 29.12.2015    source источник


Ответы (1)


Чтобы получить информацию о звуковой частоте с такой высокой частотой дискретизации, вам потребуется получить вектор отсчетов, достаточно длинный, чтобы содержать по крайней мере несколько полных циклов на звуковых частотах, например много десятков миллисекунд непрерывных отсчетов, которые могут быть или не быть больше, чем может собрать ваш осциллограф. Чтобы разумно обработать этот объем данных, вы можете отфильтровать данные выборки нижними частотами, чтобы они содержали только звуковые частоты, а затем передискретизируете их до более низкой частоты дискретизации, но выше, чем частота среза фильтра в два раза. Тогда вы получите гораздо более короткий вектор отсчетов для подачи БПФ для анализа звукового спектра.

person hotpaw2    schedule 29.12.2015
comment
похоже, что фильтрация может быть лучшим вариантом, даже если я не смогу получить спектр как функцию времени для такого короткого сигнала (максимум 2 ÷ 4 мс, с фактическим сигналом искры длиной около 1 мс), возможно, я буду способен отфильтровать все более низкие частоты (для меня это просто шум), которые на осциллографе больше похожи на почти постоянное значение, и что-то делать с этим отфильтрованным сигналом. P.S. здесь нет циклов;) в идеальной ситуации ESD создает N-волну, которая соответствовала бы 1 циклу синусоидальной волны (просто другой формы), на самом деле это 1 цикл и 4-5 очень маленьких (амплитудных) повторений после - person Soul Reaver; 30.12.2015