Elettracompany.com

Компьютерный справочник
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

M последовательность matlab

Нейронные сети в matlab

Login

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

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

М-файлы представляют собой обыкновенные текстовые файлы, содержащие
команды программы MATLAB. Вы можете создавать и модифицировать эти файлы,
используя любой текстовый редактор или текстовый процессор, который
способен сохранять файлы в виде простого текста в формате ASCII. (Это такие
редакторы, как Notepad и WordPad в системе Windows, и emacs и vi — в системах
UNIX.) Для большего удобства вы можете использовать встроенный модуль Editor
(Редактор), который можно запустить с помощью команды edit, сам по себе
(для редактирования нового файла), или выбрав имя существующего М-файла в
текущем каталоге. Для запуска модуля Editor (Редактор) вы можете также
использовать меню File (Файл) или два крайних слева значка на панели
инструментов, как для создания нового М-файла, так и для открытия уже
существующего. Двойной щелчок мышью на М-файле в окне Current Directory
(Текущий каталог) также откроет выбранный файл в модуле Editor (Редактор).

М-файлы-сценарии

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

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

Вы можете заставить программу MATLAB запустить (или выполнить) этот
сценарий, введя команду taski в окне Command Window (Командное окно). (Вам не
следует вводить здесь расширение .m; программа MATLAB автоматически
добавляет расширение, когда производит поиск файлов.) Вывод результатов (но не
команд, с помощью которых вычисляется результат) будет отображен в окне
Command Window (Командное окно). Теперь последовательность команд может
быть легко изменена путем модификации М-файла task1.m. Например, если вы
хотите вычислить также sin(0.0001)/ 0.0001, вы можете модифицировать М-файл:

format long
х = [0.1, 0.01, 0.001, 0.0001];
у = sin(x)./x

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

  • Некоторые переменные, задаваемые при запуске М-файлов-сценариев, будутсохраняться, как если бы вы ввели эти переменные в окне Command Window (Командное окно) напрямую. Например, программа, рассмотренная выше, послужит причиной того, что в будущем все числовые результаты будут отображаться с точностью до 15 знака. Чтобы вернуться к формату с 5 знаками, следует ввести команду format short.

Режим ячейки

Новые возможности программы MATLAB 7 позволяют разделять М-файл —
сценарий на части (элементы), которые называются ячейками. Это особенно полезно,
если ваш М-файл длинный или если вы собираетесь его публиковать (последняя
тема рассматривается в разделе «Публикация М-файлов»). Чтобы запустить
новую ячейку, вставьте строку комментария (которая послужит в качестве
заголовка ячейки), начав эту строку двумя знаками процента %%. Если вы откроете
М-файл в модуле Editor (Редактор) и выберете команду меню Cell => Enable Cell
Mode (Ячейка => Включить режим ячейки), в этом случае под первой панелью
инструментов будет отображена вторая панель. Когда вы щелкнете мышью на
какой-нибудь строке в М-файле, ячейка, которой принадлежит эта строка, будет
выделена бледно-желтым цветом. Вы можете произвести вычисление этой
ячейки, выбрав команду меню Cell => Evaluate Current Cell (Ячейка => Вычислить
текущую ячейку) или щелкнув мышью на значке Evaluate cell (Вычислить ячейку).
Это может быть весьма полезным, если вы внесли изменения только в одну
ячейку и не хотите снова полностью запускать весь сценарий. Имеются также элемент
меню и значок для выполнения операции Evaluate cell and advance
(Вычислить ячейку и далее). Так как вы включили режим ячейки, вы можете также
создать дополнительные ячейки, выбрав команду меню Cell => Insert Cell Divider
(Ячейка => Вставить разделитель ячеек) или щелкнув мышью на значке %+ .

Инициализация М-файлов-сиенариев

Чтобы результаты М-файла-сценария были воспроизводимы, сценарий должен
быть автономным, независимым от других переменных, которые вы можете
задать где-либо в течение сессии программы MATLAB, оставшейся от предыдущих
вычислений графика должна быть также удалена. Например, если вы зададите
переменную с именем sin в окне Command Window (Командное окно), а затем
запустите сценарий task1.m, вы получите сообщение об ошибке, так как в
текущий момент sin будет представлять переменную, а не обычную встроенную
функцию. Помня об этом, вы можете ввести строку clear all в начало М-файла-
сценария, чтобы быть уверенным, что предыдущие настройки переменных не
повлияют на результаты. Вы можете также ввести строку close all в начале
М-файла-сценария, создающего графику, чтобы закрыть все окна изображений и
начать «с чистого листа».
Как отмечалось ранее, команды в М-файле-сценарии не будут автоматически
отображаться в окне Command Window (Командное окно). Если вы хотите, чтобы
команды отображались вместе с результатами, добавьте команду echo on в
начало сценария (нелишним будет также добавить команду echo off в конец
сценария). Тогда и любые комментарии в М-файле будут также отражены. При запуске
длинного М-файла-сценария подобная операция полезна, чтобы отслеживать:
какой вывод какому вводу соответствует.

Ниже представлена версия файла task1.m с более подробными комментариями, в
которой отображается как ввод, так и вывод.

clear all % remove old variable definitions
echo on % display the input in the command window
format long % turn on 15 digit display
x = [0.1, 0.01, 0.001]; % define the x values
у = sin(x)./x % compute the desired quotients
% These values illustrate the fact that the limit of
% sin(x)/x as x approaches 0 is equal to 1.
echo off

Автозагрузка М-файла

При запуске программа MATLAB производит поиск в пути по умолчанию на
предмет М-файла-сценария с именем startup.m. Если вы создадите такой файл, то
команды, которые он содержит, будут запускаться каждый раз, когда запускается
программа MATLAB. Вы можете использовать этот файл для сохранения настроек,
которые переходят из одной сессии в другую, например, изменения текущего
каталога или пути. (Кроме команд cd и addpath, рассмотренных выше, вы
можете использовать команду rmpath для удаления каталогов из пути.)

М-файлы-функиии

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

Давайте вернемся к рассмотренной выше задаче, в которой мы вычисляли
некоторые значения sin(x) /х, где х = 10^b при некоторых значениях b. Кроме
того, предположим, что вы хотите найти наименьшее значение b, для которого
sin(10^b)/ (10^b), и чтобы результат был равен 1 с точностью до 15 знаков.

Ниже представлен М-файл-функция с именем sinelimit.m, составленный с целью
выяснения этого вопроса:

function у = sinelimit (с)
% SINELIMIT computes sin (x)/x for x = 10^(-b)
% where b = 1, . с.
Format long
b = 1:c;
x = 10.^(-b);
у = (sin (x)./x) ‘ ;

Первая строка файла начинается со слова function, которое идентифицирует
файл как М-файл-функцию. (В модуле Editor (Редактор) это зарезервированное
слово выделяется синим цветом.) Первая строка М-файла задает имя функции и
описывает как входящие аргументы (или параметры), так и исходящие значения.
В этом примере функция называется sinelimit. Имя файла (за исключением
расширения .т) и имя функции должны совпадать. Когда вы создаете этот новый
М-файл-функцию в безымянном окне редактора и выбираете команду Save
(Сохранить), модуль Editor (Редактор) сам присваивает файлу имя sinelimit.m.
Функция в нашем примере имеет для ввода один элемент, который внутри М-файла
обозначен как с. В качестве результата возвращается тоже один элемент —
значение у, появляющееся в конце выполнения функции.
Неплохой практикой является снабжать первую строку М-файла-функции одной
или более строками комментариев, разъясняющих, что делает М-файл. При этом
команда help автоматически извлечет данную информацию. Например:

Читать еще:  Решение слау matlab

SINELIMIT computes sin (x)/x for x = 10^(-b)
where b = 1, . . . , с.

Остальные строки М-файла определяют функцию. В данном примере b задается в
качестве строчного вектора, состоящего из целых чисел от 1 до с, затем х
вычисляется из Ь, и, наконец, у определяется из х.

  • Переменные, которые используются в М-файле функции, такие как b, x и у в файле sinelimit.m, являются локальными переменными. Это означает, что, в отличие от переменных, заданных в М-файле-сценарии, эти переменные не связаны с любыми другими переменными с такими же именами, которые вы могли использовать в окне Command Window (Командное окно). Программа MATLAB не запоминает значения этих переменных после того, как М-файл-функция будет выполнен. Для получения более полных сведений обратитесь к разделу «Переменные в М-файлах- функциях» в главе 4.

