1. Запустить систему MATLAB и открыть окно для создания новой модели.
2. Для реализации моделирования, нужно разработать интерфейс, отображающий график моделируемого процесса и позволяющий менять характеристики данного процесса.
Изменяемые величины:
-Частота дискретизации [Мгц]
-Несущая частота [МГц]
-Амплитуда сигнала [В]
-Соотношение сигнал-шум [дБ]
В новом окне задаем функцию
function LABA2
Далее – объявляем переменные, которые должны быть «видимыми» всеми подпрограммами (m-файлами) и используются для объявления главного окна (hFig1), и графика (hAxes), помещенный внутри окна, в котором будут отображаться результаты моделирования.
global hFig1 hAxes
global hEd1 hEd2 hEd3 hEd4 hEd5 hEd6
global hList
global hBut1 hBut2
global hTxt1 hTxt2 hTxt3 hTxt4 hTxt5 hTxt6
hFig1=figure;
Создаем управляющую кнопку hBut1 (“Выполнить”), осуществляющую запуск на исполнение программы с именем ‘progr0’
hBut1=uicontrol(hFig1,'style','pushbutton','String','Выполнить',
'Position',[1100 30 120 30],'Callback','prog01');
Создаем редактируемые текстовые поля, вводимое значение присваивается переменным hEd1, hEd2, hEd4, hEd5.
hEd1=uicontrol(hFig1,'style','edit','Position',[50 30 120 30],'BackgroundColor','white','HorizontalAlignment','left');
hEd2=uicontrol(hFig1,'style','edit','Position',[200 30 120 30],'BackgroundColor','white','HorizontalAlignment','left');
hEd4=uicontrol(hFig1,'style','edit','Position',[350 30 120 30],'BackgroundColor','white','HorizontalAlignment','left');
hEd5=uicontrol(hFig1,'style','edit','Position',[500 30 120 30],'BackgroundColor','white','HorizontalAlignment','left');
Создаем нередактируемые текстовые поля (надписи)
hTxt1=uicontrol(hFig1,'Style','text','Position',[50 70 120 30],'BackgroundColor','white','String','Частота дискритизации Fs','HorizontalAlignment','center');
hTxt2=uicontrol(hFig1,'Style','text','Position',[200 70 120 30],'BackgroundColor','white','String','Несущая частота Fc','HorizontalAlignment','center');
hTxt4=uicontrol(hFig1,'Style','text','Position',[350 70 120 30],'BackgroundColor','white','String','Амплитуда сигнала A','HorizontalAlignment','center');
hTxt5=uicontrol(hFig1,'Style','text','Position',[500 70 120 30],'BackgroundColor','white','String','Отношение сигнал/шум в дБ','HorizontalAlignment','center');
Создаем окно и поле графика
hAxes1=axes('Parent',hFig1,'Color',[1 1 1],'Units','points','Position',[30 100 900 440],'FontSize',8,'Visibl','off');
axes(hAxes1);
set(hAxes1,'FontSize',8);
Создаем управляющую кнопку hBut2 (“Очистить”) и запускаем на исполнение программы с именем ‘CLEAR’ из главной программы
hBut2=uicontrol(hFig1,'style','pushbutton','String','Очистить','Position',[950 30 120 30],'Callback','CLEAR');
Далее создаем программу очистки, вызываемую управляющей кнопкой “Очистить” создаем соответствующий m-файл:
function CLEAR
global hAxes1
global axes
axes(hAxes1);
grid off;
cla;
3.Для выполнения указанной программы с именем ‘progr0’ она должна быть создана в виде самостоятельного m-файла и храниться в той же папке, что и главная программа LABA2. Создадим данный файл с именем ‘progr0’.
Листинг программы исполняемого m-файла должен начинаться с имени вызываемой функции и переменных.
function prog01
global hEd1 hEd2 hEd3 hEd4 hEd5 hEd6
При считывании данных из главного окна в исполняемой программе (progr0) следует поместить операторы
str1=get(hEd1,'String');
Fs=str2num(str1);
str1=get(hEd2,'String');
Fc=str2num(str1);
str1=get(hEd4,'String');
A=str2num(str1);
str1=get(hEd5,'String');
snr=str2num(str1);
4. Произведем моделирование сигналов, используя задание приведенное ниже.
Задание: Необходимо создать модель сигнала с шумом, позволяющую в
интерактивном режиме изменять параметры сигнала и шума. Будем предполагать, что на сигнал воздействует два вида помех: мультипликативные и аддитивные шумы.
В качестве аддитивного шума будем рассматривать белый гауссовский шум.
В качестве мультипликативной помехи будем рассматривать: помехи с экспоненциальным законом распределения, логнормальным или рэлеевским законами распределения(конкретный вариант по указанию преподавателя будет выбран из таблицы).
Номер варианта: | Тип мультипликативной помехи | Тип сигнала | Примечание |
Рэлеевская | Одиночный прямоугольный радиоимпульс импульс | Амплитуду и другие параметры сигналов и помех выполнить в виде редактируемых полей ввода данных в панели главного окна. Рядом поместить надписи (в нередактируемых текстовых полях), описывающие название параметра. Например: «Амплитуда сигнала», «Уровень аддитивной помехи» | |
Рэлеевская | Пачка прямоугольных радиоимпульсов | ||
Рэлеевская | Одиночный гауссов радиоимпульс | ||
Рэлеевская | Пачка гауссовых радиоимпульсов | ||
Экспоненциальная | Одиночный прямоугольный радиоимпульс импульс | ||
Экспоненциальная | Пачка прямоугольных радиоимпульсов | ||
Экспоненциальная | Одиночный гауссов радиоимпульс | ||
Экспоненциальная | Пачка гауссовых радиоимпульсов | ||
Логнормальное распределение | Одиночный прямоугольный радиоимпульс импульс | ||
Логнормальное распределение | Пачка прямоугольных радиоимпульсов | ||
Логнормальное распределение | Одиночный гауссов радиоимпульс | ||
Логнормальное распределение | Пачка гауссовых радиоимпульсов |
Описание моделей сигналов приведено ниже.
Одиночный Гауссов радиоимпульс
Для того чтобы задать одиночный гауссов радиоимпульс введем переменную Т, и зададим для нее дискретное время:
T =-10e-3:1/Fs:10e-3;
Для формирования одиночного гауссова радиоимпульса зададим значение функции Y:
Y=gauspuls(T,Fc)
Одиночный Прямоугольный радиоимпульс
Для создания одиночного прямоугольно радиоимпульса нужно установить частоту сигнала F0:
F0=50
Для того чтобы задать одиночный гауссов радиоимпульс введем переменную Т, и зададим для нее дискретное время:
T =-10e-3:1/Fs:50e-3
Пачка Прямоугольного радиоимпульс
Для формирования пачки прямоугольных радиоимпульсов с единичной амплитудой достаточно задать Y:
Y=(square(2*pi*T*F0, F0*tau*100)+1)*A/2;
Для создания одиночного прямоугольно радиоимпульса нужно установить частоту сигнала F0:
F0=50
Далее установим дискретное время для импульса T:
T =-10e-3:1/Fs:50e-3
Зададим переменную длительность импульса:
tau=5e-3
Пачка Гауссовых радиоимпульсов
Для создания пачки гауссовых радиоимпульсов нужно установить задержку импульсов d:
d = [0: 1/1E3: 10e-3; 1.^(0:10)]';
Зададим дискретное время Т:
T=0: 1/50E3: 10e-3;
Для создания пачки гауссовых радиоимпульсов значение функции Y:
Y=gauspuls(T,Fc);
Добавляем последовательность гауссовых импульсов.
x = pulstran(T,d,'gauspuls',10e3,0.5);
5. Добавим шум к сигналу
Будем рассматривать два вида помех: мультипликативные и аддитивные шумы.
Сначала необходимо задать вид помехи.
Затем объединить сигнал и шум.
Аддитивную помеху (белый гауссовский шум) задаем следующим образом:
shum=awgn(T,snr,'measured');
Добавляем команду которая соединит наш сигнал с шумом и выведет это на график
handl2=plot(Y+shum);
hold on
end
В качестве мультипликативной помехи рассмотрим следующие типы помех:
- логнормальная;
- рэлеевская;
- экспоненциальная.
(Выбрать в соответствии с вариантом)
Для того чтобы добавить экспоненциальную помеху воспользуемся командой:
shum=exppdf(T,snr);
Для того чтобы добавить рэлеевскую помеху:
shum=raylpdf(T,snr);
Для того чтобы добавить логнормальную помеху:
shum=lognpdf(T,log(2000),snr);
6. Используя в редакторе программ кнопку “запуск” выполнить программу и сохранить на диске результат.Показать преподавателю работу
модели и подготовить отчет о работе. Для оформления отчета самостоятельно в верхней части окна пользовательского интерфейса (в листинге программы) создать надпись: «Студент группы ____ ФИО. Вариант №__».
Контрольные вопросы:
1. Перечислить основные этапы создания графического интерфейса пользователя при создании модели сигнала в MATLAB.
2. Объяснить различия мультипликативной и аддитивной помех при приеме сигналов.