Цитата(Nukers @ Mar 8 2010, 00:00)

Тут я постарался графически отобразить мое понятие временного наложения кольцевого буфера (Оно конечно абстрактно)
Себе я выстроил такой алгоритм (поправьте, если заблуждаюсь):
1) Принимаем порцию из 1024 отсчетов.
2) Накладываем окно (т.е. копируем эту порцию 4 раза).
3) Делаем 4096 точечное БПФ.
4) Удаляем порцию из 1024 отсчетов №4.
5) Принимаем новую порцию из 1024 отсчетов.
6) Идем на шаг 3.
(Выходит пока буфер "протолкнет" последний отсчет, принятый в самом начале пройдет 4 цикла БПФ - усвоил).
и так пока солнце не сгорит.... Верно?В MatLab можно с помощью утилиты Filter Design & Analysis Tool можно рассчитать функцию окна. Там же можно узнать АЧХ этой функции и кучу разных параметров, вообщем вы знаете. Если эту оконную функцию экспортировать в Simulink, то будет построен стандартный прямой КИХ фильтр (вот почему я упоминал слово фильтр).
Выходит, что для реализации оконной функции есть два метода: один при помощи кольцевых буферов, второй умножением каждого отсчета сигнала на соответсвующий весовой коэффициент и его сдвигом.
Не могу не поучаствовать.
При наложении окна на выборку окно ничего не копирует 4 раза. Просто окно как бы сглаживает выборку покраям, уменьшая разрывы функции при FFT.
В матлаб для реализации оконной функции есть Window Design & Analysis Tool. И сглаживание, о котором я тебе говорил, не имеет отношение к КИХ-фильтрации. Просто окно может применяться для построения КИХ-фильтров.
А алгоритм с перекрытием или скользящее окно - просто чтобы быстродействие системы увеличить, и получать результат FFT через меньшие промежутки времени. Тогда просто часть выборок предыдущей итерации (расчёт FFT) используется для следующей итерации.
P.S. Не путай окно как функцию спадающую покраям (Хэмминг, Ханн, Блэкмэн...) и временное окно (время за которое берётся определённое количество выборок).
Стучи в ICQ!)
----------------------------------------------------------------------------------------------------------------------------------------------
То, насколько я знаю проблему, позволяет мне сформулировать вопрос.
Сигнал поступающий на осциллограф может иметь полосу до 100кГц.
Остаётся открытым вопрос о длине выборки. Так как сигнал заведомо неизвестен.
Допустим сигнал содержит составляющие 100Гц, 105Гц и 302 Гц.
если N = 4096 то частотное разрешение в спектре составит 200000/4096 = 48,82 Гц.
И мы просто не увидим с пектре гармоники 105, 302 Гц. Они просто переползут на ближайшие бины БПФ. и сильно могут искозить то, что должно приходиться на эти бины.
Можно сделать вывод, что нужно сначала задаться наименьшим возможным шагом гармоник в сигнале?
Как это решается в современных анализаторах спектра?
Могу предположить, что в выборки сигнала можно вставить нули....
Сообщение отредактировал TigerSHARC - Mar 8 2010, 07:29