Генерация сигналов в матлаб
Автор работы: Пользователь скрыл имя, 10 Декабря 2013 в 16:08, лабораторная работа
Описание работы
Цель работы: получить навыки моделирования сигналов при помощи пакетов расширения Signal
Processing Toolbox и Simulink среды Matlab.
Файлы: 1 файл
МОДЕЛИРОВАНИЕ СИГНАЛОВ В СРЕДЕ MATLAB
Цель работы: получить навыки моделирования сигналов при помощи пакетов расширения Signal
Processing Toolbox и Simulink среды Matlab.
1. Моделирование сигналов при помощи пакета Signal Processing Toolbox
Пакет расширения Signal Processing Toolbox среды Matlab предназначен для обработки сигналов и
изображений. При помощи этого пакета можно моделировать сигналы и обрабатывать их, в том числе
осуществлять Фурье-преобразования, строить спектрограммы, периодограммы и т.д.
Сигнал − это зависимость одной величины от другой (функция). Для обработки на компьютере
требуется перевести сигналы в цифровую форму. Один из способов сделать это − равномерно по времени
измерить значения сигнала на определенном промежутке времени и ввести полученные значения амплитуд
в компьютер. Если делать измерения достаточно часто, то по полученному дискретному сигналу
можно будет достаточно точно восстановить вид исходного непрерывного сигнала. Как правило,
непрерывные сигналы в системах компьютерной математики являются абстракцией. В них обычно
задаются дискретные сигналы, определяемые в некоторые промежутки времени – чаще всего с постоянным
шагом. Для описания таких сигналов в Matlab задается вектор времени, например: t=0:0.1:10. Здесь задано
11 отсчетов времени от 0 до 10 с шагом 0.1. Одиночные (или одноканальные) сигналы задаются как
y1=sin(t)
% Синусоидальный сигнал
y2=t
% Линейно нарастающий сигнал
y3=t.^2
% Квадратичный сигнал
y4=exp(-t)
% Экспоненциально спадающий сигнал
Каждый из этих сигналов представляется вектором, размер которого равен размеру вектора времени
t. В Matlab возможно и задание множественных (многоканальных) сигналов, например:
ym=[y1 y2 y3 y4] или
ym=[sin(t) t t.^2 exp(-t)]
Такой сигнал представляется матрицей.
Для моделирования шумов используется генератор случайных чисел с тем или иным законом
распределения. Наиболее важные сигналы в пакете Signal Processing Toolbox задаются специальными
функциями, хотя любой сигнал можно создать средствами Matlab по подобию описанных выше примеров.
Моделирование сигналов – одна из важнейших задач пакета Signal Processing Toolbox среды Matlab.
Многие сигналы являются детерминированными, т.е. их временная зависимость
y t аналитически
определена и для любого момента времени
t
. Детерминированные сигналы удобны для аналитического
описания и анализа систем обработки и преобразования сигналов и широко используются в роли тестовых
сигналов. Однако большинство сигналов не являются детерминированными. Одной из причин этого
является засоренность сигналов шумами и помехами, имеющими случайный характер с тем или иным
законом распределения. Моделирование зашумленных сигналов в пакете Signal Processing Toolbox
обеспечивается при помощи генератора случайных чисел. Другая причина заключена в самой сути
сигналов как носителей информации. Разумным компромиссом между детерминированными и
недетерминированными сигналами являются детерминированные сигналы с повторяющейся при каждом
запуске моделирования шумовой компонентой. Это позволяет, с одной стороны, обеспечить учет влияния
шума, а с другой – обеспечить повторяющиеся в процессе многократного моделирования результаты.
Далее
рассмотрим
некоторые
примеры
моделирования
детерминированных
и
недетерминированных сигналов при помощи пакета Signal Processing Toolbox.
1.1 Построение зашумленного сигнала
Пусть нужно создать зашумленный сигнал, содержащий две синусоидальные компоненты – первой
(основной) и третьей гармоник. Ниже приводится листинг программы для построения зашумленного
сигнала.
t=(0:.01:2)';
y=sin(2*pi*1*t)+0.25*sin(2*pi*3*t);
randn('state',0);
yn=y+0.5*randn(size(t));
plot(t,y,t,yn)
2
В первой строке программы задается вектор-столбец
времени, что обеспечивает квантование сигнала по
времени. Знак апострофа означает транспонирование
вектора, т.е. превращение его из вектор-строки в
вектор-столбец. Хотя на первых порях такое
преобразование не имеет существенного значения, оно
принципиально важно – многие функции Matlab
требуют однозначного задания векторов либо в виде
векторов-строк, либо в виде вектров-столбцов. Во
второй строке программы задается вектор некоторой
функции
y t , которая представляет собой сумму
Рис.1.1. Графики исходного и зашумленного сигналов
синусоиды с амплитудой 1 и частотой 1 Гц с синусоидой, имеющей амплитуду 0.25 Гц и частоту 3 Гц.
Третья строка предназначена для создания сигнала, на который наложен аддитивно шум, моделируемый с
помощью генератора случайных чисел. Четвертая строка предназначена для построения вектора
yn
зашумленного сигнала. Результат представлен на рисунке 1.Из рисунка видно, насколько шум искажает
форму сигнала.
1.2 Моделирование косинусоиды с переменной частотой
Для этих целей используется функция chirp. Она задается следующим образом:
y=chirp(t,f0,t1,f1,['method',phi]).
Функция
chirp
формирует
выборку
(дискретные
значения)
косинусоидального сигнала с частотой от
0
f
в начальный момент времени
t
до
1
f
в конечный момент
времени
1
t
. По умолчанию
0
1
0,
0,
100.
t
f
f
Необязательный параметр phi (по умолчанию 0) задает
начальную фазу сигнала. Другой необязательный параметр 'method' задает закон изменения частоты. Этот
параметр может принимать следующие значения:
• linear - линейный закон изменения частоты
0
j
f t
f at
, где
1
0
/
a
f
f
t
;
• quadratic – квадратичный закон изменения частоты
2
0
j
f t
f at
, где
1
0
1
/
a
f
f
t
;
• logarithmic – логарифмический закон изменения частоты
0
10
j
f t
f
at
, где
1
0
1
log10
/
a
f
f
t
и
1
0
f
f
.
По умолчанию принято значение method=linear. Значения параметров по умолчанию используются,
если соответствующая переменная отсутствует или задано пустое значение.
Пусть требуется задать косинусоидальный сигнал, частота которого меняется по полиномиальному
закону. Ниже приводится листинг соответствующей программы.
t=[0 0.5 1.0 1.5 2.0] % задание вектора времени
f=[0 200 100 150 300]; % задание вектора частот
p=polyfit(t,f,4) % регрессия полиномом 4-го порядка
t=0:0.001:2; % задание вектора времени
y=chirp(t,p) % генерация сигнала и построение графиков
subplot(211); plot(t,polyval(p,t));set(gca,'ylim',[0 500]);
subplot(212); specgram(y,128,1E3,128,120);
Функция subplot позволяет вывести в графическом
окне сразу несколько графиков. Применение функции
subplot(m,n,p) разбивает графическое окно на m×n
подокон, при этом m – число подокон по вертикали, n –
число подокон по горизонтали, p – номер текущего
подокна.
В первых трех строчках модуля задано построение
полинома 4-го порядка, описывающего функцию
времени, которая используется для модуляции частоты
косинусоидального сигнала – следующие две строки.
На
рисунке
справа
приводятся
графики
моделирующей
полиномиальной
функции
и
спектрограмма сигнала (амплитудная составляющая
вектора по времени), модулированного по заданному
этой функцией закону. Вообще спектрограммой
Рис.1.2. График моделирующей полиномиальной
функции и спектрограмма сигнала, модулированного
по заданному этой функцией закону.
3
сигнала называют его мгновенный спектр, зависящий от времени. Из рисунка мы видим, что
спектрограмма оконного преобразования Фурье идентифицирует модуляцию синусоидального сигнала, она
строит модулирующую функцию. На рисунке приводятся графики моделирующей полиномиальной
функции и спектрограмма сигнала (амплитудная составляющая вектора по времени), модулированного по
заданному этой функцией закону.
1.3 Генерация импульсов
Для
создания
отсчетов
импульсных сигналов разной формы служит
функция
y=pulstran(t,d,'func'[,p1,p2,...]). Форма задается параметром func, который может иметь значения:
• gauspuls – синусоида, модулированная по закону Гаусса ;
• rectpuls – прямоугольный импульс;
• tripuls – треугольный импульс.
Вектор
y
вычисляется для отсчетов времени, заданных вектором
t
, по формуле
y=func(t-d(1))+func(t-d(2))+…
Число импульсов в заданном интервале времени задается длиной вектора d, т.е. length(d).
Необязательные параметры p1,p2,… при необходимости позволяют задавть дополнительные параметры
обращения к 'func', например, типа func(t-d(1), p1,p2,…). При записи функции в виде y=pulstran(t,d,p,[fs])
можно задать частоту дискретизации fs ( по умолчанию 1 Гц).
Листинг программы, построенной с использованием
функции pulstran:
t=0:.00001:.005;
d=[0:.001:.01;0.5.^(0:10)]';
y=pulstran(t,d,@gauspuls,5000,.5);
plot(t,y)
Рис.1.3. График сигнала, построенного функцией pulstran.
1.4 Моделирование сигнала при помощи функции Дирихле
Функция Дирихле может рассматриваться как
сигнал и описывается так y=diric(x,n). Здесь n – целое
положительное число, влияет на вид функции
Дирихле.
x=0:0.1:20;n=10;
y=diric(x,n);
plot(x,y)
Рис. 1.4. Сигнал, построенный при помощи
функции Дирихле
При моделировании сигналов этим методом целесообразно рассмотреть влияние параметра n на вид
сигнала.
1.5 Моделирование трапециевидного импульса
Сформируем симметричный трапециевидный импульс с
амплитудой 10 В и размерами верхнего и нижнего оснований 20 и
60 мс соответственно. Частота дискретизации равна 1 кГц.
Листинг соответствующей программы приведен ниже.
Fs=1e3;
t=-50e-3:1/Fs:50e-3;
A=10;
T1=20e-3;
T2=60e-3;
s=A*(T2*tripuls(t,T2)-T1*tripuls(t,T1))/(T2-T1);
plot(t,s,'k');
В результате на экран выводится одиночный трапециевидный
импульс.
Рис.1.5. Трапециевидный импульс
4
1.6 Моделирование прямоугольного импульса
Последовательность прямоугольных импульсов формируется при помощи функции square. Функция
square принимает в общем виде два входных параметра – вектор значений времени t и параметр duty, с
помощью которого можно регулировать скважность получаемой последовательности:
y=square(t,duty).
Параметр duty задает не саму скважность (скважность – это отношение периода к длительности импульса),
а обратную ей величину – коэффициент заполнения (в процентах), т.е. отношение длительности импульса к
периоду. Сформируем прямоугольный сигнал скважности 50% на интервале времени от 0 до 20 с.
t=0:0.1:20;
y=square(t,50);
plot(t,y)
ylim([-1.1 1.1]);
Рис. 1.6. Прямоугольный сигнал
1.7 Моделирование пилообразного сигнала
Для моделирования пилообразного сигнала применяется функция sawtooth, которая также имеет два
входных параметра – вектор значений времени t и параметр width, при помощи которого можно
регулировать длительность «обратного хода» − промежутка, на котором уровень сигнала линейно падает от
1 до -1. Значение параметра width должно быть в пределах от 0 до 1.
y=sawtooth(t,width)
Сформируем треугольный сигнал на интервале времени от 0 до 20 с. Исследуем влияние параметра
width на форму сигнала.
t=0:0.1:20;
y=sawtooth(t,0);
plot(t,y)
ylim([-1.1 1.1]);
a)
b)
c)
Рис. 1.7. Пилообразный сигнал. a) - width=0, b) width=0.5, c) width=1
ЗАДАНИЕ 1.
Используя листинги приведенных выше программ, получите при помощи пакета расширения Signal
Processing Toolbox графики, показанные на рис.1-7.
Постройте синусоидальный, линейно нарастающий, квадратичный и экспоненциально спадающий
сигналы.
2 Моделирование автоколебаний при помощи пакета Simulink
2.1 Пакет расширения Simulink, его назначение и возможности
Роль математического моделирования трудно переоценить. Математическое моделирование – это
область науки и техники, которая обеспечивает выявление закономерностей протекания различных
явлений окружающего нас мира или работы систем и устройств путем их математического описания и
моделирования без проведения натурных
испытаний. При этом используются фундаментальные
положения и законы математики, описывающие моделируемые явления, системы или устройства на уровне
их идеализации.
В состав системы MATLAB входит пакет моделирования динамических систем – Simulink. Пакет
Simulink позволяет осуществлять моделирование и исследование поведения динамических нелинейных
систем. Ввод характеристик исследуемых систем производится в диалоговом режиме, путем
5
графической сборки схемы соединений элементарных стандартных звеньев. В результате такой сборки
образуется модель исследуемой системы. Модель хранится в файле с расширением .mdl.
Создание моделей в пакете Simulink основано на использовании технологии Drag-and-Drop. В качестве
"кирпичиков" для построения модели применяются модули (или блоки), хранящиеся в библиотеке Simulink.
Любая модель может иметь иерархическую структуру, т.е. состоять из моделей более низкого уровня,
причем число уровней иерархии практически не ограничено. В ходе моделирования имеется возможность
наблюдать за процессами, происходящими в системе. Для этого используются специальные смотровые
окна, входящие в библиотеку Simulink.
Каковы основные свойства подсистемы Simulink? Подсистема Simulink:
• предоставляет возможность моделирования непрерывных, дискретных и гибридных - как линейных, так
и нелинейных - систем;
• включает в себя обширную библиотеку блоков (непрерывные элементы, дискретные элементы,
математические функции, нелинейные элементы, источники сигналов, средства отображения), которые
можно использовать для создания новых систем;
• позволяет объединять блок-диаграммы в составные блоки, что обеспечивает иерархическое
представление структуры модели;
• содержит средства для создания блоков и библиотек, определяемых пользователем;
• дает возможность проектировать подсистемы, имеющие изменяемую во времени структуру.
Запуск подсистемы Simulink выполняется из основного окна, для чего необходимо щелкнуть левой
кнопкой мыши на кнопке запуска этой подсистемы, находящейся в верхней части окна, либо набрать в
основном окне команду Simulink. В том и другом случае откроется окно Simulink Library Browser (Система
просмотра библиотек Simulink). В верхней части этого окна две крайние левые кнопки служат для создания
новой и открытия существующей модели соответственно.
Процесс построения модели Simulink включает в себя компоновку и задание необходимых
параметров. Компоновка заключается в выборе из библиотек Simulink необходимых блоков, размещение
их в открывшемся окне и задание межблочных связей. Далее для каждого блока устанавливаются
соответствующие параметры, отвечающие требованиям моделируемой системы.
2.2 Генератор Ван-дер-Поля как автоколебательная система
В природе многие процессы являются колебательными. Колебания – это движения или процессы,
обладающие той или иной степенью повторяемости во времени. Колебания свойственны всем явлениям
природы: пульсирует излучение звезд, внутри которых происходят циклические ядерные реакции; с
высокой степенью периодичности вращаются планеты Солнечной системы; движение Луны вызывает
приливы и отливы на Земле; периодически бьется человеческое сердце. В физике выделяются колебания
механические, акустические, электромагнитные и т.д. Все колебания можно подразделить на свободные
(осуществляющиеся без воздействия внешней силы) и вынужденные (происходящие под действием
некоторой периодически действующей внешней силы).
Можно выделить особый тип колебаний – автоколебания. Автоколебания представляют собой
незатухающие колебания, поддерживаемые внешними источниками энергии в нелинейной диссипативной
системе, вид и свойства которых определяются самой системой и не зависят от начальных условий.
Автоколебания в динамической системе могут быть не только периодическими, но и квазипериодическими
и даже стохастическими. Возможность существования периодического асимптотически устойчивого
движения, которое изображается изолированной замкнутой траекторией в фазовом пространстве системы,
к которой со временем притягиваются траектории из некоторой окрестности независимо от начальных
условий, обеспечивается только в нелинейных диссипативных системах. Этот тип динамических систем
настолько важен при изучении колебательных процессов, что для его выделения А.А.Андронов предложил
специальный термин – автоколебательные системы.
Автоколебания могут быть получены при помощи генератора Ван-дер-Поля.
Автоколебания принципиально отличаются от других колебательных процессов в диссипативных
системах тем, что для их поддержания не требуется периодических воздействий извне. Математическим
образом автоколебаний является предельный цикл Пуанкаре – замкнутая траектория в фазовом
пространстве, отвечающая периодическому движению.
В качестве примера динамической системы с предельным циклом Пуанкаре рассмотрим
классический нелинейный осциллятор Ван-дер-Поля. Переходя в уравнении (1.3) от величин U, LC, R к
безразмерным переменным y, μ, b , получаем уравнение колебаний осциллятора Ван-дер-Поля в виде:
1
2
1
1
1
1
0
y ''
y y ' y
(2.1)
6
Уравнение Ван-дер-Поля, учитывающее наличие внешнего гармонического возмущения амплитудой В и
частотой на нелинейную систему с коэффициентом обратной связи (отрицательным сопротивлением) µ
записывается в виде
1
2
1
1
1
1
y ''
y y ' y
B coswt
(2.2)
2.3 Работа с демонстрационной моделью версии Simulink, описывающей генератор Ван-дер-
Поля
Simulink имеет специальный редактор дифференциальных уравнений. С помощью которого можно
задать систему дифференциальных уравнений первого порядка явно в принятой форме Коши и тут же
начать ее решение с помощью решателя. Для получения доступа к решателю надо загрузить файл deе,
который находится в папке Matlab / toolbox / simulink / deе. Воспользуемся готовой демонстрационной
моделью – файлом под именем deedemo1. Он выводит окно всего с двумя блоками – блоком vdp и
осциллографом x1:
Рис.2.1. Модель для описания колебаний, полученных при помощи
генератора Ван-дер-Поля.
Первый блок решает заданное уравнение Ван-дер-Поля, а второй просто отображает решение в виде
временной зависимости. Если дважды щелкнуть левой кнопкой мыши по первому блоку, откроется
редактор дифференциальных уравнений. В этом окне можно модифицировать решаемые уравнения или
ввести новые, менять значения начальных условий. Второй блок (осциллограф) предназначен для
визуализации графических данных.
Для начала процесса моделирования нужно войти в меню модели Simulation и выбрать Start. На
экране осциллографа будет наблюдаться динамическая картина колебаний, получаемых при помощи
генератора Ван-дер-Поля. Чтобы остановить изображение колебаний на экране осциллографа, нужно
нажать левой кнопкой мыши на изображении блок-схемы модели, или в меню модели воспользоваться
командой Simulation/Pause. Параметры моделирования (время моделирования, погрешность и т.д.) могут
быть изменены при помощи команды Simulation parameters в меню Simulation.
ЗАДАНИЕ 2.
1. Загрузите демонстрационную модель, описывающую колебания, полученные согласно уравнению Ван-
дер-Поля. Получите осциллограмму колебаний.
2. Измените параметры моделирования. Получите осциллограмму колебаний.
3. Введите вместо уравнения Ван-дер-Поля другое дифференциальное уравнение и получите его решение.
Контрольные вопросы
1. Пакет Signal Processing Toolbox, его назначение.
2. Функции пакета расширения Signal Processing Toolbox.
3. Пакет расширения Simulink, его назначение.
4. Основные возможности пакета расширения Simulink.
5. Доступ к пакету расширения Simulink.
6. Автоколебания. Генератор Ван-дер-Поля.
7. Демонстрационная модель, описывающая колебания согласно уравнению Ван-дер-Поля.
8. Назначение блоков в модели и работа с ними.
Литература
1. Коткин Г.Л., Черкасский В.С. Компьютерное моделирование физических процессов: Учеб.
Пособие/Новосиб. ун-т. Новосибирск, 1999. - 128 с.
2. Жанабаев З.Ж., Иманбаева А.К., Алмасбеков Н.Е. Компьютерное моделирование в радиофизике и
электронике. – Алматы, Қазақ университеті, 2005. – 144 с.
3. Дьяконов В.П. Matlab 6.5 SP1/7+Simulink 5/6. Основы применения. – М.: СОЛОН-Пресс, 2005. – 800 с.
4. Дьяконов В.П., Круглов В.С. Математические пакеты расширения Matlab. Специальный справочник. –
СПб: Питер, 2001. – 480 с.
Информация о работе Генерация сигналов в матлаб