Обратите внимание, что строки, задающие b, x и у, заканчивается точкой с
запятой. Использование точки с запятой в конце строк определяет отсутствие
вывода результатов для этих строк, то есть результат работы этих строк не будет
отображаться в окне Command Window (Командное окно). Несмотря на то, что
отображение результатов промежуточных вычислений может быть полезным
для отладки, в основном вам следует пресекать весь вывод в М-файле-функции.
Ниже представлен пример, показывающий, как используется функция sinelimit:

» sinelimit (5)
ans =
0.99833416646828
0.99998333341667
0.99999983333334
0.99999999833333
0.99999999998333

Ни одно из значений b от первого до пятого не приводит к желаемому
результату, 1 с точностью до 15 знака. Судя по выведенному результату, можно надеяться
найти ответ на ранее поставленный вопрос, введя команду sinelimit A0).
Попробуйте!

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

Программирование в MatLab

М-файлы

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

Раскройте меню File основного окна MatLab и в пункте New выберите подпункт M-file . Новый файл открывается в окне редактора M-файлов, которое изображено на рисунке.

М-файлы в MatLab бывают двух типов: файл-программы (Script M-Files), содержащие последовательность команд, и файл-функции, (Function M-Files), в которых описываются функции, определяемые пользователем.

Файл-программа

Наберите в редакторе команды, приводящие к построению двух графиков на одном графическом окне

Сохраните теперь файл с именем mydemo.m в подкаталоге work основного каталога MatLab, выбрав пункт Save as меню File редактора. Для запуска на выполнение всех команд, содержащихся в файле, следует выбрать пункт Run в меню Debug . На экране появится графическое окно Figure 1, содержащее графики функций.

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

Очень удобной возможностью, предоставляемой редактором М-файлов, является выполнение части команд. Закройте графическое окно Figure 1. Выделите при помощи мыши, удерживая левую кнопку, или клавишами со стрелками при нажатой клавише Shift, первые четыре команды и выполните их из пункта Text . Обратите внимание, что в графическое окно вывелся только один график, соответствующий выполненным: командам. Запомните, что для выполнения части команд их следует выделить и нажать клавишу F9 .

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

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

Файл-функция

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

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

Слово function в первой строке определяет, что данный файл содержит файл-функцию. Первая строка является заголовком функции, в которой размещается имя функции и списка входных и выходных аргументов. В примере имя функции centering , один входной аргумент X и один выходной — Xc. После заголовка следуют комментарии, а затем — тело функции (оно в данном примере состоит из двух строк), где и вычисляется ее значение. Важно, что вычисленное значение записывается в Xc . Не забудьте поставить точку с запятой для предотвращения вывода лишней информации на экран. Теперь сохраните файл в рабочем каталоге. Обратите внимание, что выбор пункта Save или Save as меню File приводит к появлению диалогового окна сохранения файла, в поле File name которого уже содержится название centering . Не изменяйте его, сохраните файл функцию в файле с предложенным именем!

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

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

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

Создание графика

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

Функция plot имеет различные формы, связанные с входными параметрами, например plot(y) создает кусочно-линейный график зависимости элементов y от их индексов. Если в качестве аргументов заданы два вектора, то plot(x,y) создаст график зависимости y от x . Например, для построения графика функции sin в интервале от 0 до 2π, сделаем следующее

Программа построила график зависимости, который отображается в окне Figure 1

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

Команда hold on позволяет добавлять кривые на существующий график. Функция subplot позволяет выводить множество графиков в одном окне

Печать графиков

Пункт Print в меню File и команда print печатают графику MatLab. Меню Print вызывает диалоговое окно, которое позволяет выбирать общие стандартные варианты печати. Команда print обеспечивает большую гибкость при выводе выходных данных и позволяет контролировать печать из М-файлов. Результат может быть послан прямо на принтер, выбранный по умолчанию, или сохранен в заданном файле.

M последовательность matlab

Minimum elements of an array

Syntax

Description

M = min( A ) returns the minimum elements of an array.

If A is a vector, then min(A) returns the minimum of A .

If A is a matrix, then min(A) is a row vector containing the minimum value of each column.

If A is a multidimensional array, then min(A) operates along the first array dimension whose size does not equal 1 , treating the elements as vectors. The size of this dimension becomes 1 while the sizes of all other dimensions remain the same. If A is an empty array with first dimension 0 , then min(A) returns an empty array with the same size as A .

