Use the Help browser Search tab to search the documentation, or




Лабораторная работа № 3

СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ М-ФАЙЛОВ

В СИСТЕМЕ MATLAB

 

Цель работы. Изучить создание и использование М-файлов в виде М-файлов сценариев и М-файлов функций в системе MATLAB.

 

 

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

 

Как было показано в предыдущих лабораторных работах, в командном окне системы MATLAB можно выполнять многие вычисления. Возможно, также писать достаточно сложные программы. Но с увеличением программного кода обычно возникает потребность в корректировке программы и ее отладки. Для упрощения и удобства разработки программ в MATLAB могут быть использованы так называемые М-файлы, представляющие собой обычные текстовые файлы с расширением .m. М-файлы бывают двух типов: М-сценарии и М-функции. Выбор М-файла осуществляется из главного меню File, как это показано на рис. 3.1.


Рис. 3.1. Список главного меню File

 

Пока будем использовать Script и Function.

В MATLAB имеется встроенный редактор Editor, который можно открыть через главное меню, набрав последовательно File–New–Script (в старых версиях MATLAB – File–New–M-File) или из командного окна с помощью команды edit. Например, после обращения к команде edit появится окно, показанное на рис. 3.2.


Рис. 3.2. Пример вызова встроенного редактора для создания М-сценария

 

По умолчанию имя М-файла сценария будет соответствовать Untitled.m (потом Untitled2.m, Untitled3.m и так далее).

М-файлы в виде М-сценариев содержат последовательность команд программного кода, которые в большинстве случаев могут также быть набраны и в командном окне MATLAB.

М-файлы функции (М-функции) представляют собой функции, действие которых похоже на функции языков программирования С/С++ и пр. Они позволяют задавать значения ввода, когда запускаются М-функции из командного окна или из другого М-файла. При этом М-функции могут возвращать значение (и даже несколько значений, в том числе массивов), а могут не возвращать и не принимать никаких данных (аргументов или параметров). Редактор создаваемой М-функции можно открыть через главное меню, набрав последовательно File–New–Function.

В случае работы с М-функциями следует иметь в виду, что область видимости переменных, создаваемых в теле функции, ограничивается только телом самой функции. Переменные, создаваемые в М-функции, являются локальными. Они недоступны из командного окна системы MATLAB и не видимы в других М-файлах. Возможно объявление глобальных переменных с помощью служебного слова global, например, global A B

Пример вызова редактора М-функции показано на рис. 3.3.

 


Рис. 3.3. Пример вызова редактора М-функции

 

По умолчанию имя М-функции Untitled. Можно задать свое пользовательское имя, но при этом имя функции должно совпадать с именем М-файла. Например, на рис. 3.4 приведен редактор кода М-функции с именем aza. Эта функция осуществляет сложение трех чисел и возвращает результат сложения. На рис. 3.4 приведен код М-файла aza.m.


Рис. 3.4. Код М-функции сложения трех чисел

 

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

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


Рис. 3.5. Код М-функции сложения и перемножения трех чисел

 

Пример обращения к созданной М-функции

>> [q,w] = baza(1,3,5) q = w =

 

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

>> help baza Формальные аргументы (параметры) функции: % a - первый аргумент (параметр) % b - второй аргумент (параметр) % c - третий аргумент (параметр) % Формальные возвращаемые значения % s - сумма трех чисел % p - произведение трех чисел

 

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

 

При определении имени М-файла (М-сценария или М-функции) следует иметь в виду, что цифровые имена не должны использоваться, не должны использоваться имена встроенных функций системы MATLAB. Поэтому можно рекомендовать при назначении имени М-файла проверить предварительно его отсутствия в пространстве имен встроенных функций и команд системы MATLAB. Для этого достаточно в командной строке обратиться к справке, т. е. help fun, где fun – задаваемое пользователем имя М-файла. В случае отсутствия подобного имени должно появиться следующее сообщение:

Fun not found.

Use the Help browser Search tab to search the documentation, or

type "help help" for help command options, such as help for methods.

 

Допустимые имена М-файлов во многом соответствуют допустимым именам переменным. Поэтому для проверки допустимого имени можно использовать функцию isvarname. Например, пусть определены два имени: 9aza и aza9. Обратившись в командном окне к этим именам через функцию isvarname, получим следующие результаты:

>> isvarname('9aza')

ans =

>> isvarname('aza9')

ans =

Результат 0 означает, что такое имя недопустимо. Соответственно, результат 1 означает, что М-файл или переменную с таким именем допустимо использовать. Обычно не нулевое значение считается как истина, а ноль – ложь.

В системе Windows традиционно запрещено использовать следующие символы: \ /: * " < > |

Как отмечалось, содержимое (текст) М-сценария может быть создано в любом текстовом редакторе и сохранен с расширением .m. Затем он может быть размещен в текущей директории MATLAB.

Вызов созданного М-сценария осуществляется набором его имени без расширения. Это можно сделать в командной строке или в каком-то другом М-файле.

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

Чтобы увидеть в командном окне содержание (листинг) какого-либо М-файла, то следует применить команду type. Например, если создан М-файл с именем myfile, то его можно просмотреть, набрав в командной строке (или в другом М-файле) следующее:

Type myfile

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

>> type acoth

function y = acoth(z)

%ACOTH Inverse hyperbolic cotangent.

%ACOTH(X) is the inverse hyperbolic cotangent of the elements of X.

%

% Class support for input X:

% float: double, single

%

% See also COTH.

% Copyright 1984-2004 The MathWorks, Inc.

% $Revision: 5.7.4.3 $ $Date: 2004/06/25 18:51:40 $

y = atanh(1./z);

 

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

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

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

Если в М-файл поместить определения сразу нескольких функций, то вызывать из командного окна (или из другого М-файла) системы MATLAB возможно будет только ту из них, имя которой совпадает с именем М-файла (внешней М-функции). Каждая М-функция может содержать вторичные М-функции или подфункции, которые могут быть использованы в пределах данного М-файла, но не будут доступны напрямую из командной строки. Здесь имеется аналогия с нисходящим программированием. Часто применяется (главная) М-функция без входных аргументов и возвращаемых значений. Из этой главной М-функции можно будет обращаться к другим М-функциям, которые определены в этом же М-файле.

Подфункции можно использовать только в М-функции, но не в М-сценарии.

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

 

ПРАКТИЧЕСКАЯ ЧАСТЬ

 

Пример 1. Считая, что случайный процесс является простейшим Пуассоновским потоком, рассчитать вероятности нахождения в потоке 2, 3, 4 требований на отрезке времени длиной t = 12. В качестве интенсивности потока принять число 1.23. Для решения создать М-сценарий с именем test1.m.

 

Программный код решения примера

% М-сценарий с именем test1 % М-файл сохранен как test1.m clear all, clc %% очистка памяти и командного окна L = 1.23; %% интенсивность потока t = 2.34; %% время, для расчета вероятности p0 = (L*t)^0/factorial(0) * exp(-L * t) p1 = (L*t)^1/factorial(1) * exp(-L * t) p2 = (L*t)^2/factorial(2) * exp(-L * t) p3 = (L*t)^3/factorial(3) * exp(-L * t) p4 = (L*t)^4/factorial(4) * exp(-L * t) p5 = (L*t)^5/factorial(5) * exp(-L * t)

 

Результат выполнения программы:

P0 =

0.0562

P1 =

0.1619

P2 =

0.2329

P3 =

0.2235

P4 =

0.1608

P5 =

0.0926

 

В программе использована функция нахождения факториала числа – factorial.

Если в командном окне набрать help test1, то получим справку о данном М-файле, если в нем имеются комментарии:

>> help test1



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-10-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: