Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
35
Добавлен:
03.03.2016
Размер:
527.73 Кб
Скачать

Основы работы в системе MATLAB

Выполнять действия по отношению к командам списка можно с исполь-

зованием правой кнопки мыши, по нажатию которой появляется соответству-

ющее меню. С его помощью можно создать ярлык для группы выделенных ко-

манд, который будет размещен на панели рабочей среды.

Найти необходимую команду можно с использованием опции Find ме-

ню Edit (или с использованием комбинации клавиш Ctrl+F).

2 СОЗДАНИЕ И РЕДАКТИРОВАНИЕ М-ФАЙЛОВ

2.1 Редактор М-файлов

Пользовательские программы в MATLAB оформляются в виде М-файлов,

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

MATLAB редактор М-файлов позволяет не только набирать текст программы,

запускать ее целиком или частями, но и отлаживать алгоритм.

Новый М-файл открывается по командам главного меню File/New/M-file или комбинации клавиш Ctrl+N. Новый файл открывается в окне редактора М-

файлов. Вид строки и панели инструментов зависит от ширины окна. В каче-

стве примера в редакторе можно набрать следующую программу:

a1

= 3;

 

a2

= 2.5;

 

b1

= a1 + a2

% сложение

a3

= 2.6;

 

a4

= 1.7;

 

b2

= a3 – a4

% вычитание

Перед запуском программы ее следует сохранить по командам главного меню File/SaveAs под именем, например, Prim1.m. Для запуска на выполне-

ние всех команд, содержащихся в файле, следует выбрать пункт Run в меню

Debug, или нажать клавишу F5. Но делать предварительное сохранение как отдельную операцию не обязательно. Допустимо сразу раскрыть меню Debug,

в котором опция Run в этом случае заменяется опцией Save and Run, что

11

Основы работы в системе MATLAB

позволяет запустить программу, предварительно сохранив ее автоматически.

Таким образом, файл можно запустить сразу после редактирования (если не требуется ему присвоить новое имя) нажатием клавиши F5.

Редактор позволяет выполнять часть команд файла. Например, можно выполнить первые три команды файла Prim1.m, выделив их с помощью мыши

и выбрав опцию Evaluate Selection меню Text или нажав клавишу F9.

Аналогично можно выполнить оставшиеся три команды примера.

Комментарии в MATLAB начинаются со знака процента и автоматически выделяются зеленым цветом (по умолчанию). Для исключения части исполняе-

мого кода без его удаления или в случае длинного комментария можно исполь-

зовать блок комментариев, начинающийся со строки из двух символов %{

(знак процента и открывающейся фигурной скобки) и заканчивающийся стро-

кой из двух символов %} (закрывающейся фигурной скобки и знак процента). Существующий М-файл открывается опцией File/Open рабочей среды

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

>> edit prim1.m

Команда edit без аргумента открывает редактор и создает новый файл без имени. Если введена команда edit с именем несуществующего файла, то редактор воспринимает это как запрос на создание нового М-файла с указан-

ным именем.

В редакторе может быть одновременно открыто несколько файлов.

MATLAB позволяет менять способ отображения файлов в редакторе. По умолчанию окно editor редактора одно, и при открытии каждого нового файла оно снабжается закладкой внизу рабочей области с именем файла. Последние пять кнопок на панели инструментов позволяют выбрать способ расположения окон с файлами в рабочей области редактора. Например, ее можно разделить по го-

ризонтали или по вертикали. Инструменты Dock и UnDock (расположены в правой части строки меню) позволяют открыть каждый файл в своем окне ре-

дактора или, наоборот, встроить его в другое окно редактора.

12

Основы работы в системе MATLAB

Для изменения настроек редактора М-файлов следует выбрать в меню File редактора или рабочей среды опцию Preferences. В левой части окна настроек отображены названия компонент, часть которых представлена рас-

крывающимся списком, позволяющим перейти к требуемой группе свойств.

Для использования редактора М-файлов без запуска MATLAB расширение m в Windows должно быть ассоциировано с приложением meditor.exe.

В этом случае файл откроется в редакторе по двойному нажатию мышью по имени М-файла. Файл можно редактировать, но не выполнять.

М-файлы бывают двух типов: файл-программы (Script M-Files), содер-

жащие последовательность команд, и файл-функции (Function M-Files), в кото-

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

2.2 Файл-программы

Файл-программы не имеют входных и выходных аргументов и опериру-

ют переменными, существующими в рабочей среде, или могут создавать новые переменные. Все переменные, объявленные в файл-программе, становятся до-

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

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

Файл-программы запускаются из редактора М-файлов, из командной строки или другой файл-программы (при этом в качестве команды использует-

ся имя М-файла без расширения). MATLAB выполняет следующее:

1.Проверяет, является ли введенная команда именем какой-либо из пе-

ременных, определенных в рабочей среде. Если введена переменная,

то выводится ее значение.

2.Если введена не переменная, MATLAB ищет введенную команду сре-

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

3.Если введена не переменная и не встроенная функция, то MATLAB

13

Основы работы в системе MATLAB

отыскивает М-файл с названием команды и расширением m. Если

файл не найден в текущем каталоге, то MATLAB просматривает ката-

логи, установленные в пути поиска.

Если ни одно из вышеперечисленных действий не привело к успеху, то в

командное окно выводится сообщение об ошибке.

Узнать факт занятости имени можно по команде exist.

Текущий каталог и пути поиска можно установить при помощи команд

интерфейса рабочей среды. Содержимое текущего каталога отображается в окне Current Directory с одноименной вкладкой. Текущий каталог устанавливается выбором из раскрывающегося списка Current Directory на панели ин-

струментов рабочей среды MATLAB. Если в списке нет нужного каталога, то его можно добавить в диалоговом окне Browse for Folder, которое появляется

после нажатия на кнопку, расположенную справа от списка.

Пути поиска файлов определяются в диалоговом окне Set Patch навигатора путей (File/Set Patch). Рекомендуется хранить собственные файлы вне подкаталога toolbox основного каталога MATLAB, т.к. эти файлы могут быть уничтожены при переустановке MATLAB, а также по причине особенности ис-

пользования файлов в этом подкаталоге.

Действия по установке путей дублируются командами. Текущий каталог

устанавливается командой cd, например

 

>> cd c:\students\donchanka

или

>> cd('c:\students\donchanka').

Для добавления каталогов в пути поиска служит команда addpath, которая по умолчанию помещает каталог в начало списка поиска, например

>> addpath c:\magisters

Для добавления каталога в конец списка следует использовать параметр –end:

>> addpath c:\specialists -end

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

Для удаления каталога из списка путей поиска предназначена функция rmpath:

>> rmpath c:\bacalavrs или >> rmpath ('c:\ bacalavrs').

14

Основы работы в системе MATLAB

2.3. Файл-функции

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

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

головке функции: function f = myfun(x)

f = exp(-x) * sqrt((x^2 + 1) / (x^4 + 0.1));

В заголовке функции также размещаются имя функции и списки вход-

ных и выходных аргументов. Входные аргументы записываются в круглых скобках после имени функции (в примере – это x). Выходной аргумент указы-

вается слева от знака равенства в заголовке функции (в примере – это f).

После заголовка размещается тело файл-функции – один или несколько операторов.

Использовать файл-функцию можно так же, как и встроенные функции,

например

>> y = myfun(1.3) y =

0.2600

Каталог, в котором содержатся файл-функции, должен быть текущим,

или путь к нему должен быть добавлен в пути поиска.

Использование файл-функций упрощает визуализацию результатов мате-

матических действий. Например, требуется определить значение функции myfun на отрезке [0, 4]. Из командной строки это выглядит следующим образом

(результат выполнения показан на рис.1):

>>x = 0 : 0.5 : 4;

>>y = myfun(x);

>>plot(x, y)

15

Основы работы в системе MATLAB

3.5

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

2.5

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

1.5

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

00

0.5

1

1.5

2

2.5

3

3.5

4

 

Рис. 1 Пример использования plot

 

Но аналогичную задачу можно решить при помощи функции fplot, которой требуется указать имя файл-функции myfun или указатель на нее (с опе-

ратором @ перед именем функции) и границы отрезка для построения графика:

>> fplot('myfun', [0 4]) или >> fplot(@myfun, [0 4]).

Результат выполнения показан на рис.2.

3.5

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

2.5

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

1.5

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

00

0.5

1

1.5

2

2.5

3

3.5

4

 

Рис. 2 Пример использования fplot

 

График, построенный fplot, более точно отражает поведение функции,

т.к. алгоритм автоматически подбирает шаг аргумента, уменьшая его на участ-

ках быстрого изменения исследуемой функции.

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

Если список выходных аргументов пуст, то файл-функция не будет воз-

вращать никаких значений.

16

Основы работы в системе MATLAB

Если функция имеет несколько выходных аргументов (вектор-функция),

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

файл-функция для перевода времени, заданного в секундах, в часы, минуты и секунды:

function [hour, minute, second] = hms(sec) hour = floor(sec/3600);

minute = floor((sec – hour*3600)/60); second = sec – hour*3600 – minute*60;

