2016-09-15 2 views
1

Я работаю с некоторыми данными акселерометра, и было высказано предположение, что я делаю некоторые окна для изоляции различных событий в сигнале. В отличие от большинства вещей, оконное оформление плохо документировано в MATLAB, и я надеялся на некоторые простые примеры (или предлагаемые чтения и ссылки) для оконного оформления. Мне также было интересно, почему это окно вообще, а не просто разбивать данные на разделы и анализировать отдельные кадры. Благодарю.Оконные сигналы в MATLAB

Пример испытания или события показан ниже: enter image description here

Мои исходные данные выглядит следующим образом: Как показано выше, одиночный всплеск расширен.

Также можно предположить, как я буду использовать первый график, используя MATLAB.

enter image description here

ответ

1

Windowing больше в сферах теории обработки сигналов, чем программирование, однако это очень важно, когда понимание выход БПФ, так что, вероятно, стоит объяснить, в немного более подробно.

По существу, когда вы усекаете сигнал (например, обрабатываете его в блоках), вы изменяете частотную область довольно удивительным образом. Вы в конечном итоге свертываете (то есть размазываете) все частотные термины с помощью функции «окна». Если вы ничего не делаете, кроме усечения, то эта функция является sin()/sin(). Что происходит, так это то, что это распространяет частотный контент исходного сигнала по всему спектру, и если есть доминирующий компонент, тогда все остальное зарывается этим. Чем короче блоки, тем хуже эффект, так как окно становится более толстым в частотной области.

Окно с формованным окном, таким как Хэмминг, Ханнинг или Блэкмен, изменяет реакцию частотной области, делая размывание более локализованным на исходный сигнал. В результате результирующая частотная область становится намного яснее.

Для анализа блока данных, х, то, что вы должны сделать

transform=fft(x.*hanning(length(x))); 

Результат будет комплекс, который можно отобразить с plot(20*log10(abs(transform)))

Для математического анализа см https://cnx.org/contents/[email protected]/Spectrum-Analysis-Using-the-Di

Если вы хотите практический практический опыт того, что делает окно, попробуйте https://cnx.org/contents/[email protected]/Spectrum-Analyzer-MATLAB-Exerc

+0

Благодарим вас за подробный ответ @Dave. Некоторые из сигналов, с которыми я работаю, состоят из нескольких коротких дискретных событий, независимых друг от друга. В этом случае можно ли просто разделить сигнал на каждое отдельное событие и вычислить БПФ каждого события. – Michael

+0

Если события коротки, то вам обязательно нужно окно данных! Кратковременная последовательность приводит к широким окнам с наихудшим возможным размазыванием в результате усечения в одиночку. Просто попробуйте разные окна - просто замените «hamming» на что-то более подходящее. Вам нужно быть немного осторожным, поскольку, поскольку чем мощнее окно (чем ниже размазывание на частотах, более отдаленных от сильной спектральной составляющей), тем шире будет основной компонент, что означает, что разрешение в частотной области падает. Вы ничего не получите! – Dave

+0

События короткие, но сигнал полностью обнуляется между событиями. Именно так мы записали данные. Вместо того, чтобы записывать сигнал для каждого события или теста, мы непрерывно записывали и позволяли всем переходным процессам умирать, прежде чем выполнять следующий тест. Я отправлю пример в исходном вопросе. – Michael