русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Рекурсивный метод


Дата добавления: 2015-07-23; просмотров: 912; Нарушение авторских прав


Для начала дискуссии о рекурсивных фильтров представьте, что вам необходимо извлечь информацию из некоторого сигнала x[ ]. Ваша нужда так велика, что вы наняли старого профессора математики для обработки нужных вам данных. Задача профессора отфильтровать x[ ], что бы получить сигнал y[ ], который удачно содержит интересующую вас информацию. Профессор начал свою работу с вычисления каждой точки в y[ ], согласно некоторому алгоритму, который запрятан в его переразвитом мозгу. В процессе решения задачи случилось большое несчастье. Профессор начал лепетать об аналитической сингулярности и дробном преобразовании и других демонах из математического кошмара. Ясно, профессор сошел с ума. Вы с беспокойством наблюдаете, как профессора и ваш алгоритм забирают люди в белых халатах.

Вы неистово просматриваете записки профессора и находите алгоритм, который он использовал. Вы обнаруживаете, что он закончил вычисление точек y[0]…y[27], и начал вычислять y[28]. Как показано на рисунке 19-1, мы возьмем переменную n для представления вычисляемых точек. Это означает, что y[n] есть 28-ой отсчет выходного сигнала, y[n-1] – 27, y[n-2] – 26 и т.д. Аналогичным образом, x[n] есть 28 отсчет входного сигнала, x[n-1] – 27 и т.д. Для понимания используемого алгоритма, спросим сами себя: «Какая информация была доступна профессору для вычисления текущего отсчета y[n]?»

Наиболее очевидный источник информации это входной сигнал, то есть величины: x[n], x[n-1], x[n-2], … Профессор мог перемножить каждую точку входного сигнала на коэффициент и сложить результаты вместе:

 

y[n] = a0x[n] + a1x[n-1] + a2x[n-2] + a3x[n-3] + …

 

Вы, наверное, уже догадались, что это ничего больше, чем простая свертка с коэффициентами a0, a1, a2, …, которые формируют ядро свертки. Если это было все, что сделал профессор, то это мало подходит для нашей истории или для этой главы. Однако имелся еще другой источник информации, к которому профессор имел доступ: предыдущие вычисленные величины выходного сигнала: y[n-1], y[n‑2], y[n-3], … Используя эту добавочную информацию, алгоритм можно представить в виде:



 

y[n] = a0x[n] + a1x[n-1] + a2x[n-2] + a3x[n-3] + …

+ b1y[n-1] + b2y[n-2] + b3y[n-3] + …

 

ФОРМУЛА 19-1

Рекурсивная формула. В этой формуле x[ ] – входной сигнал, y[ ] – выходной сигнал, a и b коэффициенты.

 

То есть, каждая точка выходного сигнала находится перемножением величин входного сигнала на коэффициент «а», перемножаются ранее вычисленные величины выходного сигнала на коэффициент «b», и складываются результаты. Заметьте. Здесь нет величины b0, так как она соответствует вычисляемому отсчету. Формула 19-1 называется рекурсивной формулой, и фильтр, который использует ее, называется рекурсивным фильтром. Величины «а» и «b», которые определяют фильтр, называются рекурсивными коэффициентами. На практике не используется более дюжины рекурсивных коэффициентов, иначе фильтр становится неустойчивым (выход непрерывно увеличивается или колеблется). Таблица 19-1 показывает пример программы рекурсивного фильтра.

Рекурсивные фильтры полезны, так как они позволяют обойтись без длинной свертки. Например, рассмотрим, что случится, когда дельта функция пройдет через рекурсивный фильтр. Выход в этом случае является импульсным откликом и будет типичными синусоидальными колебаниями экспоненциально затухающими. Поскольку этот импульсный отклик бесконечно длинный, то рекурсивные фильтры часто называются фильтрами с бесконечным импульсным откликом (IIR). В действительности, рекурсивные фильтры свертывают входной сигнал с очень длинным ядром фильтра, хотя используется только несколько коэффициентов.

РИСУНОК 19-1

Запись рекурсивного фильтра. Выходной вычисляемый сигнал y[n] определяется величинами входного сигнала x[n], x[n-1], x[n-2], …, так же как и ранее вычисленными величинами выходного сигнала y[n-1], y[n-2], y[n-3], … Эти рисунки показаны для n = 28.

 

Соотношение между рекурсивными коэффициентами и откликом фильтра даются математической областью, называемой z-преобразованием, темой главы 33. Например, z-преобразование может быть использовано для таких задач: преобразование между рекурсивными коэффициентами и частотным откликом, создание одного фильтра путем последовательного и параллельного включения каскадов, создание рекурсивных систем, которые похожи на аналоговые фильтры и т.д. К несчастью, z-преобразование очень насыщено математикой и достаточно сложно, чтобы большинство пользователей ЦОС способно было иметь с ним дело. Это область тех, кто специализируется в ЦОС.

Имеется три способа нахождения рекурсивных коэффициентов без знания z-преобразования. Первый, эта глава представляет формулы их нахождения для простых рекурсивных фильтров. Второй, глава 20 дает «рецепт» компьютерной программы для создания более изощренного низкочастотного и высокочастотного фильтра Чебышева. Третий, глава 26 описывает итеративный метод для создания рекурсивных фильтров с произвольным частотным откликом.

 

100 'РЕКУРСИВНЫЙ ФИЛЬТР

110 '

120 DIM X[499] 'хранение входного сигнала

130 DIM Y[499] 'хранение отфильтрованного выходного сигнала

140 '

150 GOSUB XXXX 'воображаемая п/п для вычисления рекурсивных

160 ' 'коэффициентов: A0, A1, A2, B1, B2

170 '

180 GOSUB XXXX 'воображаемая п/п для загрузки X[ ] с входными данными

190 '

200 FOR I% = 2 TO 499

210 Y[I%] = A0*X[I%] + A1*X[I%-1] + A2*X[I%-2] + B1*Y[I%-1] + B2*Y[I%-2]

220 NEXT I%

230 '

240 END

ТАБЛИЦА 19-1

РИСУНОК 19-2

Однополюсный низкочастотный фильтр. Цифровой рекурсивный фильтр может походить на аналоговый фильтр, состоящий из резисторов и емкостей. Как показано в этом примере, однополюсный низкочастотный рекурсивный фильтр сглаживает входной скачок также, как электронный RC фильтр.

 



<== предыдущая лекция | следующая лекция ==>
Свертка через БПФ | Задание #6


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.409 сек.