9



Лабораторная работа № 8

Преобразование сигналов в цифровых фильтрах



Цель работы. Изучить, как преобразуются сигналы и их спектры при прохождении сигналов через цифровые фильтры. В работе используется программная среда MATLAB и её программный пакет Signal Processing.

Варианты заданий


Вариант

Сигнал

Фильтр

1

Прямоугольный импульс

ФНЧ Баттерворта, Чебышева I

2

Треугольный импульс

ФНЧ Баттерворта, Чебышева II

3

Синусоидальный импульс

ФНЧ Баттерворта, эллиптический

4

Экспоненциальный импульс

ФНЧ Чебышева I, эллиптический

5

Пачка из двух прямоугольных импульсов

ФВЧ Баттерворта, Чебышева I

6

Пачка из двух треугольных импульсов

ФВЧ Баттерворта, Чебышева II

7

Пачка из двух синусоидальных импульсов

ФВЧ Баттерворта, эллиптический

8

Пачка из двух экспоненциальных импульсов

ФВЧ Чебышева I, эллиптический

9

Пачка из трёх прямоугольных импульсов

ФНЧ Чебышева I, Чебышева II

10

Пачка из трёх треугольных импульсов

ФНЧ Чебышева II, эллиптический

11

Пачка из трёх синусоидальных импульсов

ФВЧ Чебышева I, Чебышева II

12

Пачка из трёх экспоненциальных импульсов

ФВЧ Чебышева II, эллиптический



Вариант

Сигнал

Фильтр

13

Прямоугольный радиоимпульс

ППФ Баттерворта, Чебышева I

14

Треугольный радиоимпульс

ППФ Баттерворта, Чебышева II

15

Синусоидальный радиоимпульс

ППФ Баттерворта, эллиптический

16

Экспоненциальный радиоимпульс

ППФ Чебышева I, эллиптический

17

Пачка из двух прямоугольных радиоимпульсов

ППФ Баттерворта, Чебышева I

18

Пачка из двух треугольных радиоимпульсов

ППФ Баттерворта, Чебышева II

19

Пачка из двух синусоидальных радиоимпульсов

ППФ Баттерворта, эллиптический

20

Пачка из двух экспоненциальных радиоимпульсов

ППФ Чебышева I, эллиптический

21

Пачка из трёх прямоугольных радиоимпульсов

ППФ Чебышева I, Чебышева II

22

Пачка из трёх треугольных радиоимпульсов

ППФ Чебышева II, эллиптический

23

Пачка из трёх синусоидальных радиоимпульсов

ППФ Баттерворта, Чебышёва I

24

Пачка из трёх экспоненциальных радиоимпульсов

ППФ Баттерворта, эллиптический


Краткие теоретические сведения


Цифровой сигнал задаётся в виде последовательности отсчётов, выраженных числами в двоичном коде. Отсчёты привязаны к моментам дискретного времени n=0,1,2… . Спектр сигнала можно найти, применив к нему дискретное преобразование Фурье (ДПФ):


N-1

S[k]= s[n] exp( - j2nk/N), k=0,1,…N-1,

n=0


где N – количество отсчётов сигнала. Дискретное время n соответствует реальному времени t=nT, где Т – интервал дискретизации, выраженный в секундах. Дискретная частота k может быть поставлена в соответствие реальной частоте f=kFs/N, где Fs=1/T – частота дискретизации в герцах. Частота дискретизации выбирается, исходя из условия теоремы Котельникова: Fs2Fm, где Fm – максимальная частота в спектре сигнала. По смыслу ДПФ сигнал s[n] периодически продолжается с периодом N и с тем же периодом будет продолжен спектр S[k] в области дискретной частоты.

Сигнал может быть пропущен через цифровой фильтр (ЦФ), то есть профильтрован. Фильтрация во временной области выполняется путём вычисления отсчётов выходного сигнала по разностным уравнениям, соответствующим функциональной схеме ЦФ. Фильтр в этом случае характеризуется набором коэффициентов bk и ak передаточной функции K(z). При фильтрации в зависимости от формы АЧХ и ФЧХ фильтра изменяются соотношения между амплитудами спектральных составляющих сигнала, а также становятся другими начальные фазы этих составляющих. Изменение спектра приводит и к соответствующему изменению формы сигнала. Если существенная часть спектра сигнала укладывается в полосу пропускания фильтра, то искажения формы сигнала будут незначительными. В противном случае форма сигнала может довольно сильно измениться.


Порядок выполнения работы


1. Получив вариант задания, изобразите в рабочей тетради график сигнала, обозначьте на нём наименования параметров, характеризующих сигнал (амплитуда А, длительность , интервал следования импульсов Т, частота несущего колебания f0). Запишите тип и классы фильтров для вашего варианта задания.

