1.4. Программы и функции на языке пакета MATLAB.
Язык пакета MATLAB располагает средствами для организации более сложных по сравнению с рассмотренными алгоритмов вычислений с использованием условных операторов и операторов цикла. Условный оператор может быть простой формы: IF переменная, оператор, ..., оператор, END. Операторы выполняются, если все элементы переменной отличны от нуля. Переменная обычно является результатом выполнения операций отношения или логических операций & (И), | (ИЛИ), ~ (НЕ). В режиме диалога условный оператор начнет выполняться после того, как будет введен соответствующий ему оператор END. Более сложная форма условного оператора может включать оператор ELSEIF, что означает " иначе, если" и оператор ELSE - " иначе" ( в слове ELSEIF не должно быть пробела между ELSE и IF). Оператор END закрывает всю конструкцию. Например: IF i==j A(i, j)=2; ELSEIF ABS(i-j)==1 A(i, j)=-1; ELSE A(i, j)=0; END При выполнении условия в операторе IF или ELSEIF последовательность операторов выполняется до тех пор, пока не встретится оператор ELSEIF, ELSE или END, относящийся к данному незавершенному условному оператору. Среди выполняемых операторов также могут быть условные операторы, которые должны заканчиваться своим оператором END. Оператор цикла FOR имеет вид: FOR переменная=выражение, оператор, ..., оператор, END. В общем случае переменная - это вектор, а выражение - матрица, столбцы которой по одному присваиваются переменной, после чего выполняются операторы тела цикла, заканчивающегося оператором END. Если выражение - вектор-строка, то переменная - скаляр. Примеры операторов цикла: 1. FOR i=1: n FOR j=1: n A(i, j)=1/(i+j-1); END END 2. FOR s=1. 0: -0. 1: 0. 0, v=v+s^2; END 3. FOR E=EYE(n), Y=Y+A*E; END. В последнем примере EYE(n)- единичная матрица размером
n x n и переменной Е последовательно присваиваются значения единичных векторов длины n. Если в первом примере в качестве тела внутреннего цикла использовать приведенную выше последовательность с условными операторами, получим программу для определения трехдиагональной матрицы A, элементы главной диагонали которой равны 2, соседних верхней и нижней диагоналей - -1, остальные элементы равны нулю. Оператор цикла WHILE имеет вид: WHILE переменная, оператор, ..., оператор, END. Операторы тела цикла выполняются до тех пор, пока все элементы переменной отличны от нуля, например: e=0; f=1; n=1; a=49; WHILE ABS(f-e)> 1. 0E-3 e=f; f=f+SQRT(a/n^3); n=n+1; END Цикл не будет выполняться до тех пор, пока не введен оператор END. Каждый оператор END соответствует ближайшему незавершенному оператору IF, FOR или WHILE. Если среди операторов тела цикла имеется оператор BREAK (обычно в условном операторе) его выполнение приведет к выходу из цикла. Все переменные, введенные в сеансе работы в среде MATLAB или полученные в процессе вычислений, образуют рабочее пространство. Для выдачи на экран списка переменных рабочего пространства служит команда WHO. По команде WHOS выдается список переменных с указанием их размерностей и количества отведенной для каждой из них памяти, а также размер свободной памяти. Для удаления переменных из рабочего пространства служит команда CLEAR < список переменных>, переменные в списке разделяются пробелами. При выполнении этой команды без параметров удаляются все переменные из рабочего пространства. После выполнения команды PACK производится " сжатие" памяти, то есть, перепись переменных рабочего пространства в компактную область, в результате чего освобождается память для новых переменных. Последовательность операторов MATLAB, реализующая некоторый алгоритм вычислений, может быть с помощью любого редактора записана во внешний файл (в каталог пользователя) с определенным именем, которому следует дать расширение 'M', например, SCRIPT. M. Это будет M-файл типа сценария, для исполнения которого в среде MATLAB достаточно ввести его имя, например, SCRIPT. Переменные, заданные до выполнения такого файла, доступны в нем, а полученные в процессе его выполнения, доступны после его завершения.
Другой тип М-файла - это функция, которая может иметь списки входных и выходных формальных аргументов. Первая строка такого файла должна иметь вид: FUNCTION [список выходных] = < имя функции> (cписок входных) аргументов аргументов Имя файла должно совпадать с именем функции. Идентификаторы в списке фактических выходных аргументов разделяются запятыми или пробелами. Переменные в списке входных аргументов разделяются запятыми, в качестве фактических входных аргументов при вызове функции могут использоваться выражения. Значения фактических входных аргументов передаются формальным аргументам и по завершении функции не изменяются (побочный эффект отсутствует). Все переменные внутри тела функции - локальные, и доступными после выполнения будут только те, что перечислены в списке выходных аргументов. Пример описания функции приведен в 1. 6. Количества фактических и формальных входных или выходных аргументов могут не совпадать. Имеется возможность анализа внутри тела функции числа фактических входных и выходных аргументов при каждом конкретном вызове функции. Для этого служат переменные NARGIN для входных аргументов и NARGOUT для выходных. Предусматривая анализ этих переменных в алгоритме вычисления функции, можно обеспечить более удобный для пользователя способ обращения к функции. Для того, чтобы переменные из рабочего пространства сделать доступными внутри тела функции, необходимо выполнить команду GLOBAL < список переменных>, разделяя переменные списка пробелами. Таким способом передачи данных следует пользоваться в том случае, если невозможно расширить список входных аргументов функции.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|