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
Благодарим вас за подробный ответ @Dave. Некоторые из сигналов, с которыми я работаю, состоят из нескольких коротких дискретных событий, независимых друг от друга. В этом случае можно ли просто разделить сигнал на каждое отдельное событие и вычислить БПФ каждого события. – Michael
Если события коротки, то вам обязательно нужно окно данных! Кратковременная последовательность приводит к широким окнам с наихудшим возможным размазыванием в результате усечения в одиночку. Просто попробуйте разные окна - просто замените «hamming» на что-то более подходящее. Вам нужно быть немного осторожным, поскольку, поскольку чем мощнее окно (чем ниже размазывание на частотах, более отдаленных от сильной спектральной составляющей), тем шире будет основной компонент, что означает, что разрешение в частотной области падает. Вы ничего не получите! – Dave
События короткие, но сигнал полностью обнуляется между событиями. Именно так мы записали данные. Вместо того, чтобы записывать сигнал для каждого события или теста, мы непрерывно записывали и позволяли всем переходным процессам умирать, прежде чем выполнять следующий тест. Я отправлю пример в исходном вопросе. – Michael