Программирование меню в среде GUIDE

Министерство по образованию и науке УР

ФГБОУ ВПО «ИжГТУ»

Кафедра « Мехатронные системы»

 

Отчет по лабораторной работе № 1

 

Тема: «Ознакомление со средой MatLab»

 

 

Выполнил:

студент гр. 7-05-3

Сувырина К.А.

 

Проверил:

Кравченко О.Е.

 

Ижевск 2011

СОДЕРЖАНИЕ


ТЕХНИЧЕСКОЕ ЗАДАНИЕ....................................................................................................... 3

Создание и программирование меню и контекстного меню................................................... 3

ВВЕДЕНИЕ................................................................................................................................... 4

1Создание окон......................................................................................................................... 5

2 Программирование меню в среде GUIDE ............................................................................. 8

3 ВЫЧИСЛИТЕЛЬНЫЙ ЭКСПЕРИМЕНТ............................................................................. 11

ЗАКЛЮЧЕНИЕ........................................................................................................................... 12

ЛИТЕРАТУРА.............................................................................................................................. 12


 

 

ТЕХНИЧЕСКОЕ ЗАДАНИЕ

Создание и программирование меню и контекстного меню.

 

ВВЕДЕНИЕ

 

MATLAB(сокращение от англ. «Matrix Laboratory») — пакет прикладных программ для решения задач технических вычислений и одноимённый язык программирования, используемый в этом пакете. Oн работает на большинстве современных операционных систем, включая Linux, Mac OS, Solaris (начиная с версии R2010b поддержка Solaris прекращена) и Microsoft Windows.

Описание языка

Язык MATLAB является высокоуровневым интерпретируемым языком программирования, включающим основанные на матрицах структуры данных, широкий спектр функций, интегрированную среду разработки, объектно-ориентированные возможности и интерфейсы к программам, написанным на других языках программирования.

Программы, написанные на MATLAB, бывают двух типов — функции и скрипты. Функции имеют входные и выходные аргументы, а также собственное рабочее пространство для хранения промежуточных результатов вычислений и переменных. Скрипты же используют общее рабочее пространство. Как скрипты, так и функции не компилируются в машинный код и сохраняются в виде текстовых файлов. Существует также возможность сохранять так называемые pre-parsed программы — функции и скрипты, обработанные в вид, удобный для машинного исполнения. В общем случае такие программы выполняются быстрее обычных, особенно если функция содержит команды построения графиков.

Основной особенностью языка MATLAB являются его широкие возможности по работе с матрицами, которые создатели языка выразили в лозунге «думай векторно» (англ. Think vectorized).

 

 

 

Создание окон

 

Запуск среды GUIDE создание заготовки окна приложения с осями и его сохранение

 

Для запуска среды визуального программирования GUIDE в командной строке MATLAB следует выполнить команду

>> guide.


Рисунок 2 Окно приложения с осями

Оси по умолчанию получили тэг axes1. В первом столбце таблицы перечислены названия свойств, а во втором - их значения.

Создание меню в редакторе меню

Запуск среды GUIDE создание заготовки окна приложения с осями и его сохранение. Добавим меню со следующими пунктами:

1. Меню File с пунктами:

1.1. пункт Open and Plot Data...

1.2. пункт Exit

2. Меню Grid с пунктами:

2.1. пункт XGrid

2.2. пункт YGrid

Создадим меню File, для чего следует нажать на кнопку New Menu находясь на вкладке Menu Bar.

Зададим свойству Label значение File, а свойству Tag - значение mnFile. На следующем рисунке приведены основные элементы управления окна Menu Editor.

 

Рисунок 2 - Элементы управления окна Menu Editor

Для того, чтобы в работающем приложении меню или пункт был доступен, необходимо убедиться, что флаг Enable this item установлен.

В строке ввода Callback после нажатия кнопки View будет записана функция, которая вызывается при выборе пользователем соответствующего пункта меню. Вызывается основная функция приложения exmenu, которая затем вызывает подфункцию обработки события Callback выбранного меню или пункта меню. После нажатия кнопки View в редакторе меню заголовок соответствующей подфункции создается файле exmenu и выделяется в редакторе m-файлов.

