Міністерство освіти і науки України
Національний університет “Львівська політехніка”
/
Лабораторна робота № 2
РОЗРАХУНОК ЦИФРОВИХ
ФІЛЬТРІВ В СЕРЕДОВИЩІ MATLAB
з курсу
“Цифрові методи оброблення сигналів та зображень”
Варіант 4
Львів – 2018
Мета роботи – отримати навики розрахунку параметрів і характеристик цифрових фільтрів в середовищі MatLab.
ЗАВДАННЯ
1. Ознайомитись з теоретичним матеріалом.
2. Розрахувати перші 5 коефіцієнтів нерекурсивного фільтра згідно заданого варіанту при відсутності накладання вікна.
3. Скласти програму в середовищі MatLab згідно завдання.
3.1. Розрахувати мінімально необхідний порядок вказаного типу фільтра для забезпечення поставлених вимог. Знайти коефіцієнти фільтра. Побудувати АЧХ розрахованого фільтра. Оцінити вплив N-бітного квантування коефіцієнтів фільтра на його характеристики при прямій реалізації та каскадній на основі біквадратних ланок. Провести фільтрацію заданого сигналу, що зберігається у файлі Lab_2_варіант у змінній signal.
Таблиця 1.
№
Тип фільтру
Fs,
Гц
Fp,
Гц
Rs,
дБ
Rp, дБ
N,
біт
Fd,
Гц
Сигнал
4.
РФ Баттерворта
[50 150]
[35 165]
65
2.2
11
500
Lab_2_4.mat
3.2. Розрахувати коефіцієнти вказаного типу нерекурсивного фільтра в середовищі MatLab та порівняти перші 5 коефіцієнтів зі знайденими аналітично при домашній підготовці. Побудувати АЧХ розрахованого фільтра. Провести фільтрацію заданого сигналу, що зберігається у файлі Lab_2_варіант у змінній signal.
Таблиця 2.
№
Тип фільтру
Порядок
фільтру
Частота зрізу Wn,
Гц
Частота дискретизації Fd,
Гц
Сигнал
4.
ФНЧ з вікном Хемінга
300
[40 160]
500
Lab_2_4.mat
Лістинг програми
% ФНЧ Кауера
Fs=5; % задаємо частоти смуг затримки
Fp=4.8; % задаємо частоти смуг пропускання
Rs=90; % пульсації (придушення) в смузі затримки
Rp=1.9; % пульсації в смузі пропускання
N_bit=12; % кількість біт для представлення дробової частини коефіцієнтів
fd=30; % частота дискретизації
f_N = fd/2; % частота Найквіста
Fs_norm = Fs/f_N; % нормовані частоти смуги затримки
Fp_norm = Fp/f_N; % нормовані частоти смуг пропускання
[n, Wn] = ellipord(Fp_norm, Fs_norm, Rp, Rs); % визначаємо мінімальний порядок фільтра n та
% частоти зрізу Wn
n % виводимо порядок фільтра
fc = Wn * f_N % виводимо частоти зрізу
[b, a] = ellip(n, Rp, Rs, Wn); % знаходимо коефіцієнти чисельника та
% знаменника фільтра
b = b(:); % перетворюємо вектор рядок у стовпець
a = a(:);
b % виводимо коефіцієнти чисельника
a % виводимо коефіцієнти знаменника
f = 0 : 1 : f_N; % задаємо вектор частот для розрахунку АЧХ
h = freqz(b, a, f, fd); % розраховуємо комплексний коефіцієнт передачі
figure(11); plot(f, abs(h)); grid on; % будуємо графік АЧХ
bq = round(2^N_bit * b) / 2^N_bit; % квантуємо коефіцієнти чисельника
aq = round(2^N_bit * a)/ 2^N_bit; % квантуємо коефіцієнти знаменника
hq = freqz(bq, aq, f, fd); % розраховуємо комплексний коефіцієнт передачі
% квантованого фільтра
figure(12);
plot(f, abs(h), f, abs(hq)); grid on; % будуємо графік АЧХ фільтру до і після квантування
sos = tf2sos(b, a); % переходимо від прямої до каскадної форми фільтру
sosq = round(2^N_bit * sos) / 2^N_bit; % квантуємо коефіцієнти біквадратних ланок
[bs, as] = sos2tf(sos); % повертаємось до прямої форми представлення
hs = freqz(bs, as, f, fd); % розраховуємо комплексний коефіцієнт передачі
figure(13); plot(f, abs(hs)); grid on; % будуємо графік АЧХ
load Lab_2_13 % завантажуємо сигнал
signal_f1 = filter(b, a, signal); % проводимо фільтрацію сигналу
% ФНЧ Хемінга
N = 370; % порядок фільтру
fc = 4.9; % частоти зрізу
fd = 30; % частота дискретизації
f_N = fd/2; % частоти зрізу
fc_norm = fc / f_N; % нормовані частоти зрізу
b1 = fir1(N, fc_norm, hamming(N+1), 'noscale'); % розрахунок коефіцієнтів фільтра з вікном
b2 = fir1(N, fc_norm, boxcar(N+1), 'noscale'); % розрахунок коефіцієнтів фільтра без вікна
f = 0 : 0.01 : f_N; % задаємо вектор частот для розрахунку АЧХ
h1 = freqz(b1, 1, f, fd); % розраховуємо комплексний коефіцієнт передачі
h2 = freqz(b2, 1, f, fd); % розраховуємо комплексний коефіцієнт передачі
figure(14);
plot(f, abs(h1), f, abs(h2)); grid on ; legend('1', '2'); % будуємо графік АЧХ обох фільтрів
signal_f2 = filter(b1, 1, signal); % проводимо фільтрацію сигналу
figure(15);
subplot(311);
plot((0 : length(signal)-1) / fd, signal); grid on; % будуємо графік первинного сигналу
subplot(312);
plot((0 : length(signal)-1) / fd, signal_f1); grid on; % графік сигналу на виході рекурсивного фільтра
subplot(313);
plot((0 : length(signal)-1) / fd, signal_f2); grid on; % графік сигналу на виході нерекурсивного фільтра
Результати
/
Рис.1. Графік АЧХ перед заокругленням коефіцієнтів
/
Рис.2. Графік АЧХ фільтру до і після квантування
/
Рис.3. Графік АЧХ після заокругленням коефіцієнтів
/
Рис.4. Графік АЧХ обох фільтрів
/
Рис.5. Графік: а) первинного сигналу; б) сигналу на виході рекурсивного фільтра; в) сигналу на виході нерекурсивного фільтра
Висновок: на даній лабораторній роботі я отримав навики розрахунку параметрів і характеристик цифрових фільтрів в середовищі MatLab.