Как сделать меню в matlab

Обновлено: 05.07.2024

2 -е занятие по MATLAB

ЛАБОРАТОРНАЯ РАБОТА №2

Создание М-файлов в виде М-функций.

Элементы программирования в MATLAB .

1. По определению файлы, которые содержат в себе языковые коды системы MATLAB , называются М-файлами. М-файлы могут быть функциональными (М-функциями), если они содержат аргументы (входные переменные) и создают выходные данные. М-файлы обеспечивают расширяемость среды MATLAB , позволяют добавлять новые функции (встроенные функции) к уже существующим функциям MATLAB . М - файлы типа М-функций представляют собой как и М-сценарии обычные текстовые файлы, которые создаются с помощью редактора файлов. Написание М-функции начинается с кючевого слов function .

1. Формат заголовка М - функции:

function [список выходных переменных] = ( ); % список выходных переменных может быть условным, т.е просто символ.

% Сохранение М-файла как М-функции должно быть с именем, которое указывается в поле заголовка М-функции.

Пример 1 на создание М-функции. Создать М-файл для вычисления следующего выражения: , где — числа или матрицы одинаковой размерности.

В текстовом редакторе MATLAB создаем следующий М-файл в виде М-функции:

% Применение точки означает массивное озведение в квадрат.

% Созданную М-функцию сохраним под именем , которому редактор MATLAB добавит расширение " .m " .

% Обращение к функции fun 1 может быть выполнено или в командном окне или в М-сценарии.

Для примера 1 сначала в командном окне выполним следующие действия:

Ø fun 1(3,4) % в качестве аргументов выбраны значения a =3, b =4

5 % результат выполнения М-функции fun 1 с входными аргументами 3 и 4

Ø % другой способ использования созданной функции fun 1:

Ø % с присвоением результата, например, через z 1

Ø z1=fun1(a,b)

Пример 2. Вычисление факториалов: , где — количество сомножителей.

Создадим следующую М-функцию под именем fact 1. m :

% Вычисление n -факториал:

function f 1= fact 1( n )

f 1= prod (1: n );

% максимальное число n =170

% функция prod в свою очередь является встроенной функцией MATLAB .

Для примера вычислим :

Пример 3. Создадим функцию для подсчета суммы натуральных чисел как положительных, так и отрицательных.

function s 1= sum 1( n , k ) % n — количество членов ряда, k —любое число, большее или % меньшее нуля, n , k — входные аргументы

Для проверки примера 3 в командном окне следует набрать sum 1 с конкретными n и k , например, n =5, k =1.333 и для отрицательной суммы n =5, k =-6.78.

Пример 4. Закодируем функцию в виде М-функции, где — действительное число.

Создадим следующую М-функцию под именем graf1.m:

function y = zet1(t,k)

% t — входной аргумент , который должен быть определен как вектор чисел

% Созданную М - функцию следует сохранить под именем zet1 .

% Для проверки примера 3 в командном окне MATLAB набрать:

Ø k=3; % число k можно задавать произвольно

Ø z1=graf1(t,k);

Ø polar(t,z1,'r*'),grid

Ø % Должен получиться график в полярной системе координат.

z1 будет означать y1 = 3 + 3(1+sint) . Если клавишей Enter запустить на выполнение, то будут выводиться все значения функции z1. Если же в конце строки стояла точка с запятой, то результат выводится не будет.

Построить график z1 в декартовой системе координат. Для этого в командной строке набрать plot(t,z1),grid . Откроется окно с графиком синусоиды по оси ординат от +3 до + 9 и по оси абсцисс от 0 до 10.

Задание. Применить функцию graf1 с различными входными аргументами и построить графики в декартовой и полярной системах координат.

Пример 5. Контроль количества входных аргументов.

function y=test1(a,b)

if (nargin==1) % nargin — ключевое слово для проверки количества входных аргументов

elseif (nargin==2) % Двойное равенство"= MsoNormal"> % отношения

% Операторы условия if, elseif (ранее встречалось else) имеют следующие форматы записи:


Графический интерфейс пользователя строится из совокупности окон (экранных форм) – объектов-контейнеров, в которых могут размещаться встроенные объекты из следующей палитры компонент (в квадратных скобках – название аналога в Delphi):

- Кнопка 1 (pushbutton) [Button]

- Переключательная кнопка (togglebutton) [BitButton]

- Выбираемая кнопка (radiobutton) [RadioButton]

- Отмечаемое окно (checkbox) [CheckBox]

- Редактируемое окно (edit) [Edit]

- Надпись (text) [Label]

- Панель скроллирования (slider) [ScrollBar]

- Панель (frame) [Panel]

