Как вызывать функцию в матлабе

Как вызывать функцию в матлабе

2. Синтаксис определения и вызова M-функций .

Заголовок определяет » интерфейс» функции ( способ взаимодействия с ней ) и устроен следующим образом:

function [ RetVal1, RetVal2, ] = FunctionName( par1, par2, )

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

function [ A, B ] = MatrProc1( X1, X2, x )

рассчитана на «приём» двух массивов одинаковых ( но произвольных ) размеров и одного скаляра.

Эти массивы в теле функции сначала перемножаются поэлементно, после чего результат такого перемножения ещё умножается на скаляр. Таким образом порождается первый из выходных массивов. Одинаковые размеры входных масивов X1 и X2 гарантируют выполнимость операции их поэлементного умножения. Второй выходной массив ( с именем B ) отличается от первого тем, что получается сложением со скаляром ( а не умножением ).

Ниже показан вызов из командного окна MATLABа ранее созданной нами для примера функции MatrProc1.

Как вызывать функцию в матлабе

Здесь имена фактических входных параметров ( W1 и W2 ) и переменных, в которых записываются результаты вычислений ( Res1 и Res2 ), не совпадают с именами аналогичных переменных в определении функции MatrProc1. Очевидно, что совпадения и не требуется, тем более, что у третьего входного фактического параметра нет имени вообще! Чтобы подчеркнуть это возможное отличие, имена входных параметров и выходных значений в определении функции называют формальными.

В рассмотренном примере вызова функции MatrProc1 из двух входных квадратных матриц 2 x 2 получаются две выходные матрицы Res1 и Res2 точно таких же размеров:

Res1 =
9 6
6 6

Res2 =
6 5
5 5

MatrProc1 [r1,r2] = MatrProc1( [ 1 2 3; 4 5 6 ], [ 7 7 7; 2 2 2 ], 1 );

с двумя входными массивами размера 2×3, получим две выходные матрицы размера 2×3. То есть, одна и та же функция MatrProc1 может обрабатывать входные параметры различных размеров и размерностей! Можно вместо массивов применить эту функцию к скалярам ( это всё равно массивы размера 1×1 ).

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

Как вызывать функцию в матлабе

При вызове с параметрами 1,2,1 функция MatrProc1 возвращает два значения: 2 и 3. Для использования в составе выражения используется первое из них.

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

Источник

Документация

Объявите имя функции, входные параметры и выходные параметры

Синтаксис

Описание

Можно сохранить функцию:

В файле функции, который содержит только функциональные определения. Имя файла должно совпадать с именем первой функции в файле.

В файле скрипта, который содержит команды и функциональные определения. Функции должны быть в конце файла. Файлы скрипта не могут иметь того же имени как функция в файле. Функции поддерживаются в скриптах в R2016b или позже.

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

Любая функция в файле содержит вложенную функцию.

Функция является локальной функцией в файле функции, и любая локальная функция в файле использует end ключевое слово.

Функция является локальной функцией в файле скрипта.

Примеры

Функция с одним Выводом

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

Вызовите функцию из командной строки.

Функция с несколькими Выходными параметрами

Задайте функцию в файле с именем stat.m это возвращает среднее и стандартное отклонение входного вектора.

Вызовите функцию из командной строки.

Функция в файле скрипта

Задайте скрипт в файле с именем integrationScript.m это вычисляет значение подынтегрального выражения в Как вызывать функцию в матлабеи вычисляет область под кривой от 0 до Как вызывать функцию в матлабе. Включайте локальную функцию, которая задает подынтегральное выражение Как вызывать функцию в матлабе.

Примечание: Включая функции в скриптах требует MATLAB® R2016b или позже.

Несколько функций в функциональном файле

Функциональный avg local function. Локальные функции только доступны для других функций в том же файле.

Вызовите функциональный stat2 из командной строки.

Функция с валидацией аргумента

Задайте функцию, которая ограничивает вход числовым вектором, который не содержит Inf или NaN элементы. Эта функция использует arguments ключевое слово, которое допустимо для MATLAB ® версии R2019b и позже.

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

Смотрите также

Открытый пример

У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?

Документация MATLAB

Поддержка

© 1994-2021 The MathWorks, Inc.

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.

2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.

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

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

Источник

Документация

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

Если существует несколько входных параметров, разделите их запятыми:

Возвратите выходной параметр функции путем присвоения функции переменной:

Когда существует несколько выходных аргументов, заключайте их в квадратные скобки:

Заключите любые вводы текста в кавычки:

Чтобы вызвать функцию, которая не требует никаких входных параметров и не возвращает выходных параметров, вводите только имя функции:

clc функция очищает Командное окно.

Открытый пример

У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?

Документация MATLAB

Поддержка

© 1994-2021 The MathWorks, Inc.

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.

2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.

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

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

Источник

Документация

Создание функций в файлах

И скрипты и функции позволяют вам повторно использовать последовательности команд путем хранения их в программных файлах. Скрипты являются самым простым типом программы, поскольку они хранят команды точно так же, как вы ввели бы их в командной строке. Функции обеспечивают больше гибкости, в основном, потому что можно передать входные значения и возвратить выходные значения. Например, эта функция с именем fact вычисляет факториал номера ( n ) и возвращает результат ( f ).

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

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

Вызовите скрипт из командной строки.

Синтаксис для функционального определения

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

function ключевое слово (требуется)

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

(Дополнительные) выходные аргументы

Если ваша функция возвращает один выходной параметр, можно задать выходное имя после function ключевое слово.

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

Если нет никакого выхода, можно не использовать его.

Или можно использовать скобки пустого квадрата.

Имя функции (требуется)

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

Примечание

(Дополнительные) входные параметры

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

Если нет никаких входных параметров, можно не использовать круглые скобки.

Совет

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

Содержимое функций и файлов

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

Программные файлы могут содержать несколько функций. Если файл содержит только функциональные определения, первая функция является основной функцией и является функцией, которую MATLAB сопоставляет с именем файла. Функции, которые следуют за основной функцией или кодом скрипта, являются вызванными локальными функциями. Локальные функции только доступны в файле.

Операторы end

Функции заканчиваются любым end оператор, конец файла или линия определения для локальной функции, какой бы ни на первом месте. end оператор требуется если:

Любая функция в файле содержит вложенную функцию (функция, полностью содержавшая в ее родительском элементе).

Функция является локальной функцией в файле функции, и любая локальная функция в файле использует end ключевое слово.

Функция является локальной функцией в файле скрипта.

Несмотря на то, что это является иногда дополнительным, использовать end для лучшей удобочитаемости кода.

Источник

MATLAB — Функции

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

Функции могут принимать более одного входного аргумента и могут возвращать более одного выходного аргумента.

Синтаксис оператора функции —

пример

Создайте файл функции с именем mymax.m и введите в него следующий код —

Строки комментариев, которые идут сразу после оператора функции, содержат текст справки. Эти строки печатаются при вводе —

MATLAB выполнит приведенный выше оператор и вернет следующий результат —

Вы можете вызвать функцию как —

MATLAB выполнит приведенный выше оператор и вернет следующий результат —

Анонимные функции

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

Вы можете определить анонимную функцию прямо в командной строке MATLAB или в функции или скрипте.

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

Синтаксис для создания анонимной функции из выражения:

пример

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

Создайте файл сценария и введите в нем следующий код —

Когда вы запускаете файл, он отображает —

Основные и подфункции

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

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

Подфункции видны только основной функции и другим подфункциям в файле функций, который их определяет.

пример

Напишем функцию с именем quadratic, которая будет вычислять корни квадратного уравнения. Функция будет принимать три входа: квадратичный коэффициент, линейный коэффициент и постоянный член. Это вернуло бы корни.

Создайте файл функции quadratic.m и введите в него следующий код —

Вы можете вызвать вышеуказанную функцию из командной строки как —

MATLAB выполнит приведенный выше оператор и вернет следующий результат —

Вложенные функции

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

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

Вложенная функция имеет следующий синтаксис:

пример

Перепишем функцию quadratic из предыдущего примера, однако на этот раз функция диска будет вложенной функцией.

Создайте файл функции quadratic2.m и введите в него следующий код —

Вы можете вызвать вышеуказанную функцию из командной строки как —

MATLAB выполнит приведенный выше оператор и вернет следующий результат —

Частные функции

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

Они видны только функциям в родительской папке.

пример

Перепишем квадратичную функцию. На этот раз, однако, функция диска, вычисляющая дискриминант, будет частной функцией.

Создайте подпапку с именем private в рабочем каталоге. Сохраните в нем следующий файл функции disc.m

Создайте функцию quadratic3.m в вашем рабочем каталоге и введите в нее следующий код:

Вы можете вызвать вышеуказанную функцию из командной строки как —

MATLAB выполнит приведенный выше оператор и вернет следующий результат —

Глобальные переменные

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

Если вы хотите получить доступ к этой переменной из базовой рабочей области, объявите переменную в командной строке.

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

пример

Давайте создадим файл функции с именем medium.m и наберем в нем следующий код:

Создайте файл сценария и введите в нем следующий код —

Когда вы запустите файл, он покажет следующий результат —

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *