Методы расчета КИХ-фильтров

Содержание

Слайд 2

Параметры для расчета фильтров

Параметры для расчета фильтров

Слайд 3

Нерекурсивные фильтры

Нерекурсивные фильтры

Слайд 4

Уравнение нерекурсивного фильтра

Несимметричная форма:

xn

a0

a1

a2

aN

xn-1

xn-2

xn-N

Σ

yn

Уравнение нерекурсивного фильтра Несимметричная форма: xn a0 a1 a2 aN xn-1 xn-2 xn-N Σ yn

Слайд 5

Уравнение нерекурсивного фильтра

Cимметричная форма:

Пример: N=2

будущие выборки

Cимметричная форма записи адекватна обработке записанных сигналов

Уравнение нерекурсивного фильтра Cимметричная форма: Пример: N=2 будущие выборки Cимметричная форма записи адекватна обработке записанных сигналов

Слайд 6

Частотная характеристика нерекурсивного фильтра

Воздействие – комплексная гармоника:

Отклик:

Частотная характеристика:

Четность-нечетность
коэффициентов:

Частотная характеристика нерекурсивного фильтра Воздействие – комплексная гармоника: Отклик: Частотная характеристика: Четность-нечетность коэффициентов:

Слайд 7

Частотная характеристика нерекурсивного фильтра

ЧХ цифрового фильтра периодична:

Коэффициенты:

Частотная характеристика нерекурсивного фильтра ЧХ цифрового фильтра периодична: Коэффициенты:

Слайд 8

Расчет фильтра

Расчет фильтра

Слайд 9

Пример расчета фильтра

N=3

k

0

1

2

3

-1

-2

-3

ИХ аналогового фильтра

Пример расчета фильтра N=3 k 0 1 2 3 -1 -2 -3 ИХ аналогового фильтра

Слайд 10

Расчет фильтра в Matlab

% === freq_har.m === Частотная хар-ка ФНЧ ===
a0=0.5; %

Расчет фильтра в Matlab % === freq_har.m === Частотная хар-ка ФНЧ ===
нулевой коэффициент фильтра
ak=[0.3183 0 -0.1061]; % коэффициенты фильтра c 1 по 3
fd=100; % частота дискретизацации
dt=1/fd; % период (шаг) дискретизации
N=3; % половина порядка фильтра
df=0.02*fd; % шаг по частоте
f=-0.5*fd:df:1.5*fd; % диапазон частот
% === расчет суммы ===
sum=0;
for k=1:N,
sum=sum+ak(k)*cos(2*pi*f*k*dt);
end;
H=a0+2*sum; % частотная хар-ка
plot(f,H) % построение графика
grid on % построение сетки

Слайд 11

Пример расчета фильтра

Частотная характеристика для N=3

Fd = 1/Td

Пример расчета фильтра Частотная характеристика для N=3 Fd = 1/Td

Слайд 12

Окна в цифровых фильтрах

Прямоугольное (Дирихле)

Треугольное (Бартлетта)

Хэннинга (Ханна)

Хэмминга

Блэкмана

Ланцоша

Окна в цифровых фильтрах Прямоугольное (Дирихле) Треугольное (Бартлетта) Хэннинга (Ханна) Хэмминга Блэкмана Ланцоша

Слайд 13

Прямоугольное (Дирихле)

Уровень бокового лепестка: - 13 дБ

Прямоугольное (Дирихле) Уровень бокового лепестка: - 13 дБ

Слайд 14

Окно Блэкмана

Уровень бокового лепестка: - 58 дБ

Окно Блэкмана Уровень бокового лепестка: - 58 дБ

Слайд 15

Спектральные образы окон – уровни боковых лепестков

Спектральные образы окон – уровни боковых лепестков

Слайд 16

Пример применения треугольного окна при расчете фильтра

Частотная характеристика для N=9

Более пологие скаты

Более гладкая

Пример применения треугольного окна при расчете фильтра Частотная характеристика для N=9 Более
АЧХ

Слайд 17

Методика Кайзера расчета фильтра

Выбирают значение параметра «альфа», исходя из уровня флуктуаций АЧХ
Вычисляют