- Список (listbox) [ListBox]

- Выпадающий список выбора (popupmenu) [ComboBox]

  1. Сначала пишется главная программа, в которой вводятся (объявляются) глобальные переменные, по которым будет осуществляться связь с экранной формой.
  2. Проект экранной формы рисуется на бумаге. Выбираются типы объектов для реализации элементов формы. Выбираются имя формы (идентификатор) и заголовок (название формы).
  3. Создается экранная форма

2.1.В командном окне вызвать построитель интерфейса

На экране появится пустая экранная форма. Если требуется продолжить ранее начатое формирование экранной формы, то вызвать построитель интерфейса командой

2.3.Ввести в инспекторе свойств объектов значение свойства экранной формы Name -> название (заголовок) экранной формы. Если надо – настроить окраску и размеры формы.

2.4. Сохранить форму (Ctrl+S или File+Save/Save As) в файле с именем, выбранным для формы (расширение .fig).

2.5.Нарисовать на форме нужные объекты – надписи (Text), редактируемые окна (Edit),… .

2.6.Настроить в инспекторе свойств объектов требуемые свойства объектов – цвет фона (BackgroundColor), текста (ForegroundColor), тип шрифта (FontName), размер шрифта (FontSize), начальное содержание окна (String), горизонтальное положение надписи на объекте (HorizontalAlignment),….

  1. Создание информационных связей формы с основной программой

3.1.При первом сохранении экранной формы MATLAB создает программный модуль формы в файле .m, включающий функцию

function varargout = (varargin)

и функции, реализующие Callback-методы (методы отклика) объектов, размещенных на форме. Методы оформлены в виде подфункций с именами

Для каждого объекта можно дополнительно задействовать еще 3 метода – ButtondownFcn, DeleteFcn, CreateFcn. Для самой формы число методов больше. Для появления соответствующих функций в модуле надо активизировать объект и либо задать ссылку в соответствующей строки инспектора свойств объекта (Property Inspector), либо щелкнуть правой кнопкой мыши и выбрать метод из появляющегося списка.

3.2. Чтение/запись значений свойств объектов следует осуществлять в методах Callback обращением к свойствам, например,

function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)

global PR REZSUM

Для обеспечения возможности использования введенных значений в главной программе переменные должны иметь глобальное объявление и главной программе, и в методе.

3.3.В программе обеспечить появление экранной формы можно выполнением оператора

Система меню

Меню MATLAB состоит из пяти пунктов. Их назначения приведены в с таблице 1.1.

Команды работы с файлами, свойствами окон, печать

Операции правки, команда очистки рабочей области

Включение/отключение строки состояния

Справка, примеры и демонстрации

В таблице 1.2 описаны пункты меню File.

Открытие файла, соответствующего выделенной функции, в окне редактора

Считывание данных в рабочую область

Save Workspace As…

Сохранение данных рабочей области

Просмотр данных в рабочей области

Show Graphics Property editor

Свойства графического редактора

Show GUI Layout Tool

Свойства графического интерфейса

Назначение шрифтов, форматов и др.

Меню Edit содержит стандартные возможности (Undo, Cut, Copy, Paste, Clear, Select All) и команду очистки всех переменных в сеансе (Clear Session).

Меню View состоит из одного пункта-переключателя (Toolbar).

Меню Window позволяет переключаться от одного окна к другому, причем основное окно имеет номер 0, а нумерация графических окон начинается с 1.

Меню Help позволяет пользователю MATLAB ознакомится с программой, её характеристиками, описание команд и т.д. Панель основного окна содержит значки часто используемых операций: создание нового и открытие существующего m-файла, операции правки, команда отмены ввода (Undo), просмотр рабочей области (Workspace Browser), подключенные каталоги (Path Browser) и справка (Help Window).

Интерфейс MATLAB

Новая версия MATLAB сохраняет преемственность с предыдущими реализациями по языку, библиотекам команд, средствам отладки и пр. Изменения затронули интерфейс рабочего места (desktop), куда теперь включены средства работы с файлами, переменными и ассоциированными с MATLAB приложениями.

Ниже описано какие отличия поздней версии MATLAB от более ранних:

Командное окно, осуществляющее запуск команд и получающее результаты их выполнения. Здесь стало доступно контекстное меню для вывода выделенных переменных, открытия файлов-функций и получения справки по ним. Кроме того, конструкции языка MATLAB выделяются цветом.

Список введенных в сеансе команд (History command) является новым инструментом, организующим просмотр, копирование и повторный запуск этих команд.

Новым средством является Launch Pad, обеспечивающий быстрый доступ к инструментам (Workspace, Path, GUI Builder), справке и документации.

Система справки обрела новый интерфейс, заменивший HelpDesk.

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

Рабочая область (Workspace Browser) обеспечивает просмотр и внесение изменений в переменные, а также предоставляет доступ к графическому интерфейсу для считывания данных из бинарных и текстовых файлов Import Wizard.

Редактор массивов (Array Editor) предназначен для просмотра и редактирования матриц, строк и массивов ячеек из строк, имеется возможность изменения формата представления данных.

Редактор-отладчик (Editor/Debugger) обеспечивает создание, редактирование и отладку m - файлов. Модернизация расширила возможности редактора, в частности добавлены следующие возможности: показ номеров строк, превращение массива строк в комментарии, изменение цветов для выделения синтаксических конструкций, поиск фразы в нескольких файлах, возможность восстановления файлов при неудачном завершении предыдущего сеанса, подсказки по данным, сохранение точек останова при записи файла.

Окно Set Path дает доступ к каталогам и предоставляет новый интерфейс вместо Path Browser.

Профилер теперь поддерживает оценку времени выполнения файлов источников.

Включена поддержка Windows 2000 для документов Notebook.

Новым в системе справки является то, что почти вся документация подготовлена в виде HTML-файлов. Она лучше всего отражает текущее состояние системы MATLAB. Доступ к справочной информации реализуется при помощи просмотрщика, учитывающего специфику и организацию продуктов семейства MATLAB. Раскрываемые оглавления по системам, индексация по темам, расширенные поисковые возможности - все это позволяет легко найти нужную информацию. Новым является сохранение закладок и использование контекстного меню при нажатии правой кнопки мыши.

Для быстрого считывания в рабочую область двоичных или ASCII данных удобно пользоваться системой Import Wizard. Ряд команд поддерживает совместимость со старыми названиями.

При реализации новых возможностей среды MATLAB использована технология Java. Однако поддержку Java можно отключить, для этого достаточно запустить программу matlab. exe с параметром - nojvm. В этом случае интерфейс аналогичен интерфейсу MATLAB 5.3.

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

По методике расчетов необходимо было обработать данные с помощью нескольких эмпирических формул для заполнения рабочей таблицы девиации МК. Однако, основным и наиболее наглядным результатом работы является построение кривой девиации МК.

Для построения графика была выбрана функция plot, имеющая большое количество параметров настройки, которые позволяют получить результат в нужном виде. Был составлен код:


И получен следующий график:


Разберем код построчно, рассмотрим какие параметры можно указывать для настройки отображения графиков.


Здесь задаются входные данные для построения графика. Количество значений по оси абсцисс и по оси ординат должно совпадать. По эти данные являются векторами с 36 значениями.


Собственно, функция построения графика, в которую передаются данные и параметры. Помимо очевидных входных данных параметром функции является тип отображаемой линии, закодированный трехсимвольным сочетанием. В данном случае “b” – blue, цвет линии; “o” – вид маркера, которым обозначаются точки графика и “-” – тип линии, в данном случае – сплошная.

Ниже привожу список параметров для настройки отображаемой линии.

Маркер Цвет линии
c голубой
m фиолетовый
y желтый
r красный
g зеленый
b синий
w белый
k черный

Маркер Тип линии
— непрерывная
— — штриховая
: пунктирная
-. штрих-пунктирная


Команда, которой включается сетка на графике.


Подписи для графика и соответствующих осей. Здесь “\circ” кодировка символа градуса.


С помощью команды “help axis” я нашел еще несколько вариантов параметра для осей, в частности попробовал параметр “tight”, который должен был пристыковывать границы графика к крайним значениям кривой. Однако результат и этого параметра меня не удовлетворил т.к. результат выглядел следующим образом:


Для получения наглядного результата пришлось настроить ось “X” отдельно с помощью следующих команд:


Последняя функция задает граничные значения отдельно для оси “X”, что позволило мне ограничить график максимальными значениями по данной оси.

И последняя команда:


Позволила настроить подписи и шаг для оси “X”. Функция “set” является достаточно общей, ее работа зависит от передаваемых параметров. В данном случае “gca” – означает, что параметры будут устанавливаться для сетки графика, “ XTick ” – означает, что будет управляться подпись оси “X”, а параметр “0:45:360” – задает минимальное значение, шаг и максимальное значение.

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


Надеюсь, что эта статья будет полезной не только для начинающих MATLAB, но и для опытных пользователей.

В окончании хотел бы отметить полезность команды “help” – она не только позволяет получить необходимую информацию по функции или команде из командной строки, но и сделать это значительно быстрее, чем через поиск в справке MATLAB.

Читайте также: