Обеспечение помощи для вашей программы
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Вы можете снабдить пользователя информацией (помощью) о вашей программе, путем включения раздела текста помощи в начало М-файла. Этот раздел начинается со строки, сле-дующей непосредственно за строкой опеределения функции и заканчивается на первой пус-той строке, или строке тела функции. Каждая строка текста (эти строки окрашены в зеленый цвет) помощи должна начинаться символом процента (%). 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, просмотров: 194.