Цифровая обработка сигналов. Водяные знаки в аудиофайлах: учебное пособие / Е.Л. Столов.

F i l terBand = s g n . I f i l t e r ( В , 1 . .F i l t e rA d d ) [N :] Ln = l en (F i l t e rB and ) Beg = 0 End = LnFragm Out = [] wh i le True: I n t i = SourceBand[Beg:End] Int2 = Fi lterBand[Beg:End] Crr = n p . c o r r e l a t e ( I n t 1 , I n t 2 [ : LnFragm/2] , ’v a l i d ’ ) Прежде всего надо выделить полосу 800Я г из модифицированного файла. Мы не хотим допустить фазового искажения при извлечении этой полосы, поэтому выбирается f i rwin для этой цели (обратим внимание на значение параметра nyq = 0.5). При этом длина фильтра должна быть весьма значительной, в данном примере она равна 81. Если в качестве частоты Иф выбрать меньшие значения, возникают проблемы с качеством созданного фильтра. Величину смещения подсчитывают по максимуму взаимной корреляции двух интервалов. Однако прямой подход приводит к неустойчивому результату. В этой связи для получения нужного значения сдвига предлагается находить это значение путем сравнения положений локальных максимумов корреляционной функции с одним из двух чисел (5 и 15, найденных ранее). Это сделано с помощью функции f i ndCl oses из скрипта 21. Скрипт 21. Поиск ближайшего локального максимума корреляционной функции def i sLoca lMax (Corr ,Po s ) : Out = Fa l s e i f Co r r [Po s - 1 ]<= Corr[Pos] \ and Corr [Pos+1] <= Corr[Pos]: Out = True re turn Out

RkJQdWJsaXNoZXIy MTExODQxMg==