Методика Кайзера расчета фильтра Выбирают значение параметра «альфа», исходя из уровня флуктуаций
порядок фильтра, исходя из:
- уровня флуктуаций АЧХ;
- размеров переходной зоны.
Вычисляют коэффициенты ak методом обратного преобразования Фурье

Слайд 18

Уровень флуктуаций АЧХ и размеры переходной зоны

fp

fa

Уровень флуктуаций АЧХ и размеры переходной зоны fp fa

Слайд 19

Расчет параметра «альфа»

Расчет параметра «альфа»

Слайд 20

Смысл параметра

n = 50; k=1:n; % кол-во отсчетов окна
w1 = kaiser(n,1); plot(k,w1);

Смысл параметра n = 50; k=1:n; % кол-во отсчетов окна w1 =
hold on;
w2 = kaiser(n,4); plot(k,w2);
w3 = kaiser(n,9); plot(k,w3); grid on;
legend('alfa = 1', 'alfa = 4', 'alfa = 9')

=1; 4; 9

N=5; alfa=1; k=0:N;
beta=alfa*sqrt(1-(k/N).^2);
w= besseli(0,beta)/ besseli(0,alfa);
plot(k,w)

Слайд 21

Функция Бесселя

>> syms x
>> I = besseli(0,x);
>> ezplot(I)

Построение графика в Matlab:

Функция Бесселя >> syms x >> I = besseli(0,x); >> ezplot(I) Построение графика в Matlab:

Слайд 22

Расчет КИХ-фильтров с окном Кайзера

- функция Бесселя первого рода нулевого порядка

Расчет КИХ-фильтров с окном Кайзера - функция Бесселя первого рода нулевого порядка

- специальный числовой параметр окна Кайзера

Слайд 23

АЧХ окна Кайзера

% W1 – Фурье-образ окна Кайзера
[W1,f] = freqz(w1/sum(w1),1,512,2);
[W2,f] =

АЧХ окна Кайзера % W1 – Фурье-образ окна Кайзера [W1,f] = freqz(w1/sum(w1),1,512,2);
freqz(w2/sum(w2),1,512,2);
[W3,f] = freqz(w3/sum(w3),1,512,2);
plot(f,20*log10(abs(W1))); hold on;
plot(f, 20*log10(abs(W2)), 'g');
plot(f, 20*log10(abs(W3)), 'r');
legend('a=1', 'a=4', 'a=9')
grid on

С ростом параметра «альфа»
изменяются АЧХ окна Кайзера:
уменьшается уровень боковых лепестков,
расширяется главный лепесток

Уровень боковых лепестков

Слайд 24

Размеры переходной зоны

ФНЧ:

ФВЧ:

ПФ:

РФ:

Размеры переходной зоны ФНЧ: ФВЧ: ПФ: РФ:

Слайд 25

Расчет минимального порядка фильтра

Учет уровня флуктуаций

Учет размеров переходной зоны

Расчет минимального порядка фильтра Учет уровня флуктуаций Учет размеров переходной зоны

Слайд 26

Расчеты по методике Кайзера в среде Matlab

Вычисление параметров окна Кайзера:

