Порядок выполнения работы. 1. Запустить систему matlab и открыть окно для создания новой модели

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. Объяснить различия мультипликативной и аддитивной помех при приеме сигналов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: