Вы можете снабдить пользователя информацией (помощью) о вашей программе, путем включения раздела текста помощи в начало М-файла. Этот раздел начинается со строки, сле-дующей непосредственно за строкой опеределения функции и заканчивается на первой пус-той строке, или строке тела функции. Каждая строка текста (эти строки окрашены в зеленый цвет) помощи должна начинаться символом процента (%). MATLAB выводит в командное окно данный текст каждый раз когда вы вводите
help Имя_Функции
Вы можете также написать текст помощи для всей директории, путем создания файла со специальным именем Contents. m, который находится в вашей директории. Этот файл долже содержать только строки комментариев, то есть каждая строка должна начинаться со знака процента. MATLAB выводит на дисплей строки файла Contents. m всякий раз, когда вы вводите в командное окно строку
help Имя_Директории
Если данная директория не содержит файл Contents. m, то при вводе help Имя_Директории в командное окно выводится первая строка помощи (H1 line) для каждого файла директории.
Создание М-файлов: Использование текстовых редакторов
М-файлы представляют собой обычные текстовые файлы, которые вы создаете с использо-ванием текстового редактора. MATLAB содержит встроенный редактор, хотя в принципе мо-жно воспользоваться любым другим текстовым редактором.
Внимание! Для вызова редактора нужно в меню File выбрать New и затем M- File.
Другой способ вызова редактира М-файла из командной строки состоит в использовании фу-нкции edit. For example, при вводе
Edit foo
MATLAB открывает встроенный текстовой редактор на файле foo. m. Если не указать имени файла, то будет вызван редактор с новым, неозаглавленным файлом. Вы можете создать фун-кцию fact, приведенную выше, путем открытия вашего текстового редактора, ввода показан-ных строк, и запоминанием текста в файле под названием fact. m в вашей текущей директо-рии.
После того как вы создали этот файл, его можно найти в списке файлов вашей текущей директории, для чего надо ввести команду
What
Можно также распечатать в командном окне файл командой
Type fact
Наконец, вы можете вычислить факториал любого целого числа, например, 5-и
fact(5)
ans =
120
Внимание! Сохраняйте все созданные или измененные вами М-файлы в директории (ката-логе), который не находится в дереве каталогов MATLAB-а. Если вы сохраните ваши М-файлы в дереве каталогов MATLAB-а, они могут быть уничтожены при установке новой версии MATLAB-а.
Сценарии
Сценарии являются простейшим типом М-файлов, поскольку они не имеют входных или выходных аргументов. Они полезны для автоматизации последовательности команд, таких как обычные вычисления, которые приходится часто выполнять в командном окне. Сценарии работают над существующими данными в рабочем пространстве; вы также можете создавать новые данные при помощи сценариев. Все переменные, созданные в результате выполнения сценариев, остаются в главном рабочем простанстве MATLAB-а, так что вы можете исполь-зовать их для дальнейших вычислений.
Простой пример сценария
Приведенные ниже выражения вычисляют функцию rho для нескольких тригонометричес-ких функций угла theta, и строят серию графиков в полярной системе координат
% An M–file script to produce % Линия комментариев
% "flower petal" plots
theta = – pi:0.01: pi; % Вычисления
rho(1,:) = 2*sin(5*theta).^2;
rho(2,:) = cos(10*theta).^3;
rho(3,:) = sin(theta).^2;
rho(4,:) = 5*cos(3.5*theta).^3;
for i = 1:4
polar( theta, rho( i,:)) % Вывод на графики
pause
end
Попробуйте ввести эти команды в М-файл, названный petals. m. Этот файл является теперь сценарием MATLAB-а. Ввод команды petals (лепестки) в командной строке MATLAB –а приводит к выполнению команд сценария. Команда pause приостанавливает выполнение цикла до нажатия какой-либо клавиши (например, Return). Таким образом, после того как сценарий отображает один график из четырех, нажатие клавиши Return приводит к появле-нию следующего. Здесь мы не имеем входных или выходных переменных; сценарий petals создает требуемые ему переменные в основном рабочем пространстве MATLAB-а. Когда вы-полнение сценария завершено, все созданные переменные (i, theta, и rho) остаются в рабо-чем пространстве. Вы можете убедиться в этом, вводя команду whos в командной строке.
Функции
Функции представляют собой М-файлы, которые принимают входные аргументы и выдают выходные. Они работают над переменными в своем собственном рабочем пространстве, ко-торое не совпадает с основным рабочим пространством, доступном из командной строки MATLAB-а.
Простой пример функции
Функция average является простым М-файлом, который вычисляет среднее значение элемен-тов вектора.
function y = average(x)
% AVERAGE Mean of vector elements.
% AVERAGE(X), where X is a vector, is the mean of vector elements.
% Non-vector input results in an error.
[m,n] = size(x);
if (~((m == 1) | (n == 1)) | (m == 1 & n == 1))
error('Input must be a vector')
end
y = sum( x) / length( x) ; % Фактические вычисления
При вводе не векторной величины, данная функция выдает сообщение об ошибке (более точ-но, на дисплей выводится фраза «Вход должен быть вектором»). Вы можете ввести эти ко-манды в М-файл, названный average. m. Функция average допускает единственный вход и возвращает единственный выходной аргумент. Для обращения к данной функции, введите
z = 1:99;
average(z)
что даст следующий результат
ans =
50
Основные части синтаксиса М-функций
Функции в общем случае состоят из следующий частей:
· Строка определения функции (The Function Definition Line)
· Строка помощи H1 (The H1 Line)
· Текст помощи (Help Text)
· Тело функции (The Function Body)
· Комментарии (Comments)
Строка определения функции
Строка определения функции информирует систему MATLAB , что М-файл содержит функ-цию, и задает последовательность входных и выходных переменных. Для функции average эта строк имеет следующий вид:
где input argument – входной аргумент;
function name – имя функции;
output argument – выходной аргумент;
keyword – зарезервированное слово;
Все функции MATLAB-а имеют линию определения функции, соответствующую данной схеме. Если функции имеют несколько выходных переменных, нужно заключить список этих переменных в квадратные скобки. Входные переменные, даже если их несколько, всегда заключаются в обычные скобки. Вот пример более сложной функции
function [x,y,z] = sphere(theta, phi, rho)
Если функция не имеет выходных переменных, оставьте выход пустым, например,
Function printresults(x)
или используйте пустые квадратные скобки
function [ ] = printresults(x)
Переменные, которые вы передаете функции не обязательно должны иметь то же имя, что и в линии определения функции.
Строка помощи H1
Строка H1, названная так потому что она является первой строкой текста помощи (Help text), является линией комментария, которая следует непосредственно за строкой определения фу-нкции. Поскольку она состоит из текста комментария, строка H1начинается с символа про-цента (%). Для функции average эта строка имеет вид
% AVERAGE Mean of vector elements.
(СРЕДНЕЕ ЗНАЧЕНИЕ Вычисление среднего значения векторов)
Эта строка является первой строкой текста, который появляется при вводе пользователем в командной строке команды
help function_name
(help имя _функции )
Далее, функция lookfor производит поиск и выводит в командное окно тольку строку H1. Так как данная строка обеспечивает важную обобщающую информацию о М-файле, очень важно сделать ее по возможности более описательной.
Текст помощи
Вы можете создать возможность оперативной помощи (справки) для вашей М-функции , пу-тем ввода одной или большего числа строк комментария, начинающихся непосредственно за строкой H1. Текст помощи для функции average имеет вид
% AVERAGE(X), where X is a vector, is the mean of vector elements.
% Nonvector input results in an error.
(% СРЕДНЕЕ(Х), где Х является вектором, вычисляет среднее значение
%элементов вектора. Не векторный вход приводит к ошибке).
Когда вы вводите help function_ name, MATLAB выводит линии комментариев, которые на-ходятся между строкой определения функции и первой строкой не комментариев (выполня-емой или пустой строкой). MATLAB игнорирует любые линии комментариев, которые появ-ляются за данным блоком текста помощи. Например, напечатав help sin получим
SIN Sine.
SIN(X) is the sine of the elements of X.
( SIN( X) является синусом элементов массива Х)
Тело функции
Тело функции содержит все коды системы MATLAB, которые осуществляют вычисления и определяют значения выходных переменных. Выражения в теле функции состоят из обраще-ний к другим функциям, программных конструкций типа команд циклов, ввода и вывода, вычислений, операторов присваивания, комментариев и пустых строк. Например, тело функ-
ции average содержит нескольких простых программных выражений:
[m,n] = size(x);
if (~((m == 1) | (n == 1)) | (m == 1 & n == 1)) % Flow control
error('Input must be a vector') % Error message display
end
y = sum(x)/length(x); % Computation and assignment
Комментарии
Как было указано ранее, строки комментариев начинаются с символа процента (%). Строки комментариев могут быть в любом месте М-файла, а также вы можете добавить коммента-рии к концу строки кодов программы. Например,
% Add up all the vector elements.
y = sum(x) % Use the sum function.
( % Суммирование всех элементов вектора.
y = sum( x) % Используйте функцию sum)
Первая строка комментариев, следующая непосредственно за строкой определения функции рассматривается как строка H1 данной функции. Строка H1 и любые строки комментариев, непосредственно следующие за Н1, составляют запись оперативной помощи для данного файла. В дополнение к строкам комментариев, вы можете вводить пустые строки в любом месте М-файла. Пустые строки игнорируются. С другой стороны, пустая строка может обозначать конец текста помощи.
Имена функций
Имена функций в MATLAB-е имеют те же ограничения, что и имена переменных. MATLAB использует первые 32 символа имени. Имена функций должны начинаться с буквы; осталь-ные знаки могут быть любой комбинацией букв, цифр и символов подчеркивания. Некото-рые операционные системы могут вводить свои ограничения на длину имен функций.
Название текстового файла, который содержит функцию MATLAB-а, состоит из имени фун-кции с добавленны расширением . m . Например, average. m. Если имя файла и имя функции в ее строке определения отличаются, то внутреннее имя игнорируется.
Однако, несмотря на то что имя функции, заданное в ее строке определения, не обязательно должно совпадать с именем файла, настаятельно рекомендуется чтобы вы использовали одно и то же имя для файла и функции.
Как работает функция
Вы можете вызвать М-функцию как из командной строки MATLAB-а, так и из другого М-файла. Убедитесь, что вы включили все необходимые аргументы, заключив входные аргу-менты в обычные скобки, а выходные – в квадратные.
Определение имени функции
Когда MATLAB сталкивается с новым именем, он осуществляет следующую последователь-ность шагов:
1. Проверяет, не является ли имя переменной.
2. Проверяет, не является ли имя подпрограммой (subfunction), то есть функцией MATLAB–а, которая находится в пределах того же М-файла, что и вызываемая функ-ция.
3. Проверяет, не является ли имя частной функцией (private function), то есть функцией, которая находится в специальной директории под названием Private (private directo- ry) , то есть директории доступной только для М-файлов в пределах той же директо-рии где она сама находится.
4. Проверяет, находится ли данная на пути доступа MATLAB-а. MATLAB обращается к первому встреченному файлу с заданным именем. Если вы дублируете имена функ-ций, MATLAB обращается к первой встреченной на основe приведенной выше проце-дуры.
Что происходит при вызове функцию
Когда вы вызываете М-файл из командной строки или же из пределов другой М-функции, MATLAB осуществляет синтаксический анализ функции и преобразует ее в псевдокод, ко-торый запоминается в памяти. Это исключает необходимость повторного анализа функции при каждом последующем ее вызове в пределах данного сеанса работы. Псевдокод сохраня-ется в памяти до тех пор пока вы не удалите его с помощью команды clear, или пока вы не выйдете из MATLAB-а.
В приведенной ниже таблице даны основные варианты применения комнды clear для удаления любых функций из рабочего пространства MATLAB-а.
Синтаксис | Описание |
clear function_name | Удаляет заданную функцию из рабочего пространства |
clear functions | Удаляет все скомпилированные М-функции |
clear all | Удаляет все переменные и функции |
Создание P-кодов файлов
Вы можете запомнить предварительно скомпилированные функции или сценарии, называе-мые псевдокодами (P-code) файлов, для использования их в последующих сеансах работы. Например, команда
Pcode average
компилирует функцию average. m и запоминает полученный псевдокод в файле называемом average. p. Это позволяет MATLAB-и исключить операцию компилирования при первом вы-зове функции в каждом сеансе работы. В принципе, MATLAB осуществляет компиляцию ве-сьма быстро, так что запоминание функции в виде псевдокода редко дает большой выигрыш в быстродействии. Единственная ситуация где псевдокод действительно дает ощутимый вы-игрыш во времени, связана с применением сложных Графических Интерфейсов Пользова-теля ( GUI) в различных приложениях. В этом случае множество М-файлов должны быть скомпилировано прежде чем GUI станет видимым. Другая ситуация, где использование псе-вдокода является оправданным, имеет место при необходимости сохранить права собствен-ности, то есть когда вы хотите исключить возможность применения вашего алгоритма другими лицами.
Дата: 2019-05-28, просмотров: 227.