Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КСД-12 ОСИ / Лаб. работа3.doc
Скачиваний:
35
Добавлен:
03.03.2016
Размер:
129.54 Кб
Скачать

Лабораторная работа №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.

Соседние файлы в папке КСД-12 ОСИ