2. Задайте численные значения параметров (в разумных пределах). Вспомните, каким образом оценивается ширина спектра сигнала, исходя из его длительности, и рассчитайте примерную ширину спектра. Не забудьте, что при выборе частоты несущего колебания радиоимпульсов нужно соблюсти условие узкополосности (fсп<0). Выберите частоту дискретизации Fs, исходя из условия теоремы Котельникова (Fs2Fm, где Fm – максимальная частота в спектре сигнала). Учтите, что спектры сигналов, содержащих скачки (прямоугольный импульс, экспоненциальный импульс), убывают с ростом частоты не очень резко, поэтому для лучшего представления сигнала стоит выбрать увеличенное значение частоты дискретизации. (В качестве проверки рассчитайте, сколькими отсчётами будет представлен видеоимпульс: Nотс=Fs, где - длительность импульса (для экспоненциального импульса можно взять =50, где 0 – постоянная времени экспоненты); Nотс должно составлять примерно 10…20. Для радиоимпульсов период несущего колебания должен быть представлен 8…10 отсчётами.)

3. Загрузите MATLAB. В командном окне задайте частоту дискретизации, интервал времени, в течение которого будет длиться сигнал (учитывается время, отводимое на импульсы и на паузы между ними), и сформируйте вектор отсчётов сигнала, руководствуясь информацией, приведённой ниже.

Сигнал задаётся в виде вектора, сопоставленного с вектором моментов времени. Перед вводом модели сигнала нужно указать частоту дискретизации и сформировать вектор-столбец моментов времени. Например,


>> Fs = 1e3; t=0:1/Fs:1; t=t’;


В данном случае введена частота дискретизации 1кГц. Сигнал будет задан на интервале времени 1с (1001 отсчёт). Последний оператор означает преобразование вектора-строки в вектор-столбец ( операция транспонирования матрицы). Не следует забывать ставить точку с запятой в конце каждого оператора, чтобы подавить вывод значений на экран монитора.

Рассмотрим некоторые из возможных сигналов.


а) Прямоугольный импульс.


>> s=A* rectpuls (t – tau/2, tau);


При вводе этого оператора либо нужно предварительно задать значения амплитуды А и длительности tau, либо в самом операторе вместо идентификаторов А и tau поставить численные значения.


б) Треугольный импульс.



>> s= A * tripuls (t – tau/2, tau);



в) Экспоненциальный импульс.



>> s = A * exp ( - t / tau);


Подразумевается, что вектор t задан для моментов времени t 0.


г) Синусоидальный импульс.



>> s = A * sin (pi * t / tau) .* (t>=0) .* (t<=tau);


Здесь используется тот факт, что операции сравнения возвращают 1, если неравенство выполняется, или 0 в противном случае.


д) Радиоимпульсы.


Они получаются при умножении видеоимпульса s на гармоническое колебание:


>> s1 = s .* cos (2*pi*f0*t + phi);


Предварительно нужно задать значение несущей частоты f0 и начальной фазы phi. Обратите внимание, что операция умножения представлена здесь как .* (точка перед знаком *). Это означает поэлементное умножение


векторов (в противном случае производились бы операция матричного умножения). В тех случаях, когда осуществляется умножение скаляров или матрицы (вектора) на скаляр, можно использовать символ *. То же самое относится к операции деления и возведения в степень. Поэлементное деление матриц задаётся оператором . /, поэлементное возведение в степень . ^. Число задаётся в MatLab как pi.


е) Пачки импульсов.


Для генерации конечной последовательности (пачки) импульсов одинаковой формы с произвольно задаваемыми задержками и амплитудами используется функция pulstran. Она вызывается следующим образом:


s= pulstran (t, d, ‘func’, p1, p2 …)


Здесь t - вектор значений моментов времени, d - вектор задержек и амплитуд импульсов, ‘func’- имя функции, задающей одиночный импульс, например, ‘rectpuls’ или ‘tripuls’; p1, p2- параметры одиночного импульса, передаваемые функции func.

Например, нужно задать следующую последовательность прямоугольных импульсов:



Вводится набор операторов:


>> Fs= 1e3; t= 0:1/Fs:1; t= t’;

>> tau= 0.1;

>> d(: ,1)= [0.05 0.25 0.55]’ ;

>> d(: ,2)= [2 3 - 1]’;

>> s= pulstran (t, d, ‘rectpuls’, tau);


Если нужно построить последовательность импульсов произвольной формы, причём отсчёты одиночного импульса записаны в векторе s1, то используют следующую форму задания функции pulstran:


s= pulstran (t, d, s1, Fs);

Например, нужно задать пачку из четырёх синусоидальных импульсов:



Вводятся следующие операторы:


>> Fs= 1e4;

>> t= 0:1/Fs:2e-2; t=t’;

>> tau= 2e-3; A= 2;

>> s1= sin (pi * t / tau) .* (t<=tau);

>> d(: ,1)= (0:3)’ * 5e-3;

>> d(: ,2)= A*ones(4,1);

>> s= pulstran (t, d, s1, Fs);


4. Вызовите программу SPTool (Signal Processing Tool). Для этого нужно в командном окне MATLAB набрать:


>> sptool


Импортируйте в sptool сформированный сигнал. С этой целью выберите команду Import в меню File главного окна программы sptool. Появится окно Import to SPTool. Переключатель Source установите в положение From Workspace. В списке Workspace Contents перечислены переменные, имеющиеся в рабочей области MatLab. В раскрывающемся списке Import As нужно выбрать строку Signal. Далее выберите в списке идентификатор вектора, содержащего отсчёты сигнала, и нажмите кнопку --> напротив поля Data. Затем аналогичным образом введите значение частоты дискретизации Fs в поле Sampling Frequency. Задайте имя сигнала в поле Name. Под этим именем он будет помещён в список сигналов sptool. Вслед за этим следует нажать кнопку OK.

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

5. Рассчитайте спектр сигнала. С этой целью выделите сигнал в списке сигналов и нажмите кнопку Create, расположенную под списком спектров. В окне Spectrum Viewer в поле Parameters нужно указать метод спектрального анализа. Укажите метод ДПФ (используется быстрое преобразование Фурье БПФ (FFT)). Указав метод, следует щёлкнуть мышью по кнопке Apply. Будет выведен график спектральной плотности мощности. Имеется возможность выводить спектры в линейном или в логарифмическом масштабе (меню Options). Зарисуйте спектр сигнала.

6. Руководствуясь спектром сигнала, определите, каковы должны быть полосы пропускания и задерживания фильтра, чтобы пропустить нижние частоты спектра и подавить верхние или наоборот; или пропустить средние частоты и подавить нижние и верхние (для радиоимпульса). Запишите в тетрадь граничные частоты полос пропускания и задерживания. Укажите также затухания в полосах пропускания и задерживания (Rp=1…3 дБ, Rs=30…60 дБ).

7. Синтезируйте первый из предложенных вам фильтров, нажав кнопку New Design, расположенную под списком Filters в окне SPTool: startup.spt. Откроется окно Filter Designer. Укажите класс фильтра в раскрывающемся списке Algorithm. В разделе Specifications задайте требования к АЧХ и укажите тип фильтра (lowpass – ФНЧ, highpass – ФВЧ, bandpass – ППФ, bandstop – ПЗФ). Вы можете задать порядок фильтра или указать, что требуется синтезировать фильтр с наименьшим порядком, характеристики которого удовлетворяли бы предъявленным к ним требованиям. Нажмите кнопку Apply.

Вернувшись в окно SPTool: startup.spt, выделите идентификатор синтезированного фильтра в списке Filters и нажмите кнопку View. Откроется окно Filter Viewer. Просмотрите характеристики фильтра. Занесите АЧХ фильтра в тетрадь, указав полосы пропускания и задерживания. (Удобно расположить этот график под графиком амплитудного спектра, изображённого ранее).

8. Осуществите фильтрацию сигнала. С этой целью выделите идентификаторы сигнала и фильтра в соответствующих списках окна SPTool: startup.spt. Нажмите кнопку Apply. В появившемся окне Apply Filter задайте имя выходного сигнала в поле Output Signal. В раскрывающемся списке Algorithm задайте алгоритм фильтрации: Direct Form II Transposed (filter). Затем нужно щёлкнуть по кнопке OK. Выходной сигнал появится в списке сигналов основного окна программы. Выделите входной и выходной сигналы в списке сигналов (при нажатии левой кнопки мыши удерживайте клавишу ). Нажмите кнопку View под списком сигналов. Просмотрите графики входного и выходного сигнала и зарисуйте их.

Далее вернитесь в окно SPTool: startup.spt, выделите в списке сигналов выходной сигнал фильтра и нажмите кнопку Create. Получите спектр выходного сигнала и зарисуйте его.

Имеется возможность наложить спектр сигнала на график АЧХ фильтра. Для этого следует открыть окно Filter Designer (кнопки New Design или Edit Design основного окна sptool), нажать кнопку Overlay Spectrum (предпоследняя на панели инструментов) и далее выбрать нужный спектр из списка в окне Overlay Spectrum, раздел Select a spectrum).

В выводе отметьте, как изменился спектр сигнала и как изменилась форма сигнала.

9. Синтезируйте второй фильтр из предложенных вам в задании, профильтруйте сигнал (повторите пункты 7 и 8). Сравните результаты фильтрации первым и вторым фильтрами.

10. Измените порядок фильтра, сохранив требования только лишь в полосе пропускания. Вы можете в окне Filter Designer указать нужный порядок, сняв флажок в поле Minimum Order. Измените порядок в большую или в меньшую сторону. Профильтруйте сигнал. Отметьте, как изменяются форма выходного сигнала и его спектр в зависимости от порядка фильтра.

11. Вернитесь в командное окно MATLAB. Измените длительность импульса. В случае, если вы фильтруете радиоимпульсы, измените частоту несущего колебания, задав небольшую расстройку между частотой несущего и центральной частотой полосового фильтра. Повторите пункты 4 – 8 для одного из предложенных вам фильтров. Отметьте в выводе, как изменяется форма профильтрованного сигнала в зависимости от его длительности и частоты расстройки.

12. Если вы быстро справились со своим заданием и у вас осталось время, выполните задание для другого варианта, согласовав его номер с преподавателем. Можете также составить для себя задание самостоятельно.



Случайные файлы

Файл
105087.rtf
19550-1.rtf
work.doc
27814-1.rtf
1281.rtf