Разработка БИХ–фильтров с помощью MATLAB
Средство MATLAB Signal Processing Toolbox предлагает много полезных функций для разработки и анализа классических БИХ–фильтров (например, Баттерворта, Чебышева типа I и II, эллиптических фильтров) для данного набора спецификаций (например, граничные частоты полос пропускания и подавления, неравномерность в полосе пропускания и затухание в полосе подавления).
В частности, Toolbox предлагает функции преобразования классических аналоговых фильтров в эквивалентные фильтры дискретного времени.
Напомним, что критичным этапом разработки цифрового БИХ–фильтра является расчет коэффициентов. Для классических цифровых БИХ–фильтров можно следующим образом подытожить действия на этом этапе.
1. Задать дискретный фильтр.
2. Определить подходящий аналоговый фильтр нижних частот, например, с характеристикой Баттерворта, Чебышева типа I, Чебышева типа II или эллиптической характеристикой.
3. Преобразовать аналоговый фильтр–прототип в фильтр нижних частот, верхних частот, полосовой или режекторный.
4. Перевести преобразованный фильтр в эквивалентный фильтр дискретного времени (например, используя метод инвариантного преобразования импульсной характеристики или билинейного z-преобразования).
Средство Signal Processing Toolbox предлагает несколько высокоуровневых функций для одновременного или поочередного выполнения этапов 2-4. Приведем, например, синтаксис команды MATLAB для создания фильтра нижних частот, верхних частот, полосового или режекторного фильтра с характеристикой Баттерворта (этапы 1 и 2):
|
|
[b,a]=butter(N, We, options)
[z,p,k]=butter(N, We, options)
Первая команда определяет коэффициенты числителя и знаменателя фильтра Баттерворта дискретного времени N-гo порядка с частотой среза по уровню 3 дБ (или граничной частотой) Wc, нормированной на частоту Найквиста. Коэффициенты числителя и знаменателя фильтра возвращаются в векторы b и a соответственно по возрастающим отрицательным степеням z.
Если опустить слово "options", команда по умолчанию рассчитывает фильтр нижних частот (если Wc является вектором частот, по умолчанию рассчитывается полосовой фильтр). Для вычисления коэффициентов фильтра верхних частот и режекторного фильтра нужно соответственно использовать опции "high" и "stop". Для полосовых и режекторных фильтров Wc – это двухкомпонентный вектор, задающий частоты среза (или граничные частоты):
Wc = [ωc1 , ωc2],
где ωc1 < ω < ωc2 — полоса пропускания (полосовые фильтры) или полоса подавления (режекторные фильтры).
Вторая команда возвращает положения нулей z и полюсов р в и коэффициент усиления фильтра к.
|
|
Подобные команды существуют и для других классических фильтров. Например, для фильтров Чебышева типа I и типа II и эллиптических фильтров используются команды MATLAB со следующим синтаксисом:
[b,a]=chebyl(N,Ар,We,options)
[z,p.k]=chebyl(N,Ap,Wc,options)
[b,a]=cheby2(N,As,Wc,options)
[z,p.k]=cheby2(N,As,Wc,options)
[b,a]=ellip(N,Ap,As,Wc,options)
[z,p.k]=ellip(N,Ap,As,Wc,options)
Здесь Ар и As — неравномерность в полосе пропускания и затухание в полосе подавления в децибелах соответственно.
Перечисленные функции позволяют рассчитывать как дискретные, так и аналоговые фильтры. Признаком дискретного расчета служит отсутствие строки `s` в конце списка входных параметров.
Существуют и другие полезные команды, которые можно использовать для выполнения промежуточных задач в процессе вычисления коэффициентов. Например, команды buttord, chebylorc и ellipord можно использовать для определения порядка подходящего фильтра. Параметры подходящих аналоговых фильтров-прототипов нижних частот можно определить с помощью команд butterp, chebylp, cheby2p и ellipp.
ЗАДАНИЯ ДЛЯ ВЫПОЛНЕНИЯ
1. Повторить теорию, обосновывающую переход от непрерывных передаточных функций к дискретным передаточным функциям при различных методах аппроксимации.
2. По заданной передаточной функции аналогового фильтра (табл.1) определить передаточные функции дискретных фильтров, используя пакет MATLAB, при разных интервалах дискретности и при разных методах аппроксимации:
|
|
2.1. метод инвариантного преобразования импульсной переходной функции;
2.2. метод билинейного преобразования.
3. FDATool. Изобразить диаграмму нулей и полюсов. Получить коэффициенты фильтра. Данные в таблице 2.
4. Сравните инвариантное преобразование импульсной характеристики и билинейное z-преобразование с точки зрения
4.1. влияния эффекта Найквиста на амплитудную характеристику, фазовую и групповую задержки;
4.2. распределения диаграмм нулей и полюсов.
В качестве инструментов при исследовании используйте MATLAB и следующие фильтры. Текст программы на MATLAB для ФНЧ приводится ниже задания (Пример 5). Модернизируйте ее для каждого случая. Данные в таблицах 3-4
1. Фильтр нижних частот.
2. Полосовой фильтр.
Пример 5.Фильтр нижних частот
Эллиптический фильтр нижних частот со следующими спецификациями:
полоса пропускания 0-1 кГц
полоса подавления 3-5 кГц
неравномерность в полосе пропускания 1 дБ
|
|
затухание в полосе подавления 60 дБ
частота дискретизации 10 кГц
%Сравнение амплитудной и фазовой характеристик аналогового и эквивалентныхему цифровых фильтров, полученных с помощью билинейного z-преобразования и инвариантного преобразования импульсной характеристики. Диаграмма нулей и полюсов
Fs=10000;
FN=Fs/2;
fp=1000;
fs=3000;
wp=fp*2*pi;
ws=fs*2*pi;
Ap=1;
As=60;
%
% Расчет коэффициентов и частотных характеристик
[N, wc]=ellipord(wp, ws, Ap, As,'s'); % Аналоговый фильтр
[B, A]=ellip(N, Ap, As, wc, 's');
[bBZT, aBZT]=bilinear(B,A,Fs); % билинейное z-преобразование
[bIIT,aIIT]=impinvar(B,A,Fs); % инв. преобразование имп.хар-ки
%
% Расчет частотных характеристик
[Ha, wa]=freqs(B,A);
[HBZT, fBZT]=freqz(bBZT, aBZT, 512, Fs);
[HIIT, fIIT]=freqz(bIIT, aIIT, 512, Fs);
%
% Вывод АЧХ
%
figure(1); % АЧХ аналогового фильтра
plot(wa/(2*pi), 20*log10(abs(Ha)))
hold on
figure (1);
plot(fBZT, 20*log10(abs(HBZT)), 'r:') % АЧХ билинейное z-преобразование
hold on
figure (1);
plot(fIIT, 20*log10(abs(HIIT)), 'g:') % АЧХ инв. преобразование имп.хар-ки
legend('Analog', 'BZT', 'Imp Invar');
axis([0 10000 -120 0])
ylabel('Magnitude (dB)')
xlabel('Frequency (Hz)')
title('Filter magnitude responses')
hold off;
%
% Вывод ФЧХ
%
figure(2);
plot(wa/(2*pi), angle(Ha)*180/pi) % Аналоговый фильтр
hold on
figure (2);
plot(fBZT, angle(HBZT)*180/pi, 'r:') % ФЧХ билинейное z-преобразование
hold on
figure(2);
plot(fIIT, angle(HIIT)*180/pi, 'g.') % ФЧХ инв. преобразование имп.хар-ки
legend('Analog', 'BZT','Imp Invar');
axis([0 10000 -360 360])
ylabel('Phase (Degrees)')
xlabel('Frequency (Hz)')
title('Filter Phase Responses')
hold off
%
% Диаграммы нулей и полюсов
%
figure (3);
zplane(bBZT, aBZT)
title('Pole-zero diagram - BZT filter')
figure (4);
zplane(bIIT, aIIT)
xmin=-1; xmax=1; ymin=-1; ymax=1; % Масштабирование z-плоскости
axis([xmin xmax ymin ymax])
title('Pole-zero diagram - impulse invariance filter')
Требования к содержанию отчета: составьте отчет в электронном виде, включающий все команды, вводимые в командной строке MATLAB и все полученные графики.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Какие математические преобразования положены в основу определения дискретной передаточной функции методом импульсной переходной характеристики?
2. Какие математические преобразования положены в основу определения дискретной передаточной функции методом билинейного преобразования?
3. Дайте сравнительную характеристику методик определения параметров дискретного фильтра с помощью импульсной переходной характеристики и с помощью билинейного преобразования.
4. В каком диапазоне изменяется цифровая частота при построении логарифмических характеристик дискретных фильтров?
5. Как по цифровой частоте и интервалу дискретности определить круговую частоту?
6. Обоснуйте последовательность шагов, которые следует применить к передаточной функции аналогового фильтра, что бы методом билинейного преобразования получить передаточную функцию дискретного фильтра.
7. Представьте фрагмент программы, позволяющую получить передаточную функцию дискретного фильтра по его аналоговому эквиваленту методом билинейного преобразования.
8. Из каких соображений выбирается граничная частота и как она связана с интервалом дискретности?
9. Как перейти от аналогового фильтра к дискретному фильтру, используя метод импульсной переходной характеристики?
10. Как перейти от аналогового фильтра к дискретному фильтру, используя метод билинейного преобразования
11. В пакете MATLAB представьте фрагмент программы, в которой определяются параметры дискретного фильтра по его аналоговому эквиваленту, использующий метод импульсной переходной функции.
12. В пакете MATLAB представьте фрагмент программы, в которой определяются параметры дискретного фильтра по его аналоговому эквиваленту, использующий метод билинейного преобразования.
13. Что такое эффект Найквиста?
14. Простой способ подавления искажений, вызванных эффектом Найквиста?
15. Перечислите несколько команд MATLAB для разработки БИХ-фильтров.
16. Опишите метод размещения нулей и полюсов.
17. Определите недостатки метода размещения нулей и полюсов.
18. Что нужно сделать, чтобы коэффициенты фильтра при разработке его с помощью метода размещения нулей и полюсов были действительными?
Таблица 1
Вариант | Передаточная функция системы |
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 |
Таблица 2
Нули и полюсы фильтра
Вариант | Нули | Полюсы |
1 | -0.5; 0.01 | 0.32; 0.12; 0 |
2 | 0.11; 023 | 0.57; 0.21; 0.5±0.6i |
3 | 0.12; 0.67;0.07 | 0.11;0.34±0.34i |
4 | -0.01; -0.7; 0.03 | -0.89; 0.82±0.03i |
5 | 0.5±0.13i; 0.91 | 0.23; 0.76; 0.5±0.23i |
6 | 0.34; -0.12; 0.12 | 0.89; 0.82; 0.12 |
7 | 0.1±0.55i; 0.4±0.8i | 0.33; 0.44; 0.13 |
8 | 1.12±0.12i; 0.45; 0.32 | 0.31±0.7i; 0; 0.24 |
9 | 0.77; 0.88 | 0.05±0.6i;0.7±0.3i |
10 | 0.1±1i;0.9; 0.7 | 0.7; 0.1; 0.84±0.1 |
11 | 0.9±0.i1; 0.45±0.3i; 0.1 | 0.91±0.9i; 0.45±0.4i; 0 |
12 | 0.32±0.3i; 0.5; 0.8 | 0.75; 0.24; 0.63±0.2i |
13 | 0.64; 0.24; 0.7 | 0.41; 0.83; 1 |
14 | 0.2±1i; 0.74±0.99i | 0.43±0.01i; 0.14±1i; 0.1 |
15 | 1.24±0.2i; 0.77±0.5i; 1.05 | 0.99±1i; 0; 0; 0.11±0.51i |
Таблица 3
Фильтр нижних частот
Вариант | Полоса пропускания, кГц | Полоса подавления, кГц | Неравномерность в полосе пропускания, дБ | Затухание в полосе подавления, дБ | Частота дискретизации, кГц |
1 | 0-2.1 | 3-5 | 1 | 60 | 10 |
2 | 0-1.5 | 2-4 | 2 | 55 | 8 |
3 | 0-2.7 | 3-5 | 3 | 50 | 10 |
4 | 0-2.4 | 3-4 | 1 | 60 | 8 |
5 | 0-1.8 | 3-5 | 3 | 55 | 10 |
6 | 0-3.5 | 4-5 | 3 | 70 | 10 |
7 | 0-1.3 | 1.8-4 | 1 | 60 | 8 |
8 | 0-3.6 | 4.3-6 | 2 | 50 | 12 |
9 | 0-2.6 | 4-6 | 3 | 70 | 12 |
10 | 0-2 | 3-4 | 1 | 50 | 8 |
11 | 0-3 | 4-6 | 2 | 70 | 12 |
12 | 0-2.3 | 2.8-5 | 1 | 65 | 10 |
13 | 0-2.2 | 3-6 | 3 | 60 | 12 |
14 | 0-1.2 | 2-4 | 1 | 50 | 8 |
15 | 0-3.2 | 4-5 | 1 | 70 | 10 |
Таблица 4
Полосовой фильтр
Вариант | Полоса пропускания, Гц | Неравномерность в полосе подавления, Аs, Дб | Неравномерность в полосе пропускания, Ap, Дб | Частота дискретизации, Гц |
1 | 200-300 | 60 | 1 | 2000 |
2 | 400-800 | 55 | 2 | 2000 |
3 | 200-400 | 50 | 3 | 1000 |
4 | 400-700 | 60 | 1 | 1600 |
5 | 300-500 | 55 | 3 | 1300 |
6 | 250-450 | 70 | 3 | 1000 |
7 | 100-600 | 60 | 1 | 1400 |
8 | 400-1000 | 50 | 2 | 2500 |
9 | 100-200 | 70 | 3 | 500 |
10 | 500-800 | 50 | 1 | 3000 |
11 | 300-600 | 70 | 2 | 1800 |
12 | 350-700 | 65 | 1 | 1700 |
13 | 150-400 | 60 | 3 | 1000 |
14 | 300-600 | 50 | 1 | 1500 |
15 | 400-800 | 70 | 1 | 3000 |
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1) Айфичер Э.С., Джервис Б.У. Цифровая обработка сигналов: практический подход [Текст]: Пер с анг. – М.: Издательский дом «Вильямс», 2004. – 992с.
2) Сергиенко А.Б. Цифровая обработка сигналов [Текст] – СПб.: Питер, 2002. – 608с.
3) www.matlab.dp.ua [Электронный ресурс]
Дата добавления: 2018-04-05; просмотров: 2069; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!