[p, Wn,

Расчеты по методике Кайзера в среде Matlab Вычисление параметров окна Кайзера: [p,
alfa, ftype] = kaiserord(fcuts, mags, devs, Fs)

в полосе от нуля до fcuts(1) АЧХ равна mags(1),
в полосе от fcuts(2) до fcuts(3) АЧХ равна mags(2), … ,
в полосе от fcuts(end) до Fs/2 АЧХ равна mags(end)

Вычисление отсчетов окна Кайзера:

w = kaiser(p+1,alfa)

Параметр devs д.б. вектором той же длины, что и mags

Вычисление коэфф-в КИХ-фильтра с окном Кайзера:

a = fir1(p, Wn, ftype, kaiser(p+1, alfa), ‘noscale’)

Проверка расчетов путем построения АЧХ

freqz(a, 1, 512, Fs);

Слайд 27

Fs = 100;
fcuts = [25 33];
mags = [1 0];
devs = [0.05 0.01];
[p,Wn,alfa,ftype]

Fs = 100; fcuts = [25 33]; mags = [1 0]; devs
= kaiserord(fcuts,mags,devs,Fs);
a = fir1(p,Wn,ftype,kaiser(p+1,alfa),'noscale');
freqz(a, 1, 512, Fs)

Пример:

Расчеты по методике Кайзера в среде Matlab

p = 28

Слайд 28

Синтез оптимальных (по Чебышеву) КИХ-фильтров

Синтез оптимальных (по Чебышеву) КИХ-фильтров

Слайд 29

Недостатки оконного метода:

Уменьшение крутизны АЧХ в переходной зоне
Трудно прогнозировать форму АЧХ фильтра

Теоретическое

Недостатки оконного метода: Уменьшение крутизны АЧХ в переходной зоне Трудно прогнозировать форму
обоснование

Синтез фильтров, оптимальных по Чебышеву –
задача оптимальной аппроксимации H(w):

Задаются:
Граничные частоты;
Величина предельно допустимых флуктуаций

- наилучшее равномерное приближение

Слайд 30

Сопоставление АЧХ фильтров: окно Кайзера и метод Чебышева

Сопоставление АЧХ фильтров: окно Кайзера и метод Чебышева

Слайд 31

Для наилучшего равномерного приближения функции
полиномом необходимо и достаточно, чтобы равенство

Теорема

Для наилучшего равномерного приближения функции полиномом необходимо и достаточно, чтобы равенство Теорема
Чебышева об альтернансе

Тригонометрический полином:

выполнялось не менее чем в N+2 точках (точках альтернанса),
принадлежащих интервалам аппроксимации,
причем знак разности чередуется от точки к точке

Слайд 32

Ограничения на ЧХ синтезируемого фильтра

Поведение в переходной
области не определено

1

δ1

δ2


fs


0

H(f)

f

δ1

Ограничения на ЧХ синтезируемого фильтра Поведение в переходной области не определено 1

Слайд 33

Алгоритм Ремеза (Е.Я. Ремез - украинский академик (1896-1975) )

- частоты альтернанса;

Составляется и

Алгоритм Ремеза (Е.Я. Ремез - украинский академик (1896-1975) ) - частоты альтернанса;
решается система N+2 уравнений:

Поскольку частоты альтернанса неизвестны:
на первой итерации они задаются приблизительно;
на последующих итерациях они уточняются.

Недостаток метода – может потребоваться много итераций

- искомые коэффициенты.

Слайд 34

Компьютерная реализация алгоритма Ремеза в Matlab

Parks, McClellan

определяют минимальный порядок фильтра

Компьютерная реализация алгоритма Ремеза в Matlab Parks, McClellan определяют минимальный порядок фильтра
n:

[n, f0, a0, w] = remezord(f, A, dev, Fs)

параметры f, A совместно задают кусочно-постоянную АЧХ
в зонах пропускания и задержания

2) вычисляют коэффициенты фильтра:

а = remez(n, f0, а0, w)

remezord

firpmord

remez

firpm

вспомогательные параметры

В последних версиях Matlab:

Remez

Слайд 35

Пример: синтез НЧ фильтра с граничными частотами 500 Гц и 600 Гц,

Пример: синтез НЧ фильтра с граничными частотами 500 Гц и 600 Гц,
частотой дискретизации 2 кГц

Rp = 3; % Неравномерн. в полосе пропуск. (в дБ)
Rs = 40; % Неравномерн. в полосе задерж. (в дБ)
Fs = 2000; % Частота дискретизации
f = [500 600]; % Границы переходной зоны
A = [1 0]; % Желаемые значения АЧХ
% Расчет девиаций
dev = [(10^(Rp/20)-1)/(10^(Rp/20)+1) 10^(-Rs/20)];
[n, fo, ao, w] = remezord(f, A, dev, Fs);
a = remez(n, fo, ao, w);
freqz(a, 1, 1024, Fs);
title('Lowpass Filter Designed to Specifications');

Слайд 36

Пример: результаты расчетов

Пример: результаты расчетов