Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 1086

.pdf
Скачиваний:
5
Добавлен:
30.04.2022
Размер:
754.82 Кб
Скачать

4. ЛАБОРАТОРНАЯ РАБОТА № 4 ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ КИХ-ФИЛЬТРОВ C ИСПОЛЬЗОВАНИЕМ СВЕРТКИ

4.1. Цель работы:

Целью лабораторной работы является: 1) изучение операции свертки во временной области; 2) изучение связи между сигналами, определенными во временной и частотной областях; 3) изучение частотных характеристик КИХ-фильтра.

4.2. Свертка цифровых последовательностей и характеристики КИХ-фильтров

В КИХ-фильтрах для вычисления текущего значения выходного сигнала используются только текущие и предыдущие отсчеты входного сигнала. Причем, при вычислении выходных отсчетов используется сложение примерно так же, как мы используем сложение в процессе усреднения.

Рассмотрим работу КИХ-фильтра на простом примере. Допустим, мы хотим определить количество машин, проходящих по мосту за 5 минут. При обычном усреднении следовало бы подсчитать количество машин и разделить на время. При усреднении с помощью КИХ-фильтров алгоритм усреднения несколько изменяется:

-интервал наблюдения разделяют на n подинтервалов (в данном примере машины подсчитываются за одну минуту);

-среднее определяется путем суммирования машин за каждый интервал с последующим делением полученной суммы на количество интервалов.

x(1) x(2) x(3) x(4) x(5)

y

 

 

 

,

(4.1)

 

5

ave

 

 

 

 

где x(1),…,x(5)

- отсчеты за дискретные интервалы наблюде-

ний; yave - среднее значение за 5 наблюдений.

 

29

Выражение (4.1) определяет усреднение yave за пер-

вые пять отсчетов. Если прошло 6 интервалов наблюдений, то отсчеты изменятся

x(2) x(3) x(4) x(5) x(6)

y

 

 

 

,

(4.2)

 

 

 

5

ave

 

 

 

 

т.е. первый отсчет будет потерян безвозвратно, а в вычислении среднего значения будет использован 6-ой отсчет.

В общем случае, если k – й входной отсчет есть x(k),

то n- й выходной отсчет вычисляется как

x(n 4) x(n 3) x(n 2) x(n 1) x(n)

yave

 

 

 

 

 

 

 

 

5

 

n

 

 

.(4.3)

x(k)5

k n 4

На рис. 4.1 представлена блок-схема фильтра, соответствующая выражению (4.1).

Рис. 4.1. Блоксхема КИХ-фильтра с четырьмя блоками задержки (ЗАД) в момент, когда на вход поступает пятый отсчет

Из рис. 4.1 видно, что задержки, образуют сдвиговый регистр, в котором входные отсчеты запоминаются на время дискретности (время подинтервала). После окончания первого подинтервала информация из первого блока задержки проталкивается во второй блок задержки и т.д. После окончания пятой минуты получим пять отсчетов, которые позволяют вы-

30

числить среднее значение по формуле (4.1). При появлении шестого отсчета первый отсчет теряется безвозвратно, а среднее значение вычисляется по формуле (4.2). Для k-го отсчета среднее значение вычисляется по формуле (4.3).

При усреднении мы складываем пять отсчетов, и делим сумму на пять. При реализации КИХ-фильтра целесообразно выход каждого блока задержки умножить на свой коэффициент веса (для данного примера 0,2), а затем вычислить сумму, как показано на рис. 4.2. Алгоритм обработки сигналов не изменится

Рис. 4.2. Альтернативная блок-схема КИХ-фильтра в виде структурных схем

Рис. 4.2 позволяет:

-придать обработке входных последовательностей алгоритм, приспособленный для обработки данных в ЭВМ;

-ввести для выходных сигналов линий задержек разные коэффициенты веса.

Первый индекс, как принято при описании работы КИХ-фильтров, принимаем равным 0. Тогда первый входной отсчет обозначим как x(0), второй – x(1), следующий – x(2) и

т.д. Аналогично будут индексироваться и коэффициенты веса,