Добавим теперь в меню File пункты Open and Plot Data... и Exit. Для этого на панели с иерархией меню в редакторе меню надо сделать меню File текущим при помощи щелчка мыши по нему и добавить пункт, нажав на кнопку New Menu Item. Для нового пункта надо задать свойству Label значение Open and Plot Data..., а свойству Tag - значение mnFile_OpenPlot. Для быстрого доступа зададим сочетание клавиш <Ctrl>+<O>.

Теперь надо добавить еще один пункт Exit в меню File. При добавлении пункта в редакторе меню надо делать текущим элемент меню более высокого уровня перед нажатием кнопки New Menu Item. Т.е. в нашем примере надо сделать текущим меню File. Новому пункту меню зададим для свойства Label значение Exit, а для свойства Tag - значение mnFile_Exit. Для быстрого доступа зададим сочетание клавиш <Ctrl>+<E>. Сгенерируем также для пункта Exit подфункцию обработки его события Callback.

В результате в m-файле должны появиться заголовки двух подфункции:

ñmnFile_OpenPlot_Callback - выполняется при выборе пользователем пункта Open and Plot Data... в меню File;

ñmnFile_Exit_Callback - выполняется при выборе пользователем пункта Exit в меню File.

Осталось добавить меню Grid с пунктами XGrid и YGrid. Для добавления нового меню следует нажать на кнопку New Menu (не важно, что при этом выделено: меню или пункт) и действовать аналогично вышеописанному.

Дадим следующие тэги:

1.для меню Grid - тэг mnGrig;

2.для пункта XGrid - тэг mnGrig_XGrid;

3.для пункта YGrid - тэг mnGrig_YGrid;

В результате в m-файле должны появиться заголовки двух подфункции:

ñmnGrid_XGrid_Callback - выполняется при выборе пользователем пункта XGrid в меню Grid;

ñmnGrid_YGrid_Callback - выполняется при выборе пользователем пункта YGrid в меню Grid;

Окно редактора с иерархической структурой меню должно выглядеть так, как показано на следующем рисунке.

 

 

Программирование меню в среде GUIDE

Программа подфункций для обработки событий пунктов меню представлена на рисунке 4.

 

function varargout = exxmenu1(varargin)

% EXXMENU1 M-file for exxmenu1.fig

% EXXMENU1, by itself, creates a new EXXMENU1 or raises the existing

% singleton*.

%

% H = EXXMENU1 returns the handle to a new EXXMENU1 or the handle to

% the existing singleton*.

%

% EXXMENU1('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in EXXMENU1.M with the given input arguments.

%

% EXXMENU1('Property','Value',...) creates a new EXXMENU1 or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before exxmenu1_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to exxmenu1_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

 

% Edit the above text to modify the response to help exxmenu1

 

% Last Modified by GUIDE v2.5 17-Nov-2011 11:53:27

 

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name',  mfilename, ...

              'gui_Singleton', gui_Singleton, ...

              'gui_OpeningFcn', @exxmenu1_OpeningFcn, ...

              'gui_OutputFcn', @exxmenu1_OutputFcn, ...

              'gui_LayoutFcn', [] , ...

              'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

 

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

% --- Executes just before exxmenu1 is made visible.

function exxmenu1_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% varargin command line arguments to exxmenu1 (see VARARGIN)

 

% Choose default command line output for exxmenu1

handles.output = hObject;

 

Рисунок 4 - Программа подфункций для обработки событий пунктов меню

 

% Update handles structure

guidata(hObject, handles);

 

% UIWAIT makes exxmenu1 wait for user response (see UIRESUME)

% uiwait(handles.figure1);

 

 

% --- Outputs from this function are returned to the command line.

function varargout = exxmenu1_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT);

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

 

% Get default command line output from handles structure

varargout{1} = handles.output;

 

 

% --------------------------------------------------------------------

function mnFile_Callback(hObject, eventdata, handles)

