Ru — Статья: FFT анализ

Мы делим исходный сигнал на блоки и говорим: в этом блоке имеются такие-то частоты. С FFT = 1024 шаг сетки частот составляет 43 Гц! Это частоты 43, 86, 132 и т.д.

Как видно, несмотря на то, что сигнал весьма сильно скрыт шумом, в спектральном представлении все еще отчетливо видны дискретные составляющие (хоть и немного искаженные по амплитуде шумом). Это именно амплитудный спектр, если вы обратите внимание амплитуды пиков в спектре совпадают с заданными в качестве параметров. Смысл преобразования в том, что если сложить N/2 +1 функций Re * Sin + Im * Cos, где функции Sin и Cos с периодом, повторяющимся соответственно от 0 (константа) до N/2 раз (0, 1, 2, 3, 4 и т.д.

Разные функции приводят к разным результатам, и все они располагаются в некий спектр, от почти-ничего-не-делания до сильного вмешательства в спектральное разложение. Это — обычно тот параметр, который отвечает за качество FFT разложения (и, соответственно, обработки).

Но мы ведь их и так не используем, мы лишь строим спектр

По работе неоднократно сталкивался с необходимостью быстро определить наличие в сигнале гармонических составляющих. MATLAB позволяет не заморачиваться с ручным удалением ненужных объектов, однако, при работе с более менее объемными массивами данных, имеет привычку капризничать и жаловаться на недостаток памяти. Дисперсию шума возьмем в 3 раза больше амплитуды первой синусоиды. MATLAB (Matrix Laboratory), как следует из названия, предназначен прежде всего для работы с массивами, практически все алгоритмы счета в нем оптимизированы для работы с векторами.

Случайный Гауссов шум задается функцией randn, результатом которой является массив размерности, заданной в ее параметрах. Для единообразия зададим его в виде строки (первый параметр 1) длиной соответствующей длине нашего массива отсчетов времен, что в свою очередь вычислим функцией length. Также добавленная точка сделает поэлементным возведение в степень и деление.

На приведенном графике 5 пиков вместо ожидаемых 3х (постоянная + 2 синусоиды), их амплитуды не совпадают с амплитудами исходных сигналов, и ось абсцисс вряд ли отображает частоты. Т.е. на самом деле 0 (которому соответствует постоянная часть сигнала) должен приходиться на середину массива. Т.е. весь полученный массив покрывает Fd частот. Учитывая равенство амплитуд левой и правой частей спектра и соответствие их фаз с точностью до знака, весь спектр будет эквивалентен своей положительной части с удвоенной амплитудой.

Разрешение по частоте зависит от размера преобразования, и составляет половину от этого размера

Таким образом, можно избавиться от «непонятных» и зачастую ненужных отрицательных частот. Теперь это уже похоже на тот результат, который мы ожидаем. Единственное, что смущает теперь – это амплитуды. С этим все достаточно просто. Про график каюсь, надо бы указать, что строю именно амплитуды, собственно в самом скрипте видно, что я беру модуль. На счет амплитуды — не смог сформулировать по-другому, но имеется ввиду суммарный уровень частот попавших в полосу (при этом не могу сказать что там прямо таки сумма).

Я БПФ представляю как последовательный перебор корреляции сигнала с синусоидами различных частот начиная с отрицательных индексов. Поэтично что ли… «Видны дискретные составляющие» — это тоже нехорошо. У вас же сам сигнал в дискретном времени, в нем каждый отсчет — дискретная составляющая. Его амплитуда могла быть как постоянной, так и меняться во времени. У меня в свое время поэтому руки не доходили ответа на вопрос «в каких попугаях» построены эти графики.

Собственно это и хотел показать, что пики находятся именно на своих местах и принимают реальные значения сигнала во временном домене безотносительно к типу сигнала (паскали, вольты, метры).

Вот как я и говорил — ввели в заблуждение… Задача для Буратино: Малыш, представь, что у тебя в кармане три яблока и тут некто взял у тебя одно яблоко. Я про то, что линии на графике, строго говоря, не есть частоты, а лишь их изображение, интерпретация, визуализация.

И если брать несущую частоту — ее близость к нулю (абсолютному, если не оговорено опять же смещение оси частот) означает близость несущего сигнала к постоянному. Я говорил про реальный спектроанализатор, и рассказал про эксперимент который позволяет ощутить реальность несуществующих отрицательных частот.

Наверное тут имелась ввиду амплитудная модуляция, а не аддитивная смесь. Там реально возможна картинка с пиками, пляшущими вокруг несущей (и слева и справа). Только все же отрицательные частоты действительно не несут особого смысла, это тот же самый синус, но повернутый на 180 градусов. Можете в википедии почитать про Отрицательные частоты . Если вращается в одну сторону, то имеет положительную частоту, а если в другую, то отрицательную.

Да нисколько. Поэтому смотрим, что делает наш фильтр с неудачным FFT разложением: он обнуляет основную частоту, но остаются не обнуленными коэффициенты при 102, 105, 108 и т.д

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

Это обобщенно и проще можно назвать энергией в данной элементарной полосе частот. А если обратить внимание еще и на фазовый спектр (его не приводил в связи с непрезентабельностью), то можно в точности восстановить весь сигнал на протяжении всех 5 секунд.

Что еще посмотреть: