М сценарий матлаб это

MATLAB allows you to write a series of commands into a file and execute the file as a complete unit, like writing a function and calling it. It is done using M-file.

Matlab M-Files — Introduction

MATLAB allows you to write a series of commands into a file and execute the file as a complete unit, like writing a function and calling it. It is done using M-file.

M-File also called as the script file is a series of MATLAB commands that will get executed sequentially when the file is executed.

The m-file is saved with .m extension.

Program Files

MATLAB allows writing two kinds of program files, which are as follows −

Scripts

Script files are program files with .m extension. In these files, you write a series of commands, which you want to execute together. Scripts do not accept inputs and do not return any outputs. They operate on data in the workspace.

A script file looks as follows −

FirstFile

Functions

Function files are also program files with .m extension. Functions can accept inputs and return outputs. Internal variables are local to the function.

A function file looks as follows −

Max Number

Let us understand how to create and run the m-file in the next chapters.

Matlab M-Files — Create & Save

In this chapter, we will learn how to create and save a M-file. Let us begin by understanding about creating a M-file.

Create M-file

To create m-file, we will make use of MATLAB IDE as shown below. Here IDE refers to an integrated development environment.

Create M-file

Click on New Script highlighted above to open a new script file.

Script Highlighted

Save M-file

You will get an untitled file. Let us save the file as firstmfile.m.

Click on the save button and it will open a popup, where you can enter the name of the file.

Firstmfile M

Click on OK to save the file.

Now, you are free to write your commands in the file below −

Untitled File

Matlab M-Files — Run

In the previous chapter, we have seen how to create and save a m-file. Now in this chapter, we will write a simple code and run the same.

Following is the code which will run inside the firstmfile.m

a = 5; b = 7;
c = a + b
d = c + sin(b)
e = 5 * d
f = exp(-d)

This is how it will look inside MATLAB editor −

Run

Click on the Run button as highlighted above to see the result inside the command window as shown below

Command Window

Matlab M-Files — Functions

A function is a group of statements that together perform a task. In MATLAB, functions are defined in separate files. The name of the file and name of the function should be thesame.

Functions operate on variables within their own workspace, which is also called the local workspace. These functions separate the variables from the workspace which you access at the MATLAB command prompt. This is called the base workspace.

Functions can accept more than one input arguments and may return more than one output arguments.

The syntax of a function statement is as follows −

function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)

Here out1, out2…outN are output variables. It can be a single variable or comma separated. The variables in1, in2, in3…inN are input variables which can be single variable or comma separated ones. The function in MATLAB starts with the keyword function as shown in the syntax.

While naming your m-file, you should take care that the file name and the function name has to match. You cannot use the name of any built-in function available in MATLAB.

Let us now create a simple function and save it as .m file and run it. In MATLAB, the IDE allows you to select what type of file you want to create as shown below −

Home

Click on the Function, and it will open a new file as shown below −

Function

Now you can update the output variables, the function name and the input variables in the above untitled file and save the file with the same name as the function name.

Output Variables

The name of our function is MaxNumber() and it gives the maximum number from the input value passed.

Now let us run the function to get the output. You can call the function by using MaxNumber(100,50).

Max

Matlab M-Files — Import Data

In this chapter, we will understand how to import data from an existing m-file in MATLAB.

Consider the m-file firstmfile.m. The contents of the file are as follows −

a = 5; b = 7;
c = a + b
d = c + sin(b)
e = 5 * d
f = exp(-d)

When you execute the file, the data variables are available in the workspace, as shown below −

Workspace

Let us clear the workspace and the command prompt. Hence, we can now import the file and also check the data available.

To clear workspace, the command is clear all.

Data

The workspace is empty now.

Let us clean the command window by using clc command as shown below −

Empty

We have an empty command window.

Now, type the m-file name as shown below. It will execute the code inside the file

M File

The workspace is loaded with all the variables that are used inside the file.

You can also check the details of the variables by using the whos command as shown below −

Details


Matlab M-Files — Introduction

MATLAB allows you to write a series of commands into a file and execute the file as a complete unit, like writing a function and calling it. It is done using M-file.

M-File also called as the script file is a series of MATLAB commands that will get executed sequentially when the file is executed.

The m-file is saved with .m extension.

Program Files

MATLAB allows writing two kinds of program files, which are as follows −

Scripts

Script files are program files with .m extension. In these files, you write a series of commands, which you want to execute together. Scripts do not accept inputs and do not return any outputs. They operate on data in the workspace.

A script file looks as follows −

FirstFile

Functions

Function files are also program files with .m extension. Functions can accept inputs and return outputs. Internal variables are local to the function.

A function file looks as follows −

Max Number

Let us understand how to create and run the m-file in the next chapters.

Matlab M-Files — Create & Save

In this chapter, we will learn how to create and save a M-file. Let us begin by understanding about creating a M-file.

Create M-file

To create m-file, we will make use of MATLAB IDE as shown below. Here IDE refers to an integrated development environment.

Create M-file

Click on New Script highlighted above to open a new script file.

Script Highlighted

Save M-file

You will get an untitled file. Let us save the file as firstmfile.m.

Click on the save button and it will open a popup, where you can enter the name of the file.

Firstmfile M

Click on OK to save the file.

Now, you are free to write your commands in the file below −

Untitled File

Matlab M-Files — Run

In the previous chapter, we have seen how to create and save a m-file. Now in this chapter, we will write a simple code and run the same.

Following is the code which will run inside the firstmfile.m

a = 5; b = 7;
c = a + b
d = c + sin(b)
e = 5 * d
f = exp(-d)

This is how it will look inside MATLAB editor −

Run

Click on the Run button as highlighted above to see the result inside the command window as shown below

Command Window

Matlab M-Files — Functions

A function is a group of statements that together perform a task. In MATLAB, functions are defined in separate files. The name of the file and name of the function should be thesame.

Functions operate on variables within their own workspace, which is also called the local workspace. These functions separate the variables from the workspace which you access at the MATLAB command prompt. This is called the base workspace.

Functions can accept more than one input arguments and may return more than one output arguments.

The syntax of a function statement is as follows −

function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)

Here out1, out2…outN are output variables. It can be a single variable or comma separated. The variables in1, in2, in3…inN are input variables which can be single variable or comma separated ones. The function in MATLAB starts with the keyword function as shown in the syntax.

While naming your m-file, you should take care that the file name and the function name has to match. You cannot use the name of any built-in function available in MATLAB.

Let us now create a simple function and save it as .m file and run it. In MATLAB, the IDE allows you to select what type of file you want to create as shown below −

Home

Click on the Function, and it will open a new file as shown below −

Function

Now you can update the output variables, the function name and the input variables in the above untitled file and save the file with the same name as the function name.

Output Variables

The name of our function is MaxNumber() and it gives the maximum number from the input value passed.

Now let us run the function to get the output. You can call the function by using MaxNumber(100,50).

Max

Matlab M-Files — Import Data

In this chapter, we will understand how to import data from an existing m-file in MATLAB.

Consider the m-file firstmfile.m. The contents of the file are as follows −

a = 5; b = 7;
c = a + b
d = c + sin(b)
e = 5 * d
f = exp(-d)

When you execute the file, the data variables are available in the workspace, as shown below −

Workspace

Let us clear the workspace and the command prompt. Hence, we can now import the file and also check the data available.

To clear workspace, the command is clear all.

Data

The workspace is empty now.

Let us clean the command window by using clc command as shown below −

Empty

We have an empty command window.

Now, type the m-file name as shown below. It will execute the code inside the file

M File

The workspace is loaded with all the variables that are used inside the file.

You can also check the details of the variables by using the whos command as shown below −

Details

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

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

М-файлы

MATLAB позволяет писать два вида программных файлов –

  • Скрипты – файлы скриптов – это программные файлы с расширением .m . В этих файлах вы пишете серию команд, которые вы хотите выполнить вместе. Скрипты не принимают входные данные и не возвращают никаких выходных данных. Они оперируют данными в рабочей области.

  • Функции – файлы функций также являются программными файлами с расширением .m . Функции могут принимать входные и выходные данные. Внутренние переменные являются локальными для функции.

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

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

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

Создание и запуск файла скрипта

Для создания файлов скриптов вам необходимо использовать текстовый редактор. Вы можете открыть редактор MATLAB двумя способами:

  • Использование командной строки
  • Использование IDE

Если вы используете командную строку, введите edit в командной строке. Это откроет редактор. Вы можете напрямую ввести edit и затем имя файла (с расширением .m)

edit 
Or
edit <filename>

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

Давайте создадим папку с именем progs. Введите следующие команды в командной строке (>>) –

mkdir progs    % create directory progs under default directory
chdir progs    % changing the current directory to progs
edit  prog1.m  % creating an m file named prog1.m

Если вы создаете файл в первый раз, MATLAB предложит вам подтвердить его. Нажмите Да.

Создание файла сценария

В качестве альтернативы, если вы используете IDE, выберите NEW -> Script. Это также открывает редактор и создает файл с именем Untitled. Вы можете назвать и сохранить файл после ввода кода.

Введите следующий код в редакторе –

Live Demo

NoOfStudents = 6000;
TeachingStaff = 150;
NonTeachingStaff = 20;

Total = NoOfStudents + TeachingStaff ...
   + NonTeachingStaff;
disp(Total);

После создания и сохранения файла вы можете запустить его двумя способами:

  • Нажав кнопку « Выполнить» в окне редактора или

  • Просто введите имя файла (без расширения) в командной строке: >> prog1

Нажав кнопку « Выполнить» в окне редактора или

Просто введите имя файла (без расширения) в командной строке: >> prog1

В командной строке отображается результат –

6170

пример

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

Live Demo

a = 5; b = 7;
c = a + b
d = c + sin(b)
e = 5 * d
f = exp(-d)

Когда приведенный выше код компилируется и выполняется, он дает следующий результат –


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

Открыть
редактор можно двумя способами:

  • из
    меню 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 и строят
последовательность графиков в полярных
координатах.

Строка
комментария

%
M-file petals — сценарий построения
лепесткового графика
theta
= -pi:0.01:pi;

rho(1,
:) = 2*sin(5*theta).^2;

rho(2,
:) = cos(10*theta).^3;

rho(3,
:) = sin(theta).^2;

rho(4,
:) = 5*cos(3.5*theta).^3;

for
i = 1:4

        
polar (theta, rho(i, :))

        
pause

end

Вычисления

Команды
графического вывода

Создайте
М-файл 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 == 1) | (n == 1)) | (m == 1 & n == 1))

                     
error(‘Входной массив должен быть
вектором’)

                
end

                
y =sum(x)/length(x);           
% Собственно вычисление

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

                
z
= 1:99;

                
average(z)

                
ans = 50

Структура
М-функции.
M-функция
состоит из:

  • строки
    определения функции;

  • первой
    строки комментария;

  • собственно
    комментария;

  • тела
    функции;

  • строчных
    комментариев;

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

Пример

Строка определения функции average
имеет вид:
          
function y = average(x)

Здесь:

  1. function
    — ключевое слово, определяющее
    М-функцию;

  2. y
    — выходной аргумент;

  3. average
    — имя функции;

  4. 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

[m,
n] = size(x);

if
(~((m == 1) | (n == 1)) |

  
(m == 1 & n == 1))

  
Error(‘Input
должно
быть
вектором‘)
end
y
= sum(x)/length(x);

Сообщение
об ошибке

Конец оператора
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. Любая команда вида

           
command
argument

может
быть записана в форме функции

           
command(‘argument’).

Преимущество
функционального описания проявляется,
когда строка аргументов формируется
по частям. Следующий пример показывает,
как может быть обработана последовательность
файлов August1.dat, August2.dat, и т.д. Здесь
используется функция int2str, которая
переводит целое число в строку символов,
что помогает сформировать
последовательность имён файлов.

           
for
d = 1:31
                 
s = [‘August’ int2str(d) ‘.dat’]
                 
load(s)    %Загрузить файл с именем
August’d’.dat
                 
% Операторы обработки файла
           
end

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

Назначение
имени.
Когда
появляется новое имя, система MATLAB
проверяет:

  1. Не
    является ли новое имя именем переменной.

  2. Не
    является ли это имя именем подфункции,
    то есть функции, которая размещена в
    этом же M-файле и является вызываемой.

  3. Не
    является ли оно именем частной функции,
    размещаемой в каталоге private. Этот
    каталог доступен только M-файлам,
    размещенным на один уровень выше.

  4. Не
    является ли оно именем функции в пути
    доступа системы MATLAB. В этом случае
    система использует тот М-файл, который
    встречается первым в пути доступа.

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

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

Допустимы
следующие модификации команды clear:

clear
<имя_функции>

Удалить
указанную функцию из рабочей области