то есть h(0), h(1),…h(n) .

В качестве коэффициентов веса в выражениях ((4.1)- (4.3)) использовался множитель 0,2. Поскольку в цифровых фильтрах коэффициенты веса принимают разные значения, то для их представления введем некоторую переменную, напри-

31

мер h(k). Тогда выражение (4.3) можно представить в общем виде

y(n) h(4)x(n 4) h(3)x(n 3) h(2)x(n 2) h(1)x(n 1)

4

(4.4)

h(0)x(n) h(k)x(n k).

 

k 0

 

Сделаем еще один шаг в сторону обобщения выражения

(4.4) и запишем n- й отсчет КИХ-фильтра с М-ответвлениями

M 1

 

y(n) h(k) x(n k),

(4.5)

k 0

 

Итак, мы получили уравнение свертки в приложении к

цифровым КИХ-фильтрам. Согласно уравнению (4.4) следует

первый коэффициент веса

h(0)

умножить на n-й отсчет x(n),

второй коэффициент веса

h(1)

умножить на (n 1)-

й отсчет

входной последовательности

(h(1)x(n 1)), и т.д.

Согласно

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

2.

32

Рис. 4.3. Свертка в усредняющем фильтре: 1-первые пять входных отсчетов необходимы для вычисления первого выходного отсчета; 2- сдвиг входной последовательности на один такт для вычисления второго выходного сигнала

Рис. 4.3 иллюстрирует вычисление первых двух отсчетов выходной последовательности. Последующие отсчеты выходной последовательности определяются аналогично.

Осуществив замену переменных в выражении (4.5), получим еще одну формулу

M 1

 

y(n) h(n k) x(n),

(4.6)

k0

вкоторой входная последовательность остается неизменной, а коэффициенты веса, над которыми предварительно осуществлена инверсия, перемещаются относительно входной последовательности.

Определение y(n) требует значительного объема вы-

числений. В MatLab эта процедура упрощается с помощью функции conv . Эта функция осуществляет свертку двух числовых последовательностей, заданных векторами x и h.

y=conv(x,h)

Особенности применения функции conv рассмотрим на конкретном примере, приведенном на рис. 4.3 (программа 4.1).

x=[1,2,3,4,5];

%Входная последовательность.

h=[0.2,0.2,0.2,0.2,0.2]; %Коэффициенты веса.

y1=conv(x,h)

%Операция свертки

 

33

figure(1) %Результат операции свертки. stem(y1), grid on

%Второй блок программы

x=[1,2,3,4,5,6]; %Входная последовательность. h=[0.2,0.2,0.2,0.2,0.2,0];%Коэффициенты вес увеличенной дли-

ны.

 

y2=conv(x,h)

%Операция свертки

figure(2)

%Результат операции свертки.

stem(y2), grid on

 

%Третий блок программы

x=[1,2,3,4,5,6,7];

%Входная последовательность.

h=[0.2,0.2,0.2,0.2,0.2,0,0]; %Коэффициенты вес увеличенной длины.

y3=conv(x,h)

%Операция свертки.

figure(3)

%Результат операции свертки.

stem(y3), grid on

 

%Четвертый блок программы

x=[1,2,3,4,5,6,7];

%Входная последовательность.

h=[0.2,0.2,0.2,0.2,0.2];

%Коэффициенты вес увеличенной

длины.

 

 

y4=filter(h,1,[x,0,0,0,0,0,0])

%Операция свертки

figure(4)

%Результат операции свертки.

stem(y4), grid on

 

 

Рис. 4.4. Результат выполнения первого блока программы

Первые четыре отсчета характеризуют начало работы свертки. Входной сигнал находится в предпоследнем блоке задержки, и на выходе КИХ-фильтра сигнал отсутствует. На пятом отсчете входной сигнал появился на выходе последнего

34

блока задержки и расчеты, выполненные функцией conv, совпадают с выходной ординатой, представленной на рис. 4.1.

Длина вектора выходной последовательности y(n) определяется выражением (6), т. е. длина выходного вектора на единицу меньше длины, определяемой суммой векторов x и h