Читать еще:  Команда plot в matlab

M = min( A ,[], dim ) returns the minimum element along dimension dim . For example, if A is a matrix, then min(A,[],2) is a column vector containing the minimum value of each row.

M = min( A ,[], nanflag ) specifies whether to include or omit NaN values in the calculation. For example, min(A,[],’includenan’) includes all NaN values in A while min(A,[],’omitnan’) ignores them.

M = min( A ,[], dim , nanflag ) also specifies the dimension to operate along when using the nanflag option.

[ M , I ] = min( ___ ) also returns the index into the operating dimension that corresponds to the minimum value of A for any of the previous syntaxes.

M = min( A ,[], ‘all’ ) finds the minimum over all elements of A . This syntax is valid for MATLAB ® versions R2018b and later.

M = min( A ,[], vecdim ) computes the minimum over the dimensions specified in the vector vecdim . For example, if A is a matrix, then min(A,[],[1 2]) computes the minimum over all elements in A , since every element of a matrix is contained in the array slice defined by dimensions 1 and 2.

M = min( A ,[], ‘all’ , nanflag ) computes the minimum over all elements of A when using the nanflag option.

M = min( A ,[], vecdim , nanflag ) specifies multiple dimensions to operate along when using the nanflag option.

[ M , I ] = min( A ,[], ___ ,’linear’) returns the linear index into A that corresponds to the minimum value in A .

C = min( A , B ) returns an array with the smallest elements taken from A or B .

C = min( A , B , nanflag ) also specifies how to treat NaN values.

Examples

Smallest Vector Element

Create a vector and compute its smallest element.

Smallest Complex Element

Create a complex vector and compute its smallest element, that is, the element with the smallest magnitude.

Smallest Element in Each Matrix Column

Create a matrix and compute the smallest element in each column.

Smallest Element in Each Matrix Row

Create a matrix and compute the smallest element in each row.

Smallest Element Involving NaN

Create a vector and compute its minimum, excluding NaN values.

min(A) will also produce this result since ‘omitnan’ is the default option.

Use the ‘includenan’ flag to return NaN .

Smallest Element Indices

Create a matrix A and compute the smallest elements in each column as well as the row indices of A in which they appear.

Minimum of Array Page

Create a 3-D array and compute the minimum over each page of data (rows and columns).

Starting in R2018b, to compute the minimum over all dimensions of an array, you can either specify each dimension in the vector dimension argument, or use the ‘all’ option.

Return Linear Indices

Create a matrix A and return the minimum value of each row in the matrix M . Use the ‘linear’ option to also return the linear indices I such that M = A(I) .

Smallest Element Comparison

Create a matrix and return the smallest value between each of its elements compared to a scalar.

Input Arguments

A — Input array
scalar | vector | matrix | multidimensional array

Input array, specified as a scalar, vector, matrix, or multidimensional array.

If A is complex, then min(A) returns the complex number with the smallest magnitude. If magnitudes are equal, then min(A) returns the value with the smallest magnitude and the smallest phase angle.

If A is a scalar, then min(A) returns A .

If A is a 0-by-0 empty array, then min(A) is as well.

If A has type categorical , then it must be ordinal.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | categorical | datetime | duration
Complex Number Support: Yes

dim — Dimension to operate along
positive integer scalar

Dimension to operate along, specified as a positive integer scalar. If no value is specified, then the default is the first array dimension whose size does not equal 1.

Dimension dim indicates the dimension whose length reduces to 1 . The size(M,dim) is 1 , while the sizes of all other dimensions remain the same, unless size(A,dim) is 0 . If size(A,dim) is 0 , then min(A,dim) returns an empty array with the same size as A .

Consider a two-dimensional input array, A :

If dim = 1 , then min(A,[],1) returns a row vector containing the smallest element in each column.

If dim = 2 , then min(A,[],2) returns a column vector containing the smallest element in each row.

min returns A if dim is greater than ndims(A) .

vecdim — Vector of dimensions
vector of positive integers

Vector of dimensions, specified as a vector of positive integers. Each element represents a dimension of the input array. The lengths of the output in the specified operating dimensions are 1, while the others remain the same.

Consider a 2-by-3-by-3 input array, A . Then min(A,[],[1 2]) returns a 1-by-1-by-3 array whose elements are the minimums computed over each page of A .

Data Types: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

B — Additional input array
scalar | vector | matrix | multidimensional array

Additional input array, specified as a scalar, vector, matrix, or multidimensional array. Numeric inputs A and B must either be the same size or have sizes that are compatible (for example, A is an M -by- N matrix and B is a scalar or 1 -by- N row vector). For more information, see Compatible Array Sizes for Basic Operations.

If A and B are datetime, duration, or categorical arrays, then they must be the same size unless one is a scalar.

A and B must be the same data type unless one is a double . In that case, the data type of the other array can be single , duration , or any integer type.

If A and B are ordinal categorical arrays, they must have the same sets of categories with the same order.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | categorical | datetime | duration
Complex Number Support: Yes

Иллюстрированный самоучитель по MatLab

М-файлы сценариев и функций. Структура и свойства файлов сценариев.

Итак, мы установили, что работа в командном режиме (сессия) не является программированием. Внешним атрибутом последнего в MATLAB служит задание последовательности действий по программе, записанной в виде m-файла. В уроке 5 было показано, что для создания m-файлов может использоваться как встроенный редактор, так и любой текстовый редактор, поддерживающий формат ASCII. Подготовленный и записанный на диск m-файл становится частью системы, и его можно вызывать как из командной строки, так и из другого m-файла. Есть два типа m-файлов: файлы-сценарии и файлы-функции. Важно, что в процессе своего создания они проходят синтаксический контроль с помощью встроенного в систему MATLAB редактора/отладчика m-файлов.

Файл-сценарий, именуемый также Script-файлом, является просто записью серии команд без входных и выходных параметров. Он имеет следующую структуру:

Важны следующие свойства файлов-сценариев:

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

Основным комментарием является первая строка текстовых комментариев, а дополнительным – последующие строки. Основной комментарий выводится при выполнении команд lookfor и help имя_каталога. Полный комментарий выводится при выполнении команды help Имя_файла. Рассмотрим следующий файл-сценарий:

Первые три строки здесь – это комментарий, остальные – тело файла. Обратите внимание на возможность задания комментария на русском языке. Знак % в комментариях должен начинаться с первой позиции строки. В противном случае команда help name не будет воспринимать комментарий (иногда это может понадобиться) и возвратит сообщение вида No help comments found in-name.m.

Обратите внимание на то, что такой файл нельзя запустить без предварительной подготовки, сводящейся к заданию значений переменным xmin и хmах, использованным в теле файла. Это следствие первого свойства файлов-сценариев – они работают с данными из рабочей области. Переменные, используемые в файлах-сценариях, являются глобальными, т. е. они действуют одинаково в командах сессии и внутри программного блока, которым является файл-сценарий. Поэтому заданные в сессии значения переменных используются и в теле файла. Имена файлов-сценариев нельзя использовать в качестве параметров функций, поскольку файлы-сценарии не возвращают значений. Можно сказать, что файл-сценарий – это простейшая программа на языке программирования MATLAB [Файлы-сценарии нельзя компилировать. Перед компилированием их нужно преобразовать в файлы-функции – Примеч. ред.].

Читать еще:  Matlab онлайн бесплатно


Рис. 20.2. Пример работы с файлом pcr

MatLab Руководство для начинающих. Matlab сокращение от англ. Matrix Laboratory

5.2. Оператор цикла while

Язык программирования MatLab имеет два оператора цикла: while и for. С их помощью, например, выполняется программирование рекуррентных алгоритмов, подсчета суммы ряда, перебора элементов массива и многое другое.

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

Здесь означает условное выражение подобное тому, которое применяется в операторе if, и цикл while работает до тех пор, пока это условие истинно.

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

Приведем пример работы цикла while для подсчета суммы ряда :

S = 0; % начальное значение суммы
i=1; % счетчик суммы
while i 20 % если S > 20,
break; % то цикл завершается
end
end % конец цикла
disp(S); % отображение суммы 21 на экране

В данном примере второе условие завершения цикла, когда S будет больше 20, записано в самом цикле и с помощью оператора break осуществляется выход из цикла на функцию disp(), стоящую сразу после цикла while.

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

a = [1 2 3 4 5 6 7 8 9];

исключая элемент с индексом 5. Такую программу можно записать следующим образом:

S = 0; % начальное значение суммы
a = [1 2 3 4 5 6 7 8 9]; % массив
i=0; % счетчик индексов массива
while i = : :

end

Рассмотрим работу данного цикла на примере реализации алгоритма поиска максимального значения элемента в векторе:

a = [3 6 5 3 6 9 5 3 1 0];
m = a(1); % текущее максимальное значение
for i=1:length(a) % цикл от 1 до конца вектора с
% шагом 1 (по умолчанию)
if m m,
m = a(i); % то m = a(i)
end
end % конец цикла for
disp(m);

В данном примере цикл for задает счетчик i и меняет его значение от 1 до 10 с шагом 1. Обратите внимание, что если величина шага не указывается явно, то он берется по умолчанию равным 1.

В следующем примере рассмотрим реализацию алгоритма смещения элементов вектора вправо, т.е. предпоследний элемент ставится на место последнего, следующий – на место предпоследнего, и т.д. до первого элемента:

a = [3 6 5 3 6 9 5 3 1 0];
disp(a);
for i=length(a):-1:2 % цикл от 10 до 2 с шагом -1
a(i)=a(i-1); % смещаем элементы вектора а
end % конец цикла for
disp(a);

Результат работы программы

3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1

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

6. Решения уравнения

6.1. Графический метод решения уравнений

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

На данном графике представлены графики функций y=sin(t)/t и (x/5) 2 +y 2 =1. Как не трудно заметить данные функции имеют три точки пересечения.

6.2. Поиск решения уравнения

Графическим методом можно лишь примерно оценить решение. Для более точного нахождения решения в пакете MatLAB необходимо воспользоваться функцией fsolve(уравнение, начальное значение). Позже мы познакомимся как с помощью данной функции решать системы уравнений. В простейшем случае решаемое уравнение можно указать можно указать в одинарных кавычках, например: ‘x*x-abs(x)’. Но данная функция имеет три решения, представленных на рис.

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

fsolve(‘x*x-abs(x)’,-2), ans = -1.0000;

fsolve(‘x*x-abs(x)’,0.6), ans = 1.0000;

fsolve(‘x*x-abs(x)’,0.4), ans = 7.9062e-008.

Функция fsolve продолжает итерационную процедуру до тех пор пока она не найдет решение с заданной точностью. По этому в нашем примере мы и получили 7.9062e-008 а не 0.

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

7. М-файлы

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

Раскройте меню File основного окна MatLab и в пункте New выберите подпункт M-file. Новый файл открывается в окне редактора M-файлов, которое изображено на рисунке.

М-файлы в MatLab бывают двух типов: файл-программы (Script M-Files), содержащие последовательность команд, и файл-функции, (Function M-Files), в которых описываются функции, определяемые пользователем.

7.2. Файл-программа

Наберите в редакторе команды, приводящие к построению двух графиков на одном графическом окне

Сохраните теперь файл с именем mydemo.m в подкаталоге work основного каталога MatLab, выбрав пункт Save as меню File редактора. Для запуска на выполнение всех команд, содержащихся в файле, следует выбрать пункт Run в меню Debug. На экране появится графическое окно Figure 1, содержащее графики функций.

Очень удобной возможностью, предоставляемой редактором М-файлов, является выполнение части команд. Закройте графическое окно Figure 1. Выделите при помощи мыши, удерживая левую кнопку, или клавишами со стрелками при нажатой клавише Shift, первые четыре команды и выполните их из пункта Text. Обратите внимание, что в графическое окно вывелся только один график, соответствующий выполненным: командам. Запомните, что для выполнения части команд их следует выделить и нажать клавишу F9.

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

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

7.3. Файл-функция

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

Функция average — это достаточно простой M-файл, который вычисляет среднее значение элементов вектора:
function y = average (x)
% AVERAGE Среднее значение элементов вектора.
% AVERAGE(X), где X — вектор. Вычисляет среднее значение элементов вектора.
% Если входной аргумент не является вектором, генерируется ошибка.
[m,n] = size(x);
if (

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

Структура М-функции. 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-файле, она должна быть тщательно составлена.

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

Имя файла, содержащего М-функцию, составляется из имени функции и расширения “.m”.

Ссылка на основную публикацию
Adblock
detector