clear
functions

Удалить
все откомпилированные программы

clear
all

Удалить
программы и данные

Создание
P-кода
. Можно
сохранить откомпилированные М-функции
или М-сценарии для последующих сеансов,
используя команду pcode в форме:
              
pcode average

Эта
команда выполняет синтаксический
анализ М-файла average.m и сохраняет
результирующий псевдокод в файле с
именем average.p. Это позволяет избежать
повторного разбора во время нового
сеанса работы. Поскольку синтаксический
анализ выполняется очень быстро,
применение команды pcode почти не влияет
на скорость ее исполнения.
Применение
P-кода целесообразно в двух случаях:

  • когда
    требуется выполнять синтаксический
    анализ большого числа M-файлов,
    необходимых для визуализации
    графических объектов в приложениях,
    связанных с разработкой графического
    интерфейса пользователя; в этом случае
    применение P-кода обеспечивает
    существенное ускорение;

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

Правила
передачи аргументов
.
С точки зрения программиста, система
MATLAB передает аргумент его значением.
На самом деле значением передаются
только те аргументы, которые изменяются
при работе этой функции. Если функция
не изменяет значения аргумента, a
только использует его для вычислений,
то аргумент передается ссылкой, что
позволяет оптимизировать использование
памяти.

Рабочие
области функции.

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

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

Проверка
количества аргументов.

Функции nargin и nargout позволяют определить
количество входных и выходных аргументов
вызываемой функции. Эту информацию в
дальнейшем можно использовать в
операторах условия для изменения хода
вычислений.

Пример:

         
function
c = testarg1(a,b)

         
if(nargin == 1)

            
c = a.^2;

         
elseif (nargin == 2)

                   
c = + b;

         
end

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

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

Эта
функция оформлена в виде М-функции
strtok, которая находится в каталоге
strfun.

Функция
должна иметь хотя бы один входной
аргумент

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

Определить
начало выделяемой подстроки

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

Выделение
остатка строки

function
[token, remainder] =
                   
strtok(string, delimiters)
if nargin <
1,
error(«Недостаточно
входных
аргументов»);
end
token
= [];
remainder = [];
len = length(string);
if len
== 0
   return
end

if
(nargin == 1)
   delimiters = [9:13 32]; %
Символы
пробелов
end
i
= 1;

while
(any(string(i) == delimiters))
i=i+1;
if (i >
len),
  return
end
end

start
= i
while (~any(string( i ) == delimiters))
i =
i+1;
if ( i > len),
    break
 
end
end
finish = i — 1;
token =
string(start:finish);

if
(nargout == 2)
    remainder =
string(finish+1:end);
end

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

Списки аргументов

Функции
varargin и varargout позволяют передавать
произвольное количество входных и
выходных аргументов. Система MATLAB
упаковывает все заданные входные и
выходные аргументы в массив ячеек.
Каждая ячейка может содержать любой
тип и любое количество данных.

Пример
     
Функция testvar допускает в качестве
входных аргументов любое количество
векторов из двух элементов и выводит
на экран линии, их соединяющие.
             
function
testvar(varargin)

             
for
i = 1:length(varargin)

                    
x(i) = varargin{i}(1);

                    
y(i) = varargin{i}(2);

             
end

             
xmin
= min(0, min(x));

             
ymin = min(0, min(y));

             
axis([xmin fix(max(x))+3 ymin fix(max(y))+3])

             
plot(x,y)

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

Пример:

            
testvar([2
3], [1 5], [4 8], [6 5], [4 2], [2 3])
            
testvar([-1 0], [3 -5], [4 2], [1 1])

Формирование
входного массива varargin.

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

Пример:

            
y(i)=
varargin{i}(2);
Здесь индекс в фигурных
скобках {i} указывает адрес i-ой ячейки
массива varargin, а индекс в круглых скобках
(2) указывает на второй элемент в ячейке.

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

Пример
   
Следующая функция использует в качестве
входа массив из двух столбцов, где
первый столбец — множество значений
координаты x, а второй — множество
значений координаты y. Функция разбивает
массив на отдельные векторы, которые
могут быть переданы в функцию testvar в
качестве входов.

             
function
[varargout] = testvar2(arrayin)

             
for i = 1:nargout

                    
varargout{i} = arrayin(i, :);

             
end

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