length(y) length(x) length(h) 1.

Следовательно, для определения второй выходной ординаты фильтра необходимо увеличить длину входной последовательности вектора h. Эта операция выполнена во втором блоке программы (рис. 4.5).

Рис. 4.5. Результат выполнения второго блока программы Третий блок программы подтверждает вышеприведенные рассуждения: для определения третьего выходного сигна-

ла КИХ-фильтра необходимо, чтобы входная последовательность присутствовала во всех боках задержки. Для этого следует увеличить, по сравнению с предыдущим блоком, длину векторов x и h (рис. 4.6).

Рис. 4.6. Результат выполнения третьего блока программы

35

Как и следовало ожидать, увеличение длины векторов x и h позволяют вычислить ординаты КИХ-фильтра на большем количестве интервалов дискретности.

Дискретная свертка в пакете MatLab может выполняться функцией filter, которая имеет следующий синтаксис

y=filter(b,a,x)

где b - вектор коэффициентов нерекурсивной части фильтра (коэффициентов КИХ-фильтра), a-вектор коэффициентов рекурсивной части фильтра (для КИХ-фильтров a=1), x-вектор входного сигнала.

При a=1 функции conv и filter хотя и осуществляют свертку для КИХ-фильтров, но между ними существует различие: функция filter возвращает результат, длина которого равна длине входного сигнала. Чтобы получить результат, полностью совпадающим с тем, что дает функция conv, входной вектор x следует дополнить соответствующим количеством нулей. Этот прием применен при выполнении четвертого блока программы 4.1.

Рис. 4.7. Результат выполнения четвертого блока программы

Сравнение графиков, представленных на рис. 4.6 и рис.4.7, показывают, что они полностью совпадают. Следовательно, при корректировке длины входной последовательности, свертку можно выполнять функциями conv и filter .

Для изучения свойств фильтров вводится импульсная характеристика, которая определяется как последовательность отсчетов во временной области при подаче на вход фильтра единичного отсчета. Рис. 4.8 иллюстрирует это понятие

36

Рис. 4.8. Свертка коэффициентов фильтра и входного импульса для получения импульсной характеристики: (1- единичный отсчет: импульс выровнен с первым коэффициентом фильтра, а выходной импульс характеризуется индексом n=4; 2- входной импульс сдвинут на один такт, выходной импульс при n=5; 3- входной импульс сдвинут вправо на два такта, выходной - при n=6; ... 5-входной импульс сдвинут на пять тактов, выходной - при n=8)

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

Следует обратить внимание на важную особенность: импульсная характеристика фильтра идентична последовательности коэффициентов веса. По этой причине термины ко-

37

эффициенты КИХ-фильтра и импульсная характеристика являются синонимами.

Выходные сигналы КИХфильтров могут быть определены во временных и частотных областях. Во временной области выходная последовательность определяется через интеграл сверки

y(n) h(k) x(n k),

(4.8)

которую часто представляют, используя сокращенную запись

y(n) h(k) x(n),

(4.9)

где символ * обозначает сверку.

от n равно сверке h от

Формула (4.9) читается так: y

kи x от n".

Вчастотной области спектр выходной последовательности Y(m) (ДПФ выходной последовательности) определяет-

ся через спектры сигналов H(m) (ДПФ импульсной переходной функции) и X(m) (ДПФ входной последовательности). В свою очередь спектр выходной последовательности Y(m) может быть вычислен путем применения ДПФ к выходной последовательности y(n).

При известных спектрах H(m) и

X(m) спектр выход-

ного сигнала Y(m) определяется произведением спектров

Y(m) H(m)X(m).

(4.10)

Из (4.9) и (4.10) следует, что интегралу сверки во временной области соответствует произведению спектров импульсной переходной функции и входной последовательности в частной области.

Выражения (4.9) и (4.10) обосновывают пути получения частной характеристики КИХ-фильтра. И так мы знаем, что произведение H(m) X(m)- это ДПФ выходного сигнала фильтра. Поскольку X(m) является ДПФ входной последовательности, то частотная характеристика фильтра есть H(m) ,

38