Факультет Радиоэлектроники и автоматики
Кафедра РРС
Цифровая обработка сигналов
Отчет по зачетным заданиям
Вариант №9
Работу выполнил студент
группы ЗРЭ-21-17п
Леухин Р.А.
Проверил преподаватель
Лазарева Н. М.
Чебоксары 2021
ЗАДАНИЕ
по цифровой обработке сигналов
1. Для сигнала , параметры которого заданы в табл. 1, выполнить дискретизацию для двух разных значений частоты дискретизации. Нарисовать в одних осях по одному периоду аналогового сигнала и двух дискретных (функция plot).
2. В отдельном графическом окне нарисовать первый дискретный сигнал в виде решетчатой функции (функция stem), в другом графическом окне ‑ второй в виде ступенчатой функции (функция stairs).
3. Создать передаточную функцию ЦФ (конструктор tf), заданную векторами коэффициентов полиномов числителя и знаменателя (табл. 2).
4. Построить диаграмму нулей и полюсов, оценить устойчивость ЦФ (функция zplane).
5. Построить частотные характеристики ЦФ ‑ АЧХ, ФЧХ, характеристику затухания и ЛАЧХ (функции freqz, abs, angle, unwrap, semilogx).
6. Рассчитать и построить динамические характеристики ЦФ во временной области (функции impz и stepz).
7. Дискретизировать для дальнейшей обработки фильтром сигнал x (t), параметры которого заданы в табл. 1 (по сравнению с п.1 может потребоваться более чем один период сигнала, например 4‑6). Нарисовать в одних осях аналоговый и дискретный сигналы.
8. Пропустить сгенерированный сигнал через ЦФ (функция filter). Нарисовать в одних осях входной и выходной сигналы ЦФ (функция plot). Оценить эффект фильтрации. Соотнести результат с частотными характеристиками фильтра.
9. Вычислить и сравнить спектры (функции fft и abs) входного и выходного сигналов ЦФ.
10. Используя инструмент filterDesigner (FDATool) Matlab, получить схемную реализацию ЦФ. Подав на вход схемы ЦФ функцию включения (блок step), наблюдать в окне осциллографа (блок scope) переходную характеристику фильтра.
Таблица1.
№ | А 1 | f 1, Гц | φ1, град. | А 2 | f 2, Гц | φ2, град. | А 3 | f 3, Гц | φ3, град. | А 4 |
-500 | -60 |
Таблица 2.
№ | b | a | f д, Гц |
0,29 -0,26 0,64 -0,26 0,29 | 1 -0,44 0,06 -0,08 0,17 |
Выполнение заданий:
Задание №1.
Написание кода задания:
clear all
fc=50;
t=0:10e-6:1/fc;
xa=670*sin(2*pi*50*t+pi/4)-500*sin(2*pi*450*t)+388*sin(2*pi*900*t-pi/3)+65;
fd1=2000;
Td1=1/fd1;
K1=fd1/fc;
k1=0:K1-1;
xd1=670*sin(2*pi*50*k1*Td1+pi/4)-500*sin(2*pi*450*k1*Td1)+388*sin(2*pi*900*k1*Td1-pi/3)+65;
fd2=2500;
Td2=1/fd2;
K2=fd2/fc;
k2=0:K2-1;
xd2=670*sin(2*pi*50*k2*Td2+pi/4)-500*sin(2*pi*450*k2*Td2)+388*sin(2*pi*900*k2*Td2-pi/3)+65;
figure(1);
plot(t,xa,k1*Td1,xd1,'ro',k2*Td2,xd2,'go'),grid
title('Аналоговый и дискретный сигналы для двух значений fd')
legend('Аналоговый сигнал','fd1=2000 Гц','fd2=2500 Гц')
xlabel('t,c'),ylabel('Сигналы')
Результат:
На графике видим результат процесса дискретизации аналогового сигнала на разных частотах дискретизации (2кГц и 2.5кГц).
Задание №2.
Написание кода задания:
clear all
fc=50;
t=0:10e-6:1/fc;
xa=670*sin(2*pi*50*t+pi/4)-500*sin(2*pi*450*t)+388*sin(2*pi*900*t-pi/3)+65;
fd1=2000;
Td1=1/fd1;
K1=fd1/fc;
k1=0:K1-1;
xd1=670*sin(2*pi*50*k1*Td1+pi/4)-500*sin(2*pi*450*k1*Td1)+388*sin(2*pi*900*k1*Td1-pi/3)+65;
fd2=2500;
Td2=1/fd2;
K2=fd2/fc;
k2=0:K2-1;
xd2=670*sin(2*pi*50*k2*Td2+pi/4)-500*sin(2*pi*450*k2*Td2)+388*sin(2*pi*900*k2*Td2-pi/3)+65;
figure(1);
stem(k1,xd1,'g'),grid
xlabel('Номера отсчетов'),ylabel('Отсчеты')
figure(2);
stairs(k2,xd2,'r'),grid
xlabel('Дискретное время'),ylabel('Отсчеты')
Результат:
На графике видим один период дискретного сигнала, с частотой дискретизации 2кГц.
На графике видим один период дискретного сигнала, изображенного ступенчатой функцией
Задание №3.
Написание кода задания:
clear all;
fd=2000;
b=[0.29 -0.26 0.64 -0.26 0.29];
a=[1 -0.44 0.06 -0.08 0.17];
H=tf(b,a,fd)
Результат:
Transfer function:
0.29 z^4 - 0.26 z^3 + 0.64 z^2 - 0.26 z + 0.29
----------------------------------------------
z^4 - 0.44 z^3 + 0.06 z^2 - 0.08 z + 0.17
Цифровой фильтр 4-ого порядка
Задание №4.
Написание кода задания:
clear all;
fd=2000;
b=[0.29 -0.26 0.64 -0.26 0.29];
a=[1 -0.44 0.06 -0.08 0.17];
H=tf(b,a,fd)
figure(1)
zplane(b,a),grid
Результат:
Получилась диаграмма нулей (о) и полюсов (х). Из диаграммы видим, что все полюсы имеют модуль меньше единицы, а значит, что цифровой фильтр устойчив.
Задание №5.
Написание кода задания:
clear all;
fd=2000;
b=[0.29 -0.26 0.64 -0.26 0.29];
a=[1 -0.44 0.06 -0.08 0.17];
H=tf(b,a,fd)
[HW,f]=freqz(b,a,1024,fd);
AHX=abs(HW);
figure(1)
plot(f,AHX),grid
title('АЧХ')
xlabel('f,Гц'),ylabel('|HW|')
figure(2)
plot(f,unwrap(angle(HW))*180/pi),grid
title('ФЧХ')
xlabel('f,Гц'),ylabel('Фаза,градусы')
figure(3)
plot(f,20*log10(AHX)),grid
title('Характеристика затухания')
xlabel('f,Гц'),ylabel('Магнитуда')
figure(4)
semilogx(2*pi*f,20*log10(AHX)),grid
title('ЛАЧХ')
xlabel('w,рад/с'),ylabel('Магнитуда')
Результат:
Из графика АЧХ видно, что данный фильтр является режекторным. На частотах 50Гц и 900 Гц будет почти максимальное пропускание частот, а на частоте 450Гц почти максимальное подавление частоты.
Из графика ФЧХ видно, что все гармоники в диапазоне от 0 до 1000Гц получат отрицательный фазовый сдвиг. На 50Гц сдвиг фазы -17градусов,
на 450Гц сдвиг фазы -185 градусов, на 900Гц сдвиг фазы -338 градусов.
По графику можно определить на каком уровне и на какой частоте произойдет максимальное затухание сигнала, а также частоту начала затухания и частоту завершения затухания.
Задание №6.
Написание кода:
clear all;
fd=2000;
b=[0.29 -0.26 0.64 -0.26 0.29];
a=[1 -0.44 0.06 -0.08 0.17];
H=tf(b,a,fd)
figure(1)
impz(b,a),grid
title('Импульсная характеристика')
xlabel('t, мСек'),ylabel('Амплитуда')
figure(2)
stepz(b,a),grid
title('Переходная характеристика')
xlabel('t, мСек'),ylabel('Амплитуда')
Результат:
Из двух графиков видно, что фильтр постоянную составляющую, с длительностью в 7.5 мСек.
Задание №7.
Написание кода:
clear all
fc=50;
fd=2000;
Td=1/fd;
KolPer=4;
tf=0:10e-6;KolPer/fc;
xaf=670*sin(2*pi*50*tf+pi/4)-500*sin(2*pi*450*tf)+388*sin(2*pi*900*tf-pi/3)+65;
Kf=fd/fc*KolPer;
kf=0:Kf-1;
xdf=670*sin(2*pi*50*kf*Td+pi/4)-500*sin(2*pi*450*kf*Td)+388*sin(2*pi*900*kf*Td-pi/3)+65;
figure(1)
plot(tf,xaf,kf*Td,xdf,'r--'),grid
title('Аналоговый и дискретный сигналы')
Результат:
На графике видим 4 периода
Задание №8.
Написание кода:
clear all
b=[0.29 -0.26 0.64 -0.26 0.29];
a=[1 -0.44 0.06 -0.08 0.17];
fc=50;
fd=2000;
Td=1/fd;
KolPer=4;
Kf=fd/fc*KolPer;
kf=0:Kf-1;
tf=0:10e-6;KolPer/fc;
xaf=670*sin(2*pi*50*tf+pi/4)-500*sin(2*pi*450*tf)+388*sin(2*pi*900*tf-pi/3)+65;
xdf=670*sin(2*pi*50*kf*Td+pi/4)-500*sin(2*pi*450*kf*Td)+388*sin(2*pi*900*kf*Td-pi/3)+65;
ydf=filter(b,a,xdf);
ss=[kf' ydf'];
yaf=pulstran(tf*fd,ss,'sinc');
figure(1)
plot(tf,xaf,'b',kf*Td,xdf,'b--',tf,yaf,'r',kf*Td,ydf,'r--'),grid
Результат:
Задание №9.
Написание кода:
clear all
b=[0.29 -0.26 0.64 -0.26 0.29];
a=[1 -0.44 0.06 -0.08 0.17];
fc=50;
fd=2000;
Td=1/fd;
KolPer=4;
Kf=fd/fc*KolPer;
kf=0:Kf-1;
xdf=670*sin(2*pi*50*kf*Td+pi/4)-500*sin(2*pi*450*kf*Td)+388*sin(2*pi*900*kf*Td-pi/3)+65;
ydf=filter(b,a,xdf);
Xdf=fft(xdf)/Kf;
Ydf=fft(ydf)/Kf;
figure(1)
stem(kf*fc/KolPer,abs(Xdf)),grid
figure(2)
stem(kf*fc/KolPer,abs(Ydf)),grid
Xdfs=fftshift(Xdf);
Ydfs=fftshift(Ydf);
figure(3)
stem([-Kf/2:Kf/2-1]*fc/KolPer,abs(Xdfs)),grid
figure(4)
stem([-Kf/2:Kf/2-1]*fc/KolPer,abs(Ydfs)),grid
Результат:
Два графика представляют собой спектр сигнала ДО и ПОСЛЕ фильтрации и как видно из графиков на частоте 450Гц спектральный отсчет стал равен 0, а всё потому, что на данной частоте происходит подавление сигнала.
Два графика представляют собой спектр сигнала ДО и ПОСЛЕ фильтрации и как видно из графиков на частоте 450Гц пропал выброс, а всё потому, что на данной частоте происходит максимальное затухание режекторного фильтра.
Задание №10.
Используя инструмент Filter Designer и инструмент Simulink создаем симуляцию нашего цифрового фильтра:
Так же можно увидеть примерную схему нашего фильтра. Есть возможность изменить параметры, в данном случае нам нужно изменить параметр “Step time” блока генератора прямоугольных импульсов “Step“. Меняем параметр установленный по умолчанию с «10» на «0», это время «старта» импульсов.
Примерная схема фильтра:
До начала симуляции нужно настроить параметры моделирования выбрав во вкладке “Simulations” “Configuration Parameters”.
Далее нажимая в верхней строке окна симуляции на кнопку «Run» мы запускаем программу симуляции, в которой кликнув по блоку осциллографа “Scope” видим осциллограмму переходной характеристики.
Полученная в программе симуляции переходная характеристика