Двойственность операторов, команд и функций.

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

Для языка системы MATLAB различие между командами (выполняемыми в командном окне при вводе с клавиатуры) и программными операторами (выполняемыми из программы) является в известной мере условным. В самом деле, и команды, и программные операторы могут выполняться как из программы, так и в режиме прямых вычислений. Под командами в специализированной литературе [7,69-71,109,132,177] зачастую понимают средства, управляющие периферийным оборудованием, а под операторами – средства, выполняющие операции с операндами (данными).

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

Важное значение имеет двойственность операторов и функций – многие операторы имеют свои аналоги в виде функций. Так, например, оператор «+» имеет свой аналог в виде функции sum. Команды вида

Command argument

нередко имеют форму записи в виде функции

Command(‘argument’)

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

Некоторые ограничения.

В силу того, что язык программирования системы MATLAB ориентирован на структурное программирование, в нем отсутствуют номера строк (характерные, например, для языка программирования FORTRAN) и программных операторов безусловного перехода (типа GO TO или GOTO в FORTRAN). Вместе с тем, имеются управляющие конструкции следующих типов: условные выражения if…else…elseif…end, циклы for …end, и while…end, по форме похожие на ту, которые используются в языке Pascal (т.е. область действия управляющих структур начинается их заголовком, но без слова begin, а заканчивается словом end). С точки зрения теории структурного программирования перечисленных средств достаточно для решения практически любых задач. В системе MATLAB также имеются операторы-переключатели типа case (аналоги имеются, например, в языке программирования FORTRAN), облегчающие создание программных конструкций со множественным ветвлением. С другой стороны в MATLAB исключены все средства, возможности которых можно реализовать уже имеющимися средствами, при этом существенным образом увеличен набор средств для программирования решений математических задач, сводящихся, прежде всего, к матричным вычислениям и сопряженных с реализацией современных численных методов.

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

Создание и использование M-файлов

Понятие об M-файлах.

Более эффективным способом выполнения команд в системе MATLAB является применение M-файлов.

M-файлом называется текстовый файл с расширением .m, содержащий набор инструкций на языке системы MATLAB (т.е. в M-файлах хранятся программные коды). Для решения различных математических задач MATLAB предоставляет весьма мощный и удобный язык программирования высокого уровня, интуитивно понятный даже для пользователей, не являющихся профессиональными программистами. Вместе с тем цель последующего изложения, разумеется, не начать осваивать с нуля новый и неизвестный язык программирования MATLAB, ведь на протяжении всей второй главы, при изучении различных команд и функций MATLAB и их выполнении в «режиме калькулятора», по сути, рассматривались особенности данного языка. Несмотря на то, что работу в командной строке нельзя назвать программированием, тем не менее, все команды, операторы и функции, описанные ранее, составляют типичный инструментарий языка программирования системы MATLAB.

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

M-файлы должны иметь уникальные имена. Длина имен при этом не ограничивается, но лишь первый 31 символ учитывается при идентификации имени. При исполнении программного объекта его имя сравнивается со списком имен, хранящихся в рабочей области и в директориях M-файлов. Если имя файла оказывается неуникальным, соответствующий программный объект не исполняется и выдается сообщение об ошибке, а если уникальным, то программный объект исполняется в интерпретирующем режиме.

Типы M-файлов.

В системе MATLAB существуют два типа M-файлов: файл-программы (Script M-Files, скрипты или сценарии) и файл-функции (Function M-Files).

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

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

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

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

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

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

Создание файл-программ.

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

Ввод операторов. В главном меню следует выбрать пункт New, и далее в ниспадающем меню указать Script (для файл-программы, как в рассматриваемом примере) или Function (для файл-функции), в результате чего откроется окно редактора M-файлов (рис. 2.29.1).

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

x=-2:0.05:2;

[X,Y]=meshgrid(x);

Z=sqrt(X.^2+Y.^2);

surf(X,Y,Z)

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

При создании M-файлов каждый оператор для удобства визуального восприятия целесообразно записывать в отдельной строке. Для перехода к следующей строке необходимо нажать клавишу Enter. Длинное выражение можно разместить в нескольких строк, причем для разделения выражения на несколько строк применяется символ многоточия (…). Если в конце какой-либо строки, содержащей длинное выражение поставить многоточие и нажать Enter, то ввод выражения можно будет продолжить с новой строки.

При необходимости отдельные части программы можно дополнять комментариями, помогающими впоследствии вспомнить назначение той или иной команды и/или программы в целом. Комментарием считается строка программы, которая начинается со знака процента (%), расположенного в первой позиции строки. Комментарии можно вводить либо в отдель-

Рис. 2.29.1. Окно редактора M-файлов системы MATLAB.

ную строку (или несколько строк), либо добавлять после операторов. Строки с комментариями при выполнении программы игнорируются. Так, например, рассматриваемую программу можно снабдить комментариями:

% Создание массивов координат точек трехмерной поверхности

x=-2:0.05:2;

[X,Y]=meshgrid(x);

Z=sqrt(X.^2+Y.^2);

% Визуализация трехмерной поверхности

surf(X,Y,Z)

Следует обратить внимание на возможность (нерекомендуемую) задания комментария на русском языке (предпочтительнее использовать английский язык или транслит).

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

help имя_M-файла

Создание файл-программ. Завершив ввод файл-программы, ее следует сохранить, например, в текущем каталоге MATLAB. Для этого в главном меню следует выбрать пункт Save и далее в ниспадающем окне указать Save As. В результате в появившемся диалоговом окне Select File for Save As раскроется каталог MATLAB папки Документы, который по умолчанию определен в качестве текущего рабочего каталога. В поле Имя файла следует ввести имя файл-программы (например, sample) вместо появившегося по умолчанию Untitled. В поле Тип файла автоматически отобразиться требуемый тип файлов – MATLAB Code files (*.m), его изменять не следует (рис. 2.29.2).

Рис. 2.29.2. Диалоговое окно Select File for Save As.

Таким образом, создаваемый файл может иметь произвольное имя, но фиксированное расширение, состоящее из одной буквы m. Любой текстовый файл, содержащий произвольный код на M-языке и имеющий оговоренное выше расширение принято называть M-файлом. Заметим, что созданный M-файл, разумеется, можно сохранить не только в текущем, но и в любом другом каталоге (это касается как файл-программ, так и файл-функций), однако в таком случае необходимо будет установить пути поиска, ведущие к этому файлу. Для этого следует в главном меню следует выбрать пункт Set Path, с помощью которого вызывается диалоговое окно с тем же именем (рис. 2.29.3). В этом окне отображается список всех зарегистрированных в системе MATLAB путей доступа. Для добавления нового каталога в список путей доступа служит кнопка Add Folder… этого окна, которая, в свою очередь, порождает целый ряд дополнительных диалоговых окон, работа с которыми достаточно очевидна. После того, как в список путей доступа добавлен новый каталог, в нем можно сохранить файл с созданной в редакторе файл-программой.

Выполнение файл-программ. Выполнить созданную файл-программу можно выбрав в главном меню пункт Run и далее в ниспадающем окне указать Run: Sample. В результате выполнения файл-программы на экране отобразится окно с графиком заданной поверхности (рис. 2.29.4).

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

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

Рис. 2.29.3. Диалоговое окно Set Path.

Рис. 2.29.4. График поверхности.

нужно выделить, например, с помощью мыши, требуемый блок команд и нажать на пункт Run Section главного меню.

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

MATLAB, либо введя в командное окно команду whos.

Редактирование файл-программ. Для изменения созданного M-файла, (например в целях модифицирования поверхности, создание которой рассматривалось выше, либо для задания иных интервалов ее построения), требуется внести соответствующие изменения в текст программы и вновь запустить файл-программу. Сохранить изменения текущего файла можно, выбрав пункт Save и далее в ниспадающем окне указать Save.

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

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