При вызове файл-функции с несколькими выходными аргументами результат следует записывать в вектор соответствующий длины:

>> [H, M, S] = hms(10000) H =

2

M =

46

S =

40

Файл-функции можно сопроводить комментариями. Все комментарии после заголовка и до тела функции или пустой строки выводятся в командное окно по команде help. Например:

function [hour, minute, second] = hms(sec)

%hms – перевод секунд в часы, минуты и секунды

%[hour, minute, second] = hms(sec)

%sec – число секунд

%hour – число полных часов

%minute – число полных минут

%second – остаток секунд

hour = floor(sec/3600);

minute = floor((sec – hour*3600)/60); second = sec – hour*3600 – minute*60;

17

Основы работы в системе MATLAB

Первая строка комментариев после заголовка функции называется H1- line и используется при поиске командой lookfor. Эта команда ищет указанное слово в строках H1-line всех файл-функций в каталогах, указанных в путях по-

иска, в том числе, и в текущем каталоге.

3 РАЗНОВИДНОСТИ ФУНКЦИЙ

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

Использование подфункций и вложенных функций основано на выде-

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

ется часто:

function simple; x = 1.1;

y = 2.1;

f1 = x^3 – 2*y^3 + 3*(x^2 + y^2) – x*y + 9 x = 3.1;

y = 4.2;

f2 = x^3 – 2*y^3 + 3*(x^2 + y^2) – x*y + 9 x = -2.8;

y = 0.7;

f3 = x^3 – 2*y^3 + 3*(x^2 + y^2) – x*y + 9

Желательно определить вычисляемое выражение в подфункции f с дву-

мя входными и одним выходным аргументом и поместить ее в том же М-файле simple.m:

function simple;

% Основная функция f1 = f(1.1, 2.1)

18

Основы работы в системе MATLAB

f2 = f(3.1, 4.2)

f3 = f(-2.8, 0.7) function z = f(x, y) % Подфункция

z = x^3 – 2*y^3 + 3*(x^2 + y^2) – x*y + 9;

Первая функция simple является основной функцией в simple.m и

именно ее операторы выполняются, если пользователь вызывает simple,

например, из командной строки. Файл-функция может содержать одну или не-

сколько подфункций со своими входными и выходными параметрами, но ос-

новная функция может быть только одна. Заголовок новой подфункции одно-

временно является признаком конца предыдущей. Основная функция обмени-

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

Переменные, определенные в подфункциях и в основной функции, явля-

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

которые являются общими для всех функций М-файла, состоит в объявлении данных переменных в начале основной функции и подфункции как глобальных,

при помощи global со списком имен переменных, разделяемых пробелом: function simple2;

global ALP BET ALP = 5.3;

BET = 9.1;

f1 = f(1.1, 2.1) function z = f(x, y) global ALP BET

z = x^3 – 2*y^3 + 3*(x^2 + y^2) – x*y + 9 + ALP*BET;

Лучшим способом обмена переменными между основной функцией и подфункциями является передача их в параметрах подфункции. Значение гло-

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

19

Основы работы в системе MATLAB

ноименным глобальным переменным.

Подфункция доступна только внутри основной функции, т.е. попытка вызова подфункции f не из файл-функции simple, а из другой файл-функции,

файл-программы или из командной строки приведет к ошибке. Сообщение об этом может и не появиться, т.к. именем f может быть поименована файл-

функция, хранящаяся в файле f.m, или в рабочей среде объявлена переменная f. Узнать о том, является ли функция MATLAB встроенной, позволяет специ-

альная функция exist, возвращаемые аргументы которой следующие: 1 – имя занято под переменную рабочей среды, 2 – функция расположена в путях поис-

ка файлов, 5 – встроенная функция (built-in function). Приватные функции и подфункции не идентифицируются.

В отличие от подфункции, которая является внешней по отношению к ос-

новной функции, вложенная функция является внутренней. Поэтому пере-

менные из среды основной функции доступны и во вложенной функции:

function main; ALP = 5.3; BET = 9.1;

f1 = fnested(1.1, 2.1)

function z = fnested(x, y)

z = x^3 – 2*y^3 + 3*(x^2 + y^2) – x*y + 9 + ALP*BET;

end

end

Следует использовать оператор end для закрытия тела функции. Вло-

женная функция может размещаться в любом месте тела функции, ее содержа-

щей. Основная функция также завершается оператором end. В одном М-файле допускается использование подфункций и вложенных функций одновременно,

но последним оператором подфункции должен быть end.

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

20

Соседние файлы в папке Компьютерная графика