Меню Рубрики

Как в matlab написать функцию

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

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

И скрипты и функции позволяют вам повторно использовать последовательности команд путем хранения их в программных файлах. Скрипты являются самым простым типом программы, поскольку они хранят команды точно так же, как вы ввели бы их в командной строке. Функции обеспечивают больше гибкости, в основном, потому что можно передать входные значения и возвратить выходные значения. Например, эта функция с именем 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

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

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

Синтаксис

Описание

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 должен быть вектор. Функции валидации, , ограничьте элементы в x к числовым значениям, которые не являются Inf или NaN . Для получения дополнительной информации смотрите Валидацию Аргумента функции.

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

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

Представлено до R2006a

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

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

Документация MATLAB
Поддержка

© 1994-2020 The MathWorks, Inc.

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

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

3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.

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

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

Источник статьи: http://docs.exponenta.ru/matlab/ref/function.html

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

Включайте код MATLAB в модели, которые генерируют встраиваемый код С

Simulink / Пользовательские Функции

HDL Coder / Пользовательские Функции

Описание

С блоком MATLAB Function можно записать функцию MATLAB ® для использования в модели Simulink ® . Функция MATLAB, которую вы создаете, выполняется для симуляции и генерирует код для цели Simulink Coder™ . Если вы плохо знакомы с Simulink и продуктами MATLAB, смотрите, что функции MATLAB Реализации Используют Блоки, и Создайте Пользовательскую Функциональность Используя блок MATLAB function для обзора.

Двойной клик по блоку MATLAB function открывает свой редактор, где вы пишете функцию MATLAB, как в этом примере:

Чтобы узнать больше об этом редакторе, см. Редактор блока MATLAB function.

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

Можно также задать данные, ввести триггеры и вызов функции выходные параметры с помощью Портов и Менеджера данных, к которому вы получаете доступ из Редактора блока MATLAB function путем выбора Edit Data. Смотрите Порты и Менеджер данных.

Блок MATLAB Function генерирует эффективный встраиваемый код на основе анализа, который определяет размер, класс и сложность каждой переменной. Этот анализ вводит следующие ограничения:

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

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

В дополнение к ограничениям языка блок MATLAB Function поддерживает подмножество функций, доступных в MATLAB. Список поддерживаемых функций дан в Функциях и Объектах, Поддержанных для Генерации кода C/C++. Эти функции включают функции в общие категории, такие как:

Арифметические операторы как plus минус, , и power . Для получения дополнительной информации см. Массив по сравнению Матричные операции (MATLAB).

Операции над матрицей как size , и length

Усовершенствованные операции над матрицей как lu inv svd , и chol

Тригонометрические функции как sin потому что sinh , и cosh

Примечание

Несмотря на то, что код для этого блока пытается привести точно к тем же результатам как MATLAB, различия могут произойти из-за погрешностей округления. Эти числовые различия, которые могут быть некоторыми eps первоначально, может увеличить после повторенных операций. Уверенность в поведении nan не рекомендуется. Различные компиляторы C могут привести к различным результатам для того же расчета.

Примечание

В блоке MATLAB Function , %#codegen директива включена, чтобы подчеркнуть, что алгоритм MATLAB блока всегда предназначается для генерации кода. %#codegen директива или отсутствие ее, не изменяет поведение проверки ошибок в контексте блока MATLAB Function . Для получения дополнительной информации смотрите Направляющий % Компиляции #codegen.

Чтобы поддержать визуализацию данных, блок MATLAB Function поддерживает вызовы функций MATLAB для симуляции только. Смотрите Внешние Функции, чтобы изучить некоторые ограничения этой возможности, и как она объединяется с анализом кода для этого блока. Если эти вызовы функции непосредственно не влияют ни на один из вводов или выводов Simulink, вызовы не появляются в сгенерированном коде Simulink Coder .

От блоков MATLAB Function можно также вызвать функции, определяемые в блоке Simulink Function . Можно вызвать функции Stateflow ® с Export Chart Level Functions (Make Global), и Allow exported functions to be called by Simulink зарегистрировался в диалоговом окне свойств диаграммы.

В Портах и Менеджере данных, можно объявить, что вход блока параметр Simulink вместо порта. Блок MATLAB Function также поддерживает наследование типов и размера для входных параметров, выходных параметров и параметров. Можно также задать эти свойства явным образом. Смотрите Аргументы функции Типа, Аргументы функции Размера, и Добавьте Аргументы Параметра для описаний переменных, которые вы используете в блоках MATLAB Function .

Рекурсивные вызовы не позволены в блоках MATLAB Function .

По умолчанию блоки MATLAB Function имеют прямое включенное сквозное соединение. Чтобы отключить его, в Портах и Менеджере данных, снимают флажок Allow direct feedthrough. Непрямое сквозное соединение позволяет семантике гарантировать, что выходные параметры полагаются только на текущее состояние. Используя непрямое сквозное соединение позволяет вам использовать блоки MATLAB Function в обратной связи и предотвратить алгебраические циклы.

Источник статьи: http://docs.exponenta.ru/simulink/slref/matlabfunction.html

Основные математические функции MatLab

MatLab содержит в себе все распространенные математические функции, которые доступны по их имени при реализации алгоритмов. Например, функция sqrt() позволяет вычислять квадрат числа и может быть использована в программе следующим образом:

x = 2;
y = 4;
d = sqrt(x^2+y^2); %вычисление евклидового расстояния

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