Файл-функции, как и файл-программы, состоят из набора команд на языке MATLAB и сохраняются в текстовых файлах с расширением .m, однако имеют несколько иной синтаксис. Файл-функция должна состоять из следующих частей: заголовок функции (включает объявление function, имя функции, а также список входных и выходных параметров), определяющий «интерфейс» функции (способ взаимодействия с ней) и тело функции (состоит из инструкций на языке MATLAB, позволяющих вычислить значение функции).

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

Выберем в главном меню пункт New и далее в ниспадающем меню укажем Function, в результате чего откроется окно редактора M-файлов. В последнем необходимо набрать следующие строки кода (рис. 2.29.5):

function f=sample2(x)

% Вычисление значения функции

% f(x)=x^3*(7*sin(x)^2+5*cos(x)^2)

f(x)=x.^3.*(7*sin(x).^2+5*cos(x).^2);

Первая строка в рассматриваемом примере представляет собой заголовок функции, включающий в себя имя функции (в данном случае sample2), один входной (x) и один выходной (f) параметры. Далее следуют две строки с комментарием, который при вычислении функции игнорируется (это необязательная часть файл-функции). Заметим, что комментарий, введенный после заголовка функции, программа интерпретирует как описание функции которое отобразится в командном окне, если ввести команду

Рис. 2.29.5. Текст файл-функции в окне редактора M-файлов.

help имя_файл-функции

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

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

lookfor текст -all

Наконец, в результате применения команды

type имя_функции

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

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

Заголовок файл-функции и тело файл-функции в совокупности в совокупности составляют определение функции.

Сохранение файл-функции. После введения текста файл-функции, ее следует сохранить в текущем рабочем каталоге. Для этого в главном меню следует выбрать пункт Save и далее в ниспадающем окне указать Save As. В результате в появившемся диалоговом окне Select File for Save As раскроется каталог MATLAB папки Документы, который по умолчанию определен в качестве текущего рабочего каталога. В общем случае размещать M-файл с определением файл-функции, необходимо в одном из каталогов диска, входящих в список доступа системы MATLAB. Данный вопрос уже обсуждался ранее при изучении файл-программ.

В полях Имя файла и Тип файла этого диалогового окна автоматически появятся требуемые имя и тип файл-функции. Содержимое указанных полей менять не требуется. В рассматриваемом случае в поле Имя файла будет предложено имя sample2. Вообще, указанное в заголовке имя файл-функции должно совпадать с именем файла (без учета расширения .m), в который записывается текст файл-функции. Несогласованность имени функции и имени файла не допускается.

Выполнение файл-функций. Созданную файл-функцию можно использовать как в командном режиме (аналогично любой встроенной функции системы MATLAB), так и вызывать из других файл-программ или файл-функций. При вызове файл-функции следует указать все ее входные и выходные параметры. В частности, в рассматриваемом примере обязательным является задание единственного входного параметра x. Вычислим, например, значение функции sample2 при x=4, а результат присвоим произвольной переменной y. Будем иметь:

y=sample2(4)

y =

393.3120

При вызове файл-функции MATLAB проверяет, относится ли ее имя к какой-либо переменной, встроенной функции, либо к M-файлу в текущем рабочем каталоге или в каталоге, установленном в пути поиска. Если объект с таким именем есть, будет выполнен именно он. В этой связи, во избежание путаницы, файл-функциям, как и файл-программам следует присваивать уникальные имена.

При создании файл-функции sample2 были определены две переменные: входная переменная x и выходная переменная f. Для того, чтобы убедиться в том, что эти переменные являются локальными и не появляются в рабочем пространстве после вызова файл-функции, можно обратиться к ним после выполнения данной файл-функции и получить сообщения об ошибках:

x

Undefined function or variable ‘x’.

f

Undefined function or variable ‘f’.

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

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

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

function f=sample3(x,c1,c2)

% Вычисление значения функции

% f(x)=x^3*(c1*sin(x)^2+c2*cos(x)^2)

% при различных значениях коэффициентов c1, c2

f=x.^3.*(c1*sin(x).^2+c2*cos(x).^2);

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

y=sample3(5,5,7)

y =

645.1161

В общем случае, если функция имеет несколько выходных параметров (т.е. возвращает несколько значений), их указывают в квадратных скобках через запятую после объявления function. Структура функции при этом будет иметь следующий вид:

function [Ret1,Ret2,…]=имя_функции(par1,par2,…)

% Комментарий

Ret1=выражение

Ret2=выражение

end

где имя_функции – имя объявляемой (с помощью ключевого слова function) функции, которая принимает входные значения par1, par2 и т.д. (формальные параметры) и вырабатывает выходные (возвращаемые) значения Ret1, Ret2 и т.д. Многоточия здесь не являются элементами синтаксической конструкции, они применяются лишь для того, чтобы наглядно подчеркнуть тот факт, что функции могут иметь разное входных параметров и выходных значений, например:

function FuncName1

function FuncName2(par1,par2,par3,par4)

function Ret1=FuncName3(par1,par2)

function [Ret1,Ret2,Ret3]=FuncName4(par1)

В первой строке последнего примера представлен заголовок файл-функции FuncName1, не имеющей ни входных, ни выходных параметров. Файл-ункция FuncName2 принимает четыре входных параметра и также не имеет выходных параметров (возвращаемых значений). Далее файл-функция FuncName3 принимает два значения, а возвращает один выходной параметр. Наконец, функция FuncName4 имеет один входной параметр и три выходных значения. Зачастую входные параметры для краткости называют аргументами функции, а возвращаемые (выходные) значения функции называют просто ее значениями.

Вызвать объявленную функцию можно следующим образом:

[Retf1,Retf2,…]=имя_функции(parf1,parf2,…)

где parf1, parf2, … – список входных параметров (фактические параметры); Retf1, Retf2,… – выходные (возвращаемые) значения.

Таким образом, синтаксис вызова файл-функции в системе MATLAB аналогичен вызову функции или подпрограммы в большинстве языков программирования: в командной строке вводится имя функции, после которого в круглых скобках через запятую перечисляются фактические входные параметры, со значениями которых и будут производиться вычисления. Фактические параметры могут быть заданы числовыми (и другими) значениями, именами переменных (уже имеющих конкретные значения), а также выражениями. Отметим, что если фактический параметр задан именем некоторой переменной, то реальные вычисления будут осуществляться с копией этой переменной (а не с ней самой). Это называется передачей параметров по значению.

Рассмотрим в качестве примера функцию sample4, которая вычисляет среднее значение элементов заданного вектора и стандартное отклонение элементов вектора от среднего (соответствующий пример приведен, в частности, в документации к системе MATLAB):

function [mean,stdev]=stat(x)

n=length(x);

mean=sum(x)/n;

stdev=sqrt(sum((x-mean).^2/n));

После сохранения текста приведенной выше файл-функции в файле stat.m ее можно вызвать, задав, например, в качестве входного параметра некоторый вектор k:

k=[1 5 3 7 4 2 6];

[m,s]=stat(k)

m =

s =

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

a=stat(k)+7

a =

Следует обратить внимание на то, что имена фактических входных параметров (в данном случае k) и переменных, в которые записываются результаты вычислений (в данном случае m и s) не совпадают с именами аналогичных переменных в определении функции stat (в данном случае это x и mean, stdev). Для того, чтобы подчеркнуть это возможное отличие, имена входных параметров и выходных значений в определении функции называют формальными (по аналогии с формальными параметрами подпрограмм в языке программирования FORTRAN).

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

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

Приведенную выше функцию stat можно переписать в виде функции, содержащей подфункцию:

function [mean,stdev]=stat_main(x)

% Основная функция

n=length(x);

mean=average(x,n);

stdev=sqrt(sum((x-average(x,n)).^2/n));

function mean=average(x,n)

% Подфункция

mean=sum(x)/n;

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

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

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

10 СКРЫТЫХ ФУНКЦИЙ АНДРОИД, О КОТОРЫХ НУЖНО ЗНАТЬ