Документация
Создание функций в файлах
И скрипты и функции позволяют вам повторно использовать последовательности команд путем хранения их в программных файлах. Скрипты являются самым простым типом программы, поскольку они хранят команды точно так же, как вы ввели бы их в командной строке. Функции обеспечивают больше гибкости, в основном, потому что можно передать входные значения и возвратить выходные значения. Например, эта функция с именем fact вычисляет факториал номера ( n ) и возвращает результат ( f ).
Этот тип функции должен быть задан в файле, не в командной строке. Часто, вы храните функцию в ее собственном файле. В этом случае лучшая практика состоит в том, чтобы использовать то же имя в функции и файле (в этом примере, fact.m ), поскольку MATLAB ® сопоставляет программу с именем файла. Сохраните файл или в текущей папке или в папке на пути поиска файлов MATLAB.
Можно вызвать функцию из командной строки, с помощью тех же синтаксических правил, которые применяются к функциям, установленным с MATLAB. Для примера вычислите факториал 5.
Начиная в R2016b, другая опция для хранения функций должна включать их в конце файла скрипта. Например, создайте файл с именем mystats.m с несколькими командами и двумя функциями, fact и perm . Скрипт вычисляет сочетание (3,2).
Вызовите скрипт из командной строки.
Синтаксис для функционального определения
Первая линия каждой функции является оператором определения, который включает следующие элементы.
function ключевое слово (требуется)
Используйте символы нижнего регистра в ключевом слове.
(Дополнительные) выходные аргументы
Если ваша функция возвращает один выходной параметр, можно задать выходное имя после function ключевое слово.
Если ваша функция возвращает больше, чем один выходной параметр, заключите выходные имена в квадратные скобки.
Если нет никакого выхода, можно не использовать его.
Или можно использовать скобки пустого квадрата.
Допустимые имена функций следуют тем же правилам как имена переменных. Они должны начаться с буквы и могут содержать буквы, цифры или символы нижнего подчеркивания.
Примечание
Чтобы избежать беспорядка, используйте то же имя и в файле функции и в первой функции в файле. MATLAB сопоставляет вашу программу с именем файла , не имя функции. Файлы скрипта не могут иметь того же имени как функция в файле.
(Дополнительные) входные параметры
Если ваша функция принимает какие-либо входные параметры, заключите их имена в круглые скобки после имени функции. Разделите входные параметры запятыми.
Если нет никаких входных параметров, можно не использовать круглые скобки.
Совет
Когда вы задаете функцию с несколькими аргументами ввода или вывода, перечисляете любые обязательные аргументы сначала. Это упорядоченное расположение позволяет вам вызывать свою функцию, не задавая дополнительные аргументы.
Содержимое функций и файлов
Тело функции может включать допустимые выражения MATLAB, операторы управления, комментарии, пустые строки и вложенные функции. Любые переменные, которые вы создаете в функции, хранятся в рабочей области, характерной для этой функции, которая является отдельной от базового рабочего пространства.
Программные файлы могут содержать несколько функций. Если файл содержит только функциональные определения, первая функция является основной функцией и является функцией, которую MATLAB сопоставляет с именем файла. Функции, которые следуют за основной функцией или кодом скрипта, являются вызванными локальными функциями. Локальные функции только доступны в файле.
Операторы end
Функции заканчивают любым end оператор, конец файла или линия определения для локальной функции, какой бы ни на первом месте. end оператор требуется если:
Любая функция в файле содержит вложенную функцию (функция, полностью содержавшая в ее родительском элементе).
Функция является локальной функцией в файле функции, и любая локальная функция в файле использует end ключевое слово.
Функция является локальной функцией в файле скрипта.
Несмотря на то, что это является иногда дополнительным, используйте end для лучшей удобочитаемости кода.
Источник статьи: http://docs.exponenta.ru/matlab/matlab_prog/create-functions-in-files.html
Как в матлабе написать функцию
Открыть редактор можно двумя способами:
- из меню File выбрать опцию New, а затем M-File.
- использовать команду редактирования edit.
Команда edit poof запускает редактор и открывает файле poof.m. Если имя файла опущено, то запускается редактор и открывается файл без имени.
Теперь можно записать, например, функцию fact, приведенную выше, вводя строки текста и сохраняя их в файле с именем fact.m в текущем каталоге.
Как только такой файл создан, можно выполнить следующие команды:
- Вывести на экран имена файлов текущего каталога:
what - Вывести на экран текст M-файла fact.m:
type fact - Вызвать функцию fact с заданными параметрами:
fact (5)
ans= 120
М-сценарии
Сценарии являются самым простым типом M-файла – у них нет входных и выходных аргументов. Они используются для автоматизации многократно выполняемых вычислений. Сценарии оперируют данными из рабочей области и могут генерировать новые данные для последующей обработки в этом же файле. Данные, которые используются в сценарии, сохраняются в рабочей области после завершения сценария и могут быть использованы для дальнейших вычислений.
Пример
Следующие операторы вычисляют радиус-вектор rho для различных тригонометрических функций от угла theta и строят последовательность графиков в полярных координатах.
Строка комментария |
| |
Вычисления | ||
Команды графического вывода |
Создайте М-файл petals.m, вводя указанные выше операторы. Этот файл является сценарием. Ввод команды petals.m в командной строке системы MATLAB вызывает выполнение операторов этого сценария.
После того, как сценарий отобразит первый график, нажмите клавишу Return, чтобы перейти к следующему графику. В сценарии отсутствуют входные и выходные аргументы; программа petals.m сама создаёт переменные, которые сохраняются в рабочей области системы MATLAB. Когда выполнение завершено, переменные (i, theta и rho) остаются в рабочей области. Для того чтобы увидеть этот список, следует воспользоваться командой whos.
М-функции
М-функции являются M-файлами, которые допускают наличие входных и выходных аргументов. Они работают с переменными в пределах собственной рабочей области, отличной от рабочей области системы MATLAB.
Функция average — это достаточно простой M-файл, который вычисляет среднее значение элементов вектора:
function y = average (x)
% AVERAGE Среднее значение элементов вектора.
% AVERAGE(X), где X — вектор. Вычисляет среднее значение элементов вектора.
% Если входной аргумент не является вектором, генерируется ошибка.
[m,n] = size(x);
if (
Попробуйте ввести эти команды в M-файл, именуемый average.m. Функция average допускает единственный входной и единственный выходной аргументы. Для того чтобы вызвать функцию average, надо ввести следующие операторы:
z = 1:99;
average(z)
ans = 50
Структура М-функции. M-функция состоит из:
- строки определения функции;
- первой строки комментария;
- собственно комментария;
- тела функции;
- строчных комментариев;
Строка определения функции. Строка определения функции сообщает системе MATLAB, что файл является М-функцией, а также определяет список входных аргументов.
Пример
Строка определения функции average имеет вид:
function y = average(x)
Здесь:
- function — ключевое слово, определяющее М-функцию;
- y — выходной аргумент;
- average — имя функции;
- x — входной аргумент.
Каждая функция в системе MATLAB содержит строку определения функции, подобную приведенной.
Если функция имеет более одного выходного аргумента, список выходных аргументов помещается в квадратные скобки. Входные аргументы, если они присутствуют, помещаются в круглые скобки. Для отделения аргументов во входном и выходном списках применяются запятые.
function [x, y, z] = sphere(theta, phi, rho)
Имена входных переменных могут, но не обязаны совпадать с именами, указанными в строке определения функции.
Первая строка комментария. Для функции average первая строка комментария выглядит так:
% AVERAGE Среднее значение элементов вектора
Это — первая строка текста, которая появляется, когда пользователь набирает команду help . Кроме того, первая строка комментария выводится на экран по команде поиска lookfor. Поскольку эта строка содержит важную информацию об M-файле, она должна быть тщательно составлена.
Комментарий. Для M-файлов можно создать online-подсказку, вводя текст в одной или более строках комментария.
Сформируем несколько строк комментария
% Функция average(x) вычисляет среднее значение элементов вектора x.
% Если входной аргумент не является вектором, выдается ошибка.
Тогда при вводе команды подсказки help , система MATLAB отображает строки комментария, которые размещаются между строкой определения функции и первой пустой строкой, либо началом программы. Команда help игнорирует комментарии, размещенные вне этой области.
help sin
SIN Sine.
SIN(X) is the sine of the elements of X
SIN(X) вычисляет функцию синуса элементов массива X.
Оглавление каталога. Можно создать комментарий для целого каталога, если сформировать специальный файл с именем Contents.m. Этот файл должен содержать только строки комментариев.
MATLAB выводит на экран строки файла Contents.m по команде help .
Если каталог не содержит файла Contents.m, то по команде help распечатывается первая строка комментария для каждого M-файла данного каталога.
Тело функции. Тело функции содержит код языка MATLAB, который выполняет вычисления и присваивает значения выходным аргументам. Операторы в теле функции могут состоять из вызовов функций, программных конструкций для управления потоком команд, интерактивного ввода/вывода, вычислений, присваиваний, комментариев и пустых строк.
Тело функции average включает ряд простейших операторов программирования:
Оператор вызова функции size Начало оператора if |
| |
Сообщение об ошибке Конец оператора if |
Как уже говорилось ранее, комментарии отмечаются знаком (%). Строка комментария может быть размещена в любом месте M-файла, в том числе и в конце строки.
% Найти сумму всех элементов вектора x
y = sum(x) % Использована функция sum.
Кроме строк комментариев в текст М-файла можно включать пустые строки. Однако надо помнить, что пустая строка может служить указателем окончания подсказки.
Имена М-функций. В системе MATLAB на имена М-функций налагаются те же ограничения, что и на имена переменных — их длина не должна превышать 31 символа. Более точно, имя может быть и длиннее, но система MATLAB принимает во внимание только первые 31 символ. Имена М-функций должны начинаться с буквы; остальные символы могут быть любой комбинацией букв, цифр и подчеркиваний.
Имя файла, содержащего М-функцию, составляется из имени функции и расширения “.m”.
average.m
Если имя файла и имя функции в строке определения функции разные, то используется имя файла, а внутреннее имя игнорируется. Хотя имя функции, определенное в строке определения функции, может и не совпадать с именем файла, настоятельно рекомендуется использовать одинаковые имена.
Двойственность функций и команд. Команды системы MATLAB — это операторы вида:
load
help
Многие команды могут быть модифицированы добавлением операндов:
load August17.dat
help magic
type rank
Альтернативный метод задания модификаторов — определить их в качестве строковых аргументов функции:
load(‘August17.dat’)
help(‘magic’)
type(‘rank’)
В этом заключается двойственность понятий команды и функции в системе MATLAB. Любая команда вида
может быть записана в форме функции
Преимущество функционального описания проявляется, когда строка аргументов формируется по частям. Следующий пример показывает, как может быть обработана последовательность файлов August1.dat, August2.dat, и т.д. Здесь используется функция int2str, которая переводит целое число в строку символов, что помогает сформировать последовательность имён файлов.
for d = 1:31
s = [‘August’ int2str(d) ‘.dat’]
load(s) %Загрузить файл с именем August’d’.dat
% Операторы обработки файла
end
Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter
Источник статьи: http://old.exponenta.ru/SOFT/matlab/potemkin/book/matlab/chapter3/3_2.asp
Документация
Объявите имя функции, входные параметры и выходные параметры
Синтаксис
Описание
function [y1. yN] = myfun(x1. xM) объявляет функцию с именем myfun это принимает, вводит x1. xM и возвращает выходные параметры y1. yN . Этот оператор объявления должен быть первой исполняемой линией функции. Допустимые имена функций начинаются с буквенного символа и могут содержать буквы, числа или символы нижнего подчеркивания.
В файле функции, который содержит только функциональные определения. Имя файла должно совпадать с именем первой функции в файле.
В файле скрипта, который содержит команды и функциональные определения. Функции должны быть в конце файла. Файлы скрипта не могут иметь того же имени как функция в файле. Функции поддерживаются в скриптах в R2016b или позже.
Файлы могут включать несколько локальных функций или вложенных функций. Для удобочитаемости используйте end ключевое слово, чтобы указать на конец каждой функции в файле. end ключевое слово требуется когда:
Любая функция в файле содержит вложенную функцию.
Функция является локальной функцией в файле функции, и любая локальная функция в файле использует end ключевое слово.
Функция является локальной функцией в файле скрипта.
Примеры
Функция с одним Выводом
Задайте функцию в файле с именем average.m это принимает входной вектор, вычисляет среднее значение значений и возвращает один результат.
Вызовите функцию из командной строки.
Функция с несколькими Выходными параметрами
Задайте функцию в файле с именем stat.m это возвращает среднее и стандартное отклонение входного вектора.
Вызовите функцию из командной строки.
Функция в файле скрипта
Задайте скрипт в файле с именем integrationScript.m это вычисляет значение подынтегрального выражения в и вычисляет область под кривой от 0 до
. Включайте локальную функцию, которая задает подынтегральное выражение
.
Примечание: Включая функции в скриптах требует MATLAB® R2016b или позже.
Несколько функций в функциональном файле
Задайте две функции в файле с именем stat2.m , где первые вызовы функции второе.
Функциональный avg local function. Локальные функции только доступны для других функций в том же файле.
Вызовите функциональный stat2 из командной строки.
Функция с валидацией аргумента
Задайте функцию, которая ограничивает вход числовым вектором, который не содержит Inf или NaN элементы. Эта функция использует arguments ключевое слово, которое допустимо для версий MATLAB ® R2019b и позже.
В arguments блок кода, (1,:) указывает на тот x должен быть вектор. Функции валидации,
Вызывание функции с вектором, который содержит элемент, который является NaN нарушает объявление входного параметра. Это нарушение приводит к ошибке, будучи выданным mustBeFinite функция валидации.
Смотрите также
Представлено до R2006a
Открытый пример
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Документация MATLAB
Поддержка
© 1994-2020 The MathWorks, Inc.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
Источник статьи: http://docs.exponenta.ru/matlab/ref/function.html