Лабораторная работа №3 Моделирование сигналов.
Цель работы: Приобретение практических навыков генерации сигналов заданной формы и параметров.
Общие сведения.
Неизбежным этапом моделирования процессов фильтрации является имитация (генерирование) сигналов заданной формы. Пакет Signal Processing Tollbox предоставляет широкие возможности для формироваиня сигналов различных видов. Сигналы могут быть детерминированными и недетерминированными. Детерминированные сигналы удобны для аналитического описания и анализа систем обработки и преобразования сигналов и широко используются в роли тестовых сигналов, т.к. их временная зависимость Y(t) аналитически определена и для любого момента времени t при неоднократном моделировании мы будем получать одни и те же значения Y(t).
На практике большинство реальных сигналов не являются детерминированными из-за засоренности их шумами и помехами, имеющими случайный характер с тем или иным законом распределения вероятности. Моделирование зашумленных сигналов в MATLAB обеспечивается с помощью генератора случайных чисел.
Средства MATLAB позволяют генерировать:
- одиночные часто встречающиеся на практике непериодические сигналы (простые);
- последовательности импульсов;
- периодические сигналы;
- сигналы с меняющейся частотой;
- случайные сигналы;
Рассмотрим некоторые функции генерации перечисленных сигналов.
Генерация простейших одиночных циклов.
Для генерации одиночных импульсов предназначены следующие функции:
- rectpuls ─ прямоугольный импульс;
- tripuls ─ треугольный импульс;
- sinc ─ импульс вида sin(πt)/(πt);
- gauspuls ─ радиоимпульс с гауссовой огибающей;
Рассмотрим эти функции более подробно.
Прямоугольный импульс.
Для формирования одиночного прямоугольного импульса с единичной амплитудой служит функция rectpuls:
Y=rectpuls(t, width)
здесь
t ─ вектор последовательности отсчетов времени,
width ─ ширина (длительность) импульса.
Возвращаемый результат Y ─ вектор рассчитанных значений сигнала, определяемых по формуле:
Импульс генерируется центрированным относительно t=0
Если необходим импульс с амплитудой отличной от 1, нужное значение амплитуды задается в виде множителя перед функцией.
Например, импульс амплитуды 1,5 В:
Y=1,5*rectpuls(t,w)
Полярность импульса задается знаками: “+” (подразумевается), “─” перед функцией.
Например, для импульса отрицательной полярности:
Y= - rectpuls(t,w)
Вектор дискретных отсчетов времени t можно задавать двумя способами, либо задав частоту дискретизации Fs (sampling frequency) и использовать обратную величину в качестве шага временного ряда, либо непосредственно указывать шаг временного ряда.
Например, для формирования дискретных отсчетов времени в течении 2 с, с частотой 8 кГц, временной ряд задается следующим образом:
>> Fs =8e3; % частота дискретизации 8 кГц
>> t = 0 : 1/ Fs : 2 % две секунды дискретных значений времени
>> t = t’ % преобразуем строку в столбец
Сформируем дискретные отсчеты времени в течение 10 с, с шагом 0,01 (второй способ):
>> t = 0 : 0,01 : 10 % десять секунд дискретных отсчетов времени с шагом 0,01 с.
Ширина формируемого импульса указывается в единицах времени (секундах), например, импульс шириной 2 с:
>> Y= rectpuls(t,2)
Для визуализации формируемых импульсов могут использоваться различные графические средства MATLAB:
- соединение дискретных отсчетов линиями (линейная интерполяция), функция plot;
- в виде точек, без линий, функция plot(…’.’);
- в виде стебельков, функция stem;
- в ступенчатом виде, функция stairs;
Способы и средства графического отображения рассмотрены в лабораторной работе №2.
Горизонтальная ось может быть проградуирована в номерах отсчетов, либо в значениях времени. Поэтому, при вызове графических функций следует использовать два параметра, передав в первом из них соответствующий временной вектор.
Треугольный импульс.
Формирование одиночного импульса треугольной формы единичной амплитуды можно осуществить с помощью процедуры tripuls:
Y = tripuls(t,w,s)
Аргументы y, t, w имеют то же смысл, что и для прямоугольного импульса.
Аргумент S(-1<S<1) определяет наклон треугольника, т.е. положение его вершины. Если S=0, или когда аргумент S не указан, треугольный импульс имеет симметричную форму.
Пик импульса расположен при t=w*s/2;
Вектор рассчитанных значений сигнала Y, определяется по следующей формуле:
Если не указывать w, то по умолчанию w=1.
Используя функцию tripuls можно формировать трапециидальные импульсы.
Импульс с ограниченной полосой частот.
Для формирования сигнала, имеющего ограниченный по частоте спектр, служит функция Sinc:
Y= sinc(t)
Единственным входным параметром является вектор значений времени t. Возвращаемый результат Y- вектор рассчитанных значений сигнала, определяемых по формуле:
Эта функция является обратным преобразованием Фурье прямоугольного импульса шириной 2π и высотой 1:
Гауссов радиоимпульс.
Для формирования импульса, являющегося синусоидой, модулированной функцией Гаусса, используется процедура gauspuls:
Y = gauspuls(t, fc, bw, bW2)
Здесь t – вектор значений времени fc – несущая часть в герцах, bw – относительная ширина спектра (ширина спектра деленная на несущую частоту), bW2 – уровень (в децибелах), по которому производится измерение ширины спектра.
Возвращаемый результат Y – вектор рассчитанных значений сигнала, определенных по формуле:
Y= exp(-at2)cos(2πfct)
Коэффициент а управляет длительностью импульса и, соответственно, шириной его спектра.
Параметры: fc, bw и bW2 можно опустить, при этом используются их значения по умолчанию: fc=1000 Гц; bw=0,5 Гц; bW2= -6 дБ.
Генерация последовательности импульсов.
Для генерации конечной последовательности импульсов (pulse train) одинаковой формы с произвольно задаваемыми задержками и уровнями служит функция pulstran. Тип импульса может задаваться одним из двух способов: именем функции, генерирующей импульс (rectpuls, tripuls, gauspuls), либо уже рассчитанным вектором отсчетов.
Вызов функции:
Y= pulstran(t, d, ‘func’, p1, p2, …)
Здесь t – вектор значений времени,
d – вектор значений тех моментов времени, где должны быть центры соответствующих импульсов (вектор задержек),
‘func’ – имя функции, генерирующей одиночный импульс,
p1, p2 … - параметры импульса, необходимые для определения этого импульса.
Амплитуда задается так же как и для одиночного импульса:
Y = A*pulstran(t, d, ‘tripuls’, p1,…)
Здесь А – амплитуда последовательности треугольных импульсов.
Пример генерации 5-ти прямоугольных равноотстоящих друг от друга импульсов, шириной 4 с и амплитудой 0,8 В:
>> t= 0 : 0.01 : 50;
>> d= [0 : 50/5 : 50];
>> y=0,8*pulstran(t, d, ‘rectpuls’, 4);
>> команды графики …
Можно интервалы между импульсами делать переменными, что учитывается параметром d, аналогично можно задавать и переменную амплитуду.
Функции генерации периодических сигналов.
Эти функции позволяют формировать отсчеты периодических сигналов следующих форм:
- square ─ последовательность прямоугольных импульсов;
- sawtooth – последовательность треугольных импульсов;
- diric ─ функция Дирихле (периодическая sinc - функция)
Последовательность прямоугольных импульсов
Вид функции:
>> Y= square(t)
Такая функция генерирует последовательность импульса с периодом 2π и скважностью 2, последовательность двуполярная ─ сигнал принимает значения +1 В и –1 В.
Последовательность с периодом Т формируется следующим образом:
>> Y=square(2*pi*t/T);
Для регулирования скважности вводят второй входной параметр duty:
>>Y=square(t, duty);
Duty определяет длительность положительной полуволны в процентах от периода волны. Задается в процентах, по умолчанию duty=50.
Генерация пилообразных и треугольных колебаний осуществляется и треугольных колебаний осуществляется с помощью функции sawtooth.
Обращение вида:
>> Y=sawtooth(t, width);
Генерирует сигнал, представляющий собой пилообразные волны с периодом 2π в моменты времени, которые задаются вектором t. Амплитуда линейно возрастает от -1 до 1 за время 2πw, а затем за время 2π(1-w) линейно убывает от 1 до -1.
По умолчанию w=1, при w =0,5 получится последовательность симметричных треугольных импульсов.
Сформировать последовательность с периодом Т можно следующим образом:
>> Y=sawtooth(2*pi*t/T,w);
Функция Дирихле описывается формулой:
Обращение к функции Дирихле:
>> Y=diric(t, n);
Максимальное значение функции равно 1, минимальное - ─1.
Генерация сигнала с меняющейся частотой.
Для получения колебаний с единичной амплитудой, частота которых меняется по заданному закону предназначена функция chirp:
Y=chirp(t, f0, t1, f1, ‘metod’, phi);
Здесь t – вектор значений времени;
Phi – начальная форма колебаний;
f0, t1 и f1 создают опорные точки для расчетов: в нулевой момент времени мгновенная частота равна f0, а в момент времени t1 она равна f1.
Строковый параметр ‘metod’ определяет тип зависимости мгновенной частоты от времени:
- ‘linear’: f(t)= f0 + βt, где ;
- ‘quadratic’: f(t)= f0 + βt, где ;
- ‘logaritmic’: f(t)= f0 + βt, где ;
Если параметры phi и ‘metod’ при вызове функции не указаны, то используется их значение по умолчанию:
Phi=0 и ‘metod’ = ‘linear’.
Ограничение сигнала по длительности не производить, колебания генерируются для всех значений времени заданных в векторе t.