% hObject handle to mnFile (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

 

 

% --------------------------------------------------------------------

function mnFile_OpenPlot_Callback(hObject, eventdata, handles)

[FName,PName]=uigetfile('*.txt');

% проверяем, был ли выбран файл

if ~isequal(FName,0)

% пользователь выбрал файл, формируем его полное имя Name, сцепляя путь с именем.

Name=strcat(PName,FName);

% считываем данные и записываем их в вектора x и y

A=load(Name);

x=A(:,1);

y=A(:,2);

% делаем текущими оси с тэгом axes1, указатель на них в handles.axes1

axes(handles.axes1)

% строим график маркерами

plot(x,y,'o')

% получаем состояние флага у пункта XGrid меню Grid

xGridState=get(handles.mnGrid_XGrid,'Checked');

% если он установлен, то делаем сетку по x

if isequal(xGridState,'on')

   set(handles.axes1,'XGrid','on')

end

% получаем состояние флага у пункта YGrid меню Grid

yGridState=get(handles.mnGrid_YGrid,'Checked');

% если он установлен, то делаем сетку по y

if isequal(yGridState,'on')

   set(handles.axes1,'YGrid','on')

end

end

% hObject handle to mnFile_OpenPlot (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

 

 

% --------------------------------------------------------------------

function mnFile_Exit_Callback(hObject, eventdata, handles)

% удаляем графическое окно, его тэг figure1, а указатель на него в handles.figure1

delete(handles.figure1)

Рисунок 4 - продолжение

 

% hObject handle to mnFile_Exit (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

 

 

% --------------------------------------------------------------------

function mnGrid_Callback(hObject, eventdata, handles)

 

% hObject handle to mnGrid (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

 

 

% --------------------------------------------------------------------

function mnGrid_XGrid_Callback(hObject, eventdata, handles)

% проверяем текущее состояние флага у пункта XGrid

xGridState=get(hObject,'Checked');

if isequal(xGridState,'off')

% флаг был сброшен, но пользователь выбрал пункт XGrid

% добавляем сетку по оси x

set(handles.axes1,'XGrid','on')

% устанавливаем флаг

set(hObject,'Checked','on')

else

% флаг был установлен, но пользователь выбрал пункт XGrid

% убираем сетку по оси x

set(handles.axes1,'XGrid','off')

% сбрасываем флаг

set(hObject,'Checked','off')

end

% hObject handle to mnGrid_XGrid (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles  structure with handles and user data (see GUIDATA)

 

 

% --------------------------------------------------------------------

function mnGrid_YGrid_Callback(hObject, eventdata, handles)

% обработка события Callback пункта YGrid меню Grid

 

% проверяем текущее состояние флага у пункта YGrid

yGridState=get(hObject,'Checked');

if isequal(yGridState,'off')

% флаг был сброшен, но пользователь выбрал пункт YGrid

% добавляем сетку по оси y

set(handles.axes1,'YGrid','on')

% устанавливаем флаг

set(hObject,'Checked','on')

else

% флаг был установлен, но пользователь выбрал пункт YGrid

% убираем сетку по оси y

set(handles.axes1,'YGrid','off')

% сбрасываем флаг

set(hObject,'Checked','off')

end

% hObject handle to mnGrid_YGrid (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

 

 Рисунок 4 - продолжение

 

ВЫЧИСЛИТЕЛЬНЫЙ ЭКСПЕРИМЕНТ

 

После программирования приведенных выше подфункций обработки событий пунктов меню приложение exmenu работает верно, это подтверждено вычислительным экспериментом.

 


Рисунок 4 - вычислительный эксперимент

 

ЗАКЛЮЧЕНИЕ

В результате выполнения данной лабораторной работы мы научились программировать в среде MatLab.

 

 

ЛИТЕРАТУРА

1.file:///C:/Documents%20and%20Settings/Student/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/1%D0%BB%D0%B0%D0%B1%D0%B0/4_1.php.htm

(дата обращения: декабрь 2011)

 


Дата добавления: 2018-05-31; просмотров: 319; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!