Для
вызова функции testvar2 можно использовать
следующие операторы:
 a
= [1 2 3 4 5;6 7 8 9 0]’;

[p1,p2,p3,p4,p5]
= testvar2(a)

p1 =
16
              
p2 =     2    7
              
p3 =     3    8
              
p4 =     4    9
              
p5 =     5    0

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

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

       
function[out1,
out2] = example1(a,b,varargin)

        
function[i,j,varargout] = example2(x1,y1,x2,y2,flag)

Типы переменных

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

  • переменные
    не требуют объявления; прежде чем
    переменной присвоить значение,
    необходимо убедиться, что всем
    переменным в правой части значения
    присвоены;

  • любая
    операция присваивания создает
    переменную, если это необходимо, или
    изменяет значение существующей
    переменной;

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

  • имя
    переменной не должно превышать 31
    символа. Более точно, имя может быть
    и длиннее, но система MATLAB принимает
    во внимание только первые 31 символ.

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

Пример.
Допустим,
требуется исследовать влияние
коэффициентов a и b для модели
хищник-жертва, описываемой уравнениями
Лотке-Вольтерра:

                                     

Создадим
M-файл lotka.m:

           
function
yp = lotka(t, y)

            
%LOTKA уравнения Лотке-Вольтерра для
модели хищник-жертва

           
global
ALPHA BETA

           
yp = [y(1) — ALPHA*y(1)*y(2); -y(2) + BETA*y(1)*y(2)];

Затем
через командную строку введем операторы:

          
global
ALPHA BETA

          
ALPHA = 0.01;

          
BETA = 0.02;

          
[t,y] = ode23(‘lotka2’,[0 10],[1; 1]);

          
plot(t,y)

Команда
global объявляет переменные ALPHA и BETA
глобальными и следовательно, доступными
в функции lotka.m. Таким образом, они могут
быть изменены из командной строки, а
новые решения будут получены без
редактирования М-файла lotka.m.

Для
работы с глобальными переменными
необходимо:

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

  • в
    каждой функции использовать команду
    global перед первым появлением переменной;
    рекомендуется указывать команду
    global в начале M-файла.

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

Специальные
переменные.

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

ans

Последний
результат; если выходная переменная
не указана, то MATLAB использует
переменную ans.

eps

Точность
вычислений с плавающей точкой;
определяется длиной мантиссы и для
PC eps = 2.220446049250313e-016

realmax

Максимальное
число с плавающей точкой, представимое
в компьютере; для PC realmax =
1.797693134862316e+308.

realmin

Минимальное
число с плавающей точкой, представимое
в компьютере; для PC realmin =
2.225073858507202e-308.

pi

Специальная
переменная для числа p:
pi=3.141592653589793e+000.

i,
j

Специальные
переменные для обозначения мнимой
единицы

inf

Специальная
переменная для обозначения символа
бесконечности ?

NaN

Специальная
переменная для обозначения
неопределенного значения — результата
операций типа: 0/0, inf/inf.

computer

Специальная
переменная для обозначения типа
используемого компьютера; для PC —
PCWIN.

flops

Специальная
переменная для обозначения количества
операций с плавающей точкой.

version

Специальная
переменная для хранения номера
используемой версии системы MATLAB.

Соответсвущие
М-функции, генерирующие эти специальные
переменные, находятся в каталоге elmat
и поддержаны online-подсказкой.

Типы данных

В
системе MATLAB определено шесть базовых
типов данных, каждый из которых является
многомерным массивом. Шесть
классов
— это
double, char, sparse, uint8, cell, и
struct. Двумерные
версии этих массивов называются
матрицами, откуда MATLAB и получил свое
имя МАТричная ЛАБоратория.

Диаграмма
принадлежности того или иного объекта
системы MATLAB к одному из классов имеет
следующий вид (рис. 3.1):

Рис.
3.1

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

Другие
типы данных предназначены для таких
специальных приложений, как работа с
разреженными матрицами (sparse), обработка
изображений (uint8), работа с массивами
большой размерности (cell и struct).

Нельзя
задать тип переменной numeric или array. Эти
типы называются виртуальными и служат
только для того, чтобы сгруппировать
переменные, которые имеют общие
атрибуты.

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

Создание
собственных типов и добавление методов
для встроенных типов.

Нижеприведенная таблица содержит
седьмой тип данных — UserObject. Язык MATLAB
позволяет создавать собственные типы
данных и работать с ними по аналогии
со встроенными типами.

Для
встроенных типов данных можно
переопределять метод точно также, как
это делается для объекта. Например,
чтобы задать операцию сортировки для
массива типа uint8, необходимо создать
метод (sort.m или sort.mex) и поместить его в
специальный каталог @uint8.

Следующая
таблица описывает типы данных более
подробно.

Класс

Пример

Описание

Double

[
1 2; 3 4]
5 + 6i

Числовой
массив

удвоенной точности (это наиболее
распространенный тип переменной в
системе MATLAB

Char

‘Привет’

Массив
символов

(каждый символ — длиной 16 битов), часто
именуется строкой.

Sparse

Speye(5)

Разреженная
матрица

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

Cell

{
17 ‘привет’ eye (2)}

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

Struct

A.day
= 12; A.color = ‘Red’; A.mat = magic(3);

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

Uint8

Uint8
(magic (3))

Массив
8-разрядных целых чисел без знаков
.
Он позволяет хранить целые числа в
диапазоне от 0 до 255 в 1/8 части памяти,
требуемой для массива удвоенной
точности. Никакие математические
операции для этих массивов не
определены.

UserObject

inline(‘sin(x)’)

Тип
данных, определяемый пользователем.

Описание
диаграммы
.
Соединительные линии на диаграмме
(рис. 3.1) определяют принадлежность
того или иного типа данных к одному
или нескольким классам.

Пример
Матрица
типа sparse имеет также типы double и numeric.
Операторы
             
isa(S’,sparse’)
             
isa(S’,double’)

             
isa(S’,numeric’)

возвращают
значения 1(истина), то есть S — числовая
разреженная матрица удвоенной точности.

Обратите
внимание, что тип array — массив находится
в вершине диаграммы. Это означает, что
все данные системы MATLAB являются
массивами.

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

В
таблице приведены некоторые из таких
методов:

Класс

Метод

Массив
array

Вычисление
размера (size), длины (length), размерности
(ndims), объединение массивов ([a b]),
транспонирование (transpose), многомерная
индексация (subsindex), переопределение
(reshape) и перестановка (permute) размерностей
многомерного массива.

Массив
ячеек cell

Индексация
с использованием фигурных скобок
{e1,…,en} и разделением элементов списка
запятыми.

Строка
Char

Строковые
функции (strcmp, lower), автоматическое
преобразование к типу double для
применения методов класса double.

Double

Арифметические
и логические операции, математические
функции, функции от матриц.

Numeric

Поиск
(find), обработка комплексных чисел
(real, imag), формирование векторов,
выделение строк, столбцов, подблоков
массива, расширение скаляра.

Sparse

Операции
над разреженными матрицами.

Массив
записей Struct

Доступ
к содержимому поля .field (разделитель
элементов списка — запятая).

Uint8

Операция
хранения (чаще всего используется
с ППП Image Processing Toolbox)

UserObject

Определяется
пользователем

Пустые
массивы.
Ранние
версии системы MATLAB допускали единственную
форму пустого массива размера 0х0,
обозначаемого как [ ]. MATLAB 5 поддерживает
массивы, у которых одна, но не все из
размерностей, равна нулю, то есть
массивы с размерами 1х0, 10х0х20 или [3 4 0
5 2] определяются как пустые.

Квадратные
скобки [ ] продолжают обозначать массив
0х0. Пустые массивы другого размера
могут быть созданы с помощью функций
zeros, ones, rand или eye. Например, для
формирования пустого массива размера
0х5, можно использовать опертор
присваивания
              
E = zeros(0,5).

Основное
назначение пустых массивов состаит
в том, чтобы любая операция, которая
определена для массива(матрицы) размера
m?n, определяла правильный результат
для случая, когда m или n равно нулю.
Размер массива(матрицы) результата
должен соответствовать значению
функции, вычисленной в нуле.

Например,
оператор
               
C = [A B]
требует, чтобы массивы A и B
имели одинаковое число строк. Таким
образом, если массив A имеет размер
m?n, а B — m?p, то C есть массив размера
m?(n+p). Результат будет правильным, если
любой из параметров m, n или p равен
нулю.

Многие
операции в системе MATLAB создают
вектор-строку или вектор-столбец. В
этом случае результат может быть, либо
пустой вектор-строкой
               
r = zeros(1, 0),
либо пустым
вектор-столбцом
              
C = zeros(0, 1).

MATLAB
5 поддерживает правила системы MATLAB 4
для операторов if и while. Например,
условный оператор типа
              
if A, S1, else, S0, end
выполняет оператор S0,
когда A — пустой массив.

Некоторые
функции системы MATLAB такие, как sum, prod,
min и max понижают размерность результата:
если аргумент массив, то результат —
вектор; если аргумент вектор, то
результат — скаляр.

Для
этих функций при пустом массиве входа
получаются следующие результаты:
               
sum([ ]) = 0 ;
             
prod([ ]) = 1 ;
             
max([ ]) = [ ] ;
             
min([ ]) = [ ] .

Both scripts and functions allow you to reuse sequences of
commands by storing them in program files. Scripts are the simplest type of program,
since they store commands exactly as you would type them at the command line.
Functions provide more flexibility, primarily because you can pass input values and
return output values. For example, this function named fact
computes the factorial of a number (n) and returns the result
(f).

function f = fact(n)
    f = prod(1:n);
end

This type of function must be defined within a file, not at the command line. Often,
you store a function in its own file. In that case, the best practice is to use the same
name for the function and the file (in this example, fact.m), since
MATLAB® associates the program with the file name. Save the file either in the
current folder or in a folder on the MATLAB search path.

You can call the function from the command line, using the same syntax rules that
apply to functions installed with MATLAB. For instances, calculate the factorial of
5.

Starting in R2016b, another option for storing functions is to include them at the end
of a script file. For instance, create a file named mystats.m with a
few commands and two functions, fact and perm. The
script calculates the permutation of
(3,2).

x = 3;
y = 2;
z = perm(x,y)

function p = perm(n,r)
    p = fact(n)/fact(n-r);
end

function f = fact(n)
    f = prod(1:n);
end

Call the script from the command
line.

Syntax for Function Definition

The first line of every function is the definition statement, which includes the
following elements.

function keyword
(required)

Use lowercase characters for the keyword.

Output arguments (optional)

If your function returns one output, you can specify the
output name after the function
keyword.

function myOutput = myFunction(x)

If
your function returns more than one output, enclose the output
names in square
brackets.

function [one,two,three] = myFunction(x)

If
there is no output, you can omit
it.

function myFunction(x)

Or
you can use empty square
brackets.

function [] = myFunction(x)

Function name (required)

Valid function names follow the same rules as variable
names. They must start with a letter, and can contain letters,
digits, or underscores.

Note

To avoid confusion, use the same name for both the
function file and the first function within the file.
MATLAB associates your program with the
file name, not the function name.
Script files cannot have the same name as a function in the
file.

Input arguments (optional)

If your function accepts any inputs, enclose their names in
parentheses after the function name. Separate inputs with
commas.

function y = myFunction(one,two,three)

If
there are no inputs, you can omit the
parentheses.

Tip

When you define a function with multiple input or output arguments, list any
required arguments first. This ordering allows you to call your function without
specifying optional arguments.

Contents of Functions and Files

The body of a function can include valid MATLAB expressions, control flow statements, comments, blank lines, and
nested functions. Any variables that you create within a function are stored within
a workspace specific to that function, which is separate from the base
workspace.

Program files can contain multiple functions. If the file contains only function
definitions, the first function is the main function, and is the function that
MATLAB associates with the file name. Functions that follow the main function
or script code are called local functions. Local functions are only available within
the file.

End Statements

Functions end with either an end statement, the end of the
file, or the definition line for a local function, whichever comes first. The
end statement is required if:

  • Any function in the file contains a nested function (a function completely
    contained within its parent).

  • The function is a local function within a function file, and any local
    function in the file uses the end keyword.

  • The function is a local function within a script file.

Although it is sometimes optional, use end for
better code readability.

See Also

function

Related Topics

  • Files and Folders that MATLAB Accesses
  • Base and Function Workspaces
  • Types of Functions
  • Add Functions to Scripts

Понравилась статья? Поделить с друзьями:
  • Лямур агентство праздников
  • Лялин день народный праздник
  • Лягушка путешественница сценарий урока
  • Лягушка путешественница сценарий осеннего праздника
  • Лябиб лерон яфрак б?йр?ме праздник листьев