Таблица 1.2. Основные математические функции MatLab

sqrt(x) вычисление квадратного корня
exp(x) возведение в степень числа e
pow2(x) возведение в степень числа 2
log(x) вычисление натурального логарифма
log10(x) вычисление десятичного логарифма
log2(x) вычисление логарифма по основанию 2
sin(x) синус угла x, заданного в радианах
cos(x) косинус угла x, заданного в радианах
tan(x) тангенс угла x, заданного в радианах
cot(x) котангенс угла x, заданного в радианах
asin(x) арксинус
acos(x) арккосинус
atan(x) арктангенс
pi число пи
round(x) округление до ближайшего целого
fix(x) усечение дробной части числа
floor(x) округление до меньшего целого
ceil(x) округление до большего целого
mod(x) остаток от деления с учётом знака
sign(x) знак числа
factor(x) разложение числа на простые множители
isprime(x) истинно, если число простое
rand генерация псевдослучайного числа с равномерным законом распределения
randn генерация псевдослучайного числа с нормальным законом распределения
abs(x) вычисление модуля числа

Почти все элементарные функции допускают вычисления и с комплексными аргументами. Например:

res = sin(2+3i)*atan(4i)/(1 — 6i); % res = -1.8009 — 1.9190i

Ниже показан пример задания вектора с именем a, и содержащий значения 1, 2, 3, 4:

Для доступа к тому или иному элементу вектора используется следующая конструкция языка:

disp( a(1) ); % отображение значения 1-го элемента вектора
disp( a(2) ); % отображение значения 2-го элемента вектора
disp( a(3) ); % отображение значения 3-го элемента вектора
disp( a(4) ); % отображение значения 4-го элемента вектора

т.е. нужно указать имя вектора и в круглых скобках написать номер индекса элемента, с которым предполагается работать. Например, для изменения значения 2-го элемента массива на 10 достаточно записать

a(2) = 10; % изменение значения 2-го элемента на 10

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

N = length(a); % (N=4) число элементов массива а

Если требуется задать вектор-столбец, то это можно сделать так

a = [1; 2; 3; 4]; % вектор-столбец

b = [1 2 3 4]’; % вектор-столбец

при этом доступ к элементам векторов осуществляется также как и для векторов-строк.

Следует отметить, что векторы можно составлять не только из отдельных чисел или переменных, но и из векторов. Например, следующий фрагмент программы показывает, как можно создавать один вектор на основе другого:

a = [1 2 3 4]; % начальный вектор a = [1 2 3 4]
b = [a 5 6]; % второй вектор b = [1 2 3 4 5 6]

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

a = [a 5]; % увеличение вектора а на один элемент

Недостатком описанного способа задания (инициализации) векторов является сложность определения векторов больших размеров, состоящих, например, из 100 или 1000 элементов. Чтобы решить данную задачу, в MatLab существуют функции инициализации векторов нулями, единицами или случайными значениями:

a1 = zeros(1, 100); % вектор-строка, 100 элементов с
% нулевыми значениями
a2 = zeros(100, 1); % вектор-столбец, 100 элементов с
% нулевыми значениями
a3 = ones(1, 1000); % вектор-строка, 1000 элементов с
% единичными значениями
a4 = ones(1000, 1); % вектор-столбец, 1000 элементов с
% единичными значениями
a5 = rand(1000, 1); % вектор-столбец, 1000 элементов со
% случайными значениями

Матрицы в MatLab задаются аналогично векторам с той лишь разницей, что указываются обе размерности. Приведем пример инициализации единичной матрицы размером 3х3:

E = [1 0 0; 0 1 0; 0 01]; % единичная матрица 3х3

E = [1 0 0
0 1 0
0 0 1]; % единичная матрица 3х3

Аналогичным образом можно задавать любые другие матрицы, а также использовать приведенные выше функции zeros(), ones() и rand(), например:

A1 = zeros(10,10); % нулевая матрица 10х10 элементов

A2 = zeros(10); % нулевая матрица 10х10 элементов
A3 = ones(5); % матрица 5х5, состоящая из единиц
A4 = rand(100); % матрица 100х100, из случайных чисел

Для доступа к элементам матрицы применяется такой же синтаксис как и для векторов, но с указанием строки и столбца где находится требуемый элемент:

A = [1 2 3;4 5 6;7 8 9]; % матрица 3х3
disp( A(2,1) ); % вывод на экран элемента, стоящего во
% второй строке первого столбца, т.е. 4
disp( A(1,2) ); % вывод на экран элемента, стоящего в
% первой строке второго столбца, т.е. 2

Также возможны операции выделения указанной части матрицы, например:

B1 = A(:,1); % B1 = [1; 4; 7] – выделение первого столбца
B2 = A(2,:); % B2 = [1 2 3] – выделение первой строки
B3 = A(1:2,2:3); % B3 = [2 3; 5 6] – выделение первых двух
% строк и 2-го и 3-го столбцов матрицы А.

Размерность любой матрицы или вектора в MatLab можно определить с помощью функции size(), которая возвращает число строк и столбцов переменной, указанной в качестве аргумента:

a = 5; % переменная а
A = [1 2 3]; % вектор-строка
B = [1 2 3; 4 5 6]; % матрица 2х3
size(a) % 1х1
size(A) % 1х3
size(B) % 2х3

Источник статьи: http://studopedia.ru/9_50891_osnovnie-matematicheskie-funktsii-MatLab.html


0 0 голоса
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии