Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КІТ MATLAB Заочники. Методические указания к вы...doc
Скачиваний:
13
Добавлен:
17.09.2019
Размер:
837.63 Кб
Скачать

Работа в командном режиме

Как было сказано выше, работа в командном режиме осуществляется в окне Command Window. Команды могут вводиться пользователем в режиме диалога, либо загружаться из заранее подготовленных текстовых файлов с расширением “.m” – так называемых m-файлов системы MATLAB. Работа с системой в режиме диалога происходит по правилу «задал вопрос, получил ответ». Вы набираете вычисляемое выражение с клавиатуры, при необходимости редактируете его в командной строке и завершаете ввод нажатием клавиши ENTER.

Для указания места ввода команды используется сдвоенный символ “больше” – >> :

>> x=2+3

Знак равенства, привычный математикам, используется для присвоения значения результата вычислений переменной, в данном случае “x”. После ввода команды и нажатия клавиши ENTER, получим результат:

x =

5

Если не указана переменная для значения результата вычислений, то MATLAB назначает такую переменную, присваивая ей имя ans – от английского слова “answer” – ответ:

>> 2*2

ans =

4

Для редактирования введенного выражения вполне достаточно воспользоваться клавишами Backspace и Delete или буфером обмена Windows, однако в MATLAB существует и специальный строчный редактор;

Для блокировки вывода результата вычислений выражения, после него ставится знак “точка с запятой” – “;”:

>> x=5-3;

>>

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

>> y=2+3-...

4*5

y =

-15

Следует отметить, что знака “” надо ставить только после оператора (см. ниже).

С помощью стрелочек клавиатуры "вверх" и "вниз" можно вызывать в командную строку ранее выполнявшиеся команды для редактирования и повторного выполнения.

Для просмотра всех выполнявшихся в течение сеанса работы вычислений можно передвигаться в окне команд с помощью вертикальной линейки прокрутки либо клавиш PageUp и PageDown.

Для очистки окна Command Window используется функция clc.

Основные элементы и понятия языка matlab

Математические выражения

Основным понятием математической системы является математическое выражение. Математическое выражение задает то, что должно быть вычислено в численном или символьном виде.

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

a=5-3 sin(pi/2) plot(x,y,'--rs','LineWidth',2)

Числа

Число – простейший объект языка MATLAB, представляющий количественные данные. Числа могут быть: целыми, дробными, с фиксированной и плавающей точкой.

Целое число         

Дробное число         

Число с плавающей точкой

>> 2

ans =

2

>> 1.5

ans =

1.5000

>> 2.1e+5

ans =

210000

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

Числа могут быть комплексными. Такие числа содержат действительную и мнимую части. Мнимая часть имеет множитель i (или j), означающий корень квадратный из -1:

>> z=2-3i

z =

2.0000 - 3.0000i

По умолчанию в MATLAB все операции над числами выполняются в формате с двойной точностью. Так, присваивая переменной х значение 2+2, мы фактически определяем переменную х типа double. Тип переменной отображается в окне рабочей области (Workspace) в колонке Class.

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

Несмотря на то, что тип чисел (данных) в большинстве случаев является double, форматы представления результатов могут отличаться. Задание формата сказывается только на форме вывода чисел. Вычисления все равно происходят в формате двойной точности, а вывод чисел возможен в любом удобном для пользователя виде. Представления в различных форматах будут иметь следующий вид:

format short 1.3333 0.0000

format short e 1.3333E+000 1.2345E-006

format long 1.333333333333338 0.000001234500000

format long e 1.333333333333338E+000 1.234500000000000E-006

format bank 1.33 0.00

По умолчанию в MATLAB формат вывода чисел – short.

Переменные и константы

Переменные – это имеющие имена объекты, способные хранить некоторые данные. Переменные могут быть числовыми, символьными, векторными и матричными. Переменным можно задавать определенные значения с помощью используется операции присваивания (знак “=”):

y=5 w=1::7 A=[2 3; 0 -3]

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

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

MATLAB чувствителен к регистру. Это значит что переменные x и X – разные. (Соответственно разные и sysw0 и sysW0).

Имя переменной должно начинаться с буквы латинского алфавита и может содержать только буквы латинского алфавита, цифры и знак подчеркивания “_”.

>> f11=1;

>> Global_x_2=f11;

Global_x_2=

1

Также могут использоваться и символьные переменные, при этом символьные значения заключаются в апострофы:

>> s='Snow'

s =

Snow

Если в апострофы помещено математическое выражение, то оно не вычисляется и рассматривается просто как цепочка символов:

>> s='3+5/2'

s =

3+5/2

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

Константа – это предварительно определенное числовое или символьное значение, представленное уникальным именем. Символьные константы представляют собой цепочки символов, заключенных в кавычки. Числа являются безымянными числовыми константами. Остальные константы в MATLAB принято назвать системными переменными. Системные переменные задаются системой при загрузке и могут переопределяться в течении сеанса работы.

Основные системные переменные, применяемые в системе MATLAB, указаны ниже:

i или j –мнимая единица (корень квадратный из –1);

pi – число π = 3,1415926…;

eps – погрешность операций над числами с плавающей точкой (2–52);

realmin – наименьшее число с плавающей точкой (2–1022);

realmax – наибольшее число с плавающей точкой (21023)

inf – значение машинной бесконечности:

>> 1/0

ans =

Inf

NaN – указание на нечисловой характер данных (Not a Number):

>> 0/0

ans =

NaN

ans – переменная, хранящая результат последней операции.

Системные переменные могут переопределяться. Можно задать системной переменной иное значение, например, задать новое значение погрешности вычислений. Однако необходимо быть внимательным: так, использование переменных i и j в качестве индексов в циклах может привести впоследствии к путанице в операциях с комплексными числами.

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

Уничтоженная переменная становится неопределенной. Попытка использовать неопределенную переменную приведет к выдаче сообщения об ошибке.

Операторы и функции

Оператор – это специальное обозначение для определенной операции над данными – операндамиаргумент операции. Например, простейшими арифметическими операторами являются знаки суммы “+”, вычитания “–”, умножения “*” и деления “/”. Операторы используются совместно с операндами. Например, в выражении

>> x+3

знак “+” является оператором сложения, а числа x и 3 – операндами. В системе MATLAB операндами выступают не только числа (скаляры) но и вектора, матрицы, масссивы. Операторы также являются распространенными объектами математических выражений и языков программирования.

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

Аналогично, для операторов отношения (больше, меньше, равно) в системе MATLAB операндами могут быть не только числа, но и векторы, матрицы, массивы и символьные выражения.

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

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

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

>> 2*sin(pi/2)

ans =

2

Функции в общем случае имеют список аргументов (параметров), заключенный в круглые скобки. Например, функция Бесселя записывается как bessel(NU,X). В данном случае список параметров содержит два аргумента – NU в виде скаляра и X в виде вектора. Многие функции допускают ряд форм записи, отличающихся списком параметров. Если функция возвращает несколько значений, то она записывается в виде:

[Y1, Y2,...]=func(X1, X2,...)

где Y1, Y2,... – список выходных параметров и X1, X2,... – список входных аргументов (параметров). Со списком элементарных функций можно ознакомиться, выполнив команду help elfun. Это наиболее известный класс математических функций. Сюда входят алгебраические, арифметические, тригонометрические и гиперболические функции, функции комплексной переменной, функции округления и определения знака. Необходимо помнить, что в тригонометрических функциях углы измеряются в радианах. Например, очень необходимые функции для операций с комплексной переменной в таких приложениях, как теория автоматического управления, выполняют следующие вычисления:

real(z)  – возвращает действительную часть комплексного числа;

imag(z)  – возвращает мнимую часть комплексного числа;

abs(z)  – возвращает модуль комплексного числа; используется функция,

angle(z) – возвращает фазу комплексного числа.

Список специальных функций выводится с помощью команды help specfun. Список основных операторов языка MATLAB – help lang.

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

Каждый оператор имеет аналогичную по назначению функцию. Например, оператору матричного умножения “*” соответствует функция mtimes(x,y).

Вектор. Матрица. Массив.

MATLAB – система, специально предназначенная для проведения сложных вычислений с векторами, матрицами и массивами. При этом она по умолчанию предполагает, что каждая заданная переменная – это как минимум матрица размером 1×1. Например, если записано выражение:

>> x=5

x =

5

то это значит, что x – это матрица с единственным элементом, имеющим значение 5, то есть x – это скаляр. Таким образом, скаляр можно определить как массив, состоящий из одного элемента (массив нулевого порядка), или как матрицу размером 1×1.

Вектор представляет собой набор значений, записанных в строку или столбец. Следовательно, вектор можно определить как одномерный массив размером 1×n – для вектора-строки и n×1 – для вектора-столбца, где n – количество элементов вектора.

Матрица представляет собой набор значений, записываемый в виде прямоугольной таблицы элементов, размер которой определяется количеством ее строк и столбцов. Другими словами, матрица – это двумерный массив размерностью m×n, где m – количество строк, n – количество столбцов.

В общем случае массив именованный набор однотипных данных, обращение к которым осуществляется по индексу. Количество индексов определяют размерность массива. Как было сказано выше, MATLAB оперирует как минимум массивами второго порядка. Двумерный массив является частным случаем многомерного массива. Многомерные массивы характеризуются размерностью более двух. Размерность массива – это число измерений в пространственном представлении массива. Фактически, многомерный массив представляет собой упорядоченный набор равных между собой по количеству строк и столбцов массивов на единицу меньшей размерности. Следует так же отметить, что массивы более высоких порядков (более чем 2) не часто встречаются, и работа с ними будет обсуждаться отдельно.

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

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

>> Vrow=[1, 2, 4]

Vrow =

1 2 4

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

>> Vcol=[1; 2; 4]

Vcol =

1

2

4

Матрица задается построчно, то есть в квадратных скобках сначала записываются через запятую (или пробел) элементы первой строки, поле чего ставится знак “;” и далее записываются через запятую элементы следующей строки. Например, требуется ввести следующую матрицу размером 3×4:

.

В MATLAB эта запись будет выглядеть так:

>> A=[2 0 1 -1; 4, 4, 3.5 0; -5, 1.5, 0, -1]

A =

2.0000 0 1.0000 -1.0000

4.0000 4.0000 3.5000 0

-5.0000 1.5000 0 -1.0000

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

для вектора:

>> d=Vcol(2)

d =

2

для матрицы:

>> A(1,4)

ans =

-1

Возможен ввод элементов матриц и векторов в виде арифметических выражений, содержащих любые доступные системе функции, при этом все они должны быть одинаковой размерности:

>> B=[2+2/(3+4), exp(5), sqrt(361)]

B =

2.2857 148.4132 19.0000

Операции с векторами и матрицами

Как было сказано выше, в MATLAB подавляющее большинство операторов относится к матричным операциям. Это говорит о том, что все операторы, выводимые с помощью команды help ops, могут производить действия над массивами. (Следует отметить, что в дальнейшем будем использовать только арифметические операторы и операторы отношения, если это не будет указано дополнительно.)

Матричные операции ограничены определенными условиями. Для того чтобы выполнить операции сложения “+” и вычитания “-”, массивы должны иметь одинаковый размер.

MATLAB различает два вида операций умножения, деления и возведения в степень: матричное и поэлементное. Операции матричного умножения, деления и возведения в степень выполняются только над массивами 1-ого и 2-ого порядка – векторами и матрицами – по правилам векторного произведения, известного из курса векторной алгебры. Например, чтобы матрично умножить два вектора, необходимо, чтобы количество столбцов первого вектора равнялось количеству строк второго:

>> C=[1,2,3;3,2,1;-1,0,-2], D=[0,2;4,3;1,0]

C =

1 2 3

3 2 1

-1 0 -2

D =

0 2

4 3

1 0

>> C*D

ans =

11 8

9 12

-2 -2

Обратное произведение – D*C – вызовет ошибку. Для векторов матричное произведение будет выполняться следующим образом:

>> x=[1,2,3], y=[-1;3;0]

x =

1 2 3

y =

-1

3

0

>> x*y

ans =

5

>> y*x

ans =

-1 -2 -3

3 6 9

0 0 0

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

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

x=[1,2,3], y=[-1,3,0]

x =

1 2 3

y =

-1 3 0

>> x.*y

ans =

-1 6 0

>> x./y

ans =

-1.0000 0.6667 Inf

>> x.^y

ans =

1 8 1

Для матриц:

>> P=[-3,2;3,1], Q=[0,2;-1,1]

P =

-3 2

3 1

Q =

0 2

-1 1

>> P/Q

ans =

-0.5000 3.0000

2.0000 -3.0000

>> P./Q

ans =

-Inf 1

-3 1

Отметим, что на 0 делить можно: получим Inf – бесконечность.

Можно также выполнять алгебраические операции между массивом и скаляром (числом), которые, по сути, будут поэлементными. Например:

>> y=[-1,3,0]

y =

-1 3 0

>> y+2

ans =

1 5 2

>> P=[-3,2;3,1]

P =

-3 2

3 1

>> 2*P

ans =

-6 4

6 2

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

В операциях с векторами и матрицами важную роль играет оператор двоеточие – “:”. Он используется для формирования упорядоченных числовых последовательностей. Такие последовательности нужны, например, для создания векторов или для задания значений абсциссы при построении графиков. Выражения с оператором “:” могут также использоваться в качестве аргументов функций для получения их множественных значений. Следующее выражение описывает возрастающую последовательность чисел с заданным шагом:

>> p=3:2:11

p =

3 5 7 9 11

Здесь первый операнд – “3” – задает начальное значение последовательности, второй – “2” – шаг приращения, и третий – “11” – конечное значение последовательности. Если шаг не задан, то он принимает значение 1, при этом ставится только один знак двоеточия:

>> p=5:10

p =

5 6 7 8 9 10

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

>> p=10:-3:1

p =

10 7 4 1

Приведем несколько полезных примеров использования двоеточия:

1. Выделение столбца или строки из матрицы. Пусть имеется матрица 3×4. Выделим второй столбец и третью сроку:

>> G=[1 2 3 4;-2 -3 0 1; 1 0 1 2]

G =

1 2 3 4

-2 -3 0 1

1 0 1 2

>> h1=G(:,2)

h1 =

2

-3

0

>> h2=G(3,:)

h2 =

1 0 1 2

Двоеточие, по сути, говорит, что нам нужны все строки из второго столбца (G(:,2)) или все столбцы из третей строки (G(3,:)).

2. Удаление столбца или строки. В этом случае выделяется строка или столбец (см. выше) и присваивается им значение пустого массива – [ ] – пустые квадратные скобки. Например, требуется удалить из матрицы G 2-ю строку и 4-й столбец:

>> G(2,:)=[]

G =

1 2 3 4

1 0 1 2

>> G(:,4)=[]

G =

1 2 3

1 0 1

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

>> B=[1 3 2 -4 2 0 -1]

B =

1 3 2 -4 2 0 -1

>> B(2:5)=[]

B =

1 0 -1

где мы удалили элементы вектора со второго по пятый.

Еще одной операцией над матрицами является транспонирование – получение новой матрицы из исходной, путем замены строк на столбцы. Например:

>> y=[-1,3,0]

y =

-1 3 0

>> y'

ans =

-1

3

0

>> D=[0,2;4,3;1,0]

D =

0 2

4 3

1 0

>> D=D'

D =

0 4 1

2 3 0

Также стоит отметить некоторые функции формирования матриц:

• eye() – формирует единичную матрицу;

• ones() – формирует матрицу, состоящую из единиц;

• zeros() – формирует матрицу, состоящую из нулей.

В качестве аргументов функций указывается размер матрицы. Если матрица квадратная, то указывается один аргумент.

Другие функции для работы с матрицами будут рассмотрены позднее, по мере надобности.

М-файлы.

Основы редактирования и отладки m-файлов. Интерфейс редактора m-файлов

Ранее мы рассматривали простые примеры, для выполнения которых требовалось набрать несколько команд. При этом общение с системой происходило на уровне командных строк. Такой режим работы хорош, когда сеанс работы в среде MATLAB является коротким и не содержит повторяющихся операций.

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

Программы в системе MATLAB представлены m-файлами. Для подготовки, редактирования и отладки m-файлов (и файлов различных языков программирования) служит специальный многооконный редактор. Он выполнен как типичное приложение Windows. Редактор можно вызвать командой edit из командной строки или командой New → M-file из меню File. После чего появится следующее окно:

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

Следует отметить, что MATLAB предъявляет требования к имени файла, которое аналогично требованию к названию переменной и имени функции: имя файла должно начинаться с буквы латинского алфавита и может содержать только буквы латинского алфавита, цифры и знак подчеркивания “_”.

После записи файла на диск можно заметить, что команда Run в меню Tools (Инструменты) редактора становится активной (до записи файла на диск она пассивна) и позволяет произвести запуск файла. Запустив команду Run, можно наблюдать исполнение m-файла, например, вывод результата вычислений в командное окно или построение функции в графическом окне.

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

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

Редактор/отладчик m-файлов выполняет синтаксический контроль программного кода по мере ввода текста. При этом используются следующие цветовые выделения:

• ключевые слова языка программирования – синий цвет;

• операторы, константы и переменные – черный цвет;

• комментарии после знака % – зеленый цвет;

• символьные переменные (в апострофах) – зеленый цвет;

• синтаксические ошибки – красный цвет.

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

Панель инструментов редактора и отладчика

Назначение кнопок панели инструментов редактора/отладчика (слева направо) следующее:

New – создание нового m-файла;

Open – вывод окна загрузки файла;

Save – запись файла на диск;

Print – печать содержимого текущего окна редактора;

Cut – вырезание выделенного фрагмента и перенос его в буфер;

Copy – копирование выделенного объекта в буфер;

Paste – размещение фрагмента из буфера в позиции текстового курсора;

Undo – отмена предшествующей операции;

Redo – повтор отмененной операции;

Find text – нахождение указанного текста;

Show function – показ функции;

Set/Clear Breakpoint – установка/сброс точки прерывания;

Clear All Breakpoints – сброс всех точек прерывания;

Step – выполнение шага трассировки;

Step In – пошаговая трассировка с заходом в вызываемые m_файлы;

Step Out – пошаговая трассировка без захода в вызываемые m_файлы;

Save and Run – запись и сохранение;

Exit Debug Mode – выход из режима отладки.

Понятие о файлах-сценариях и файлах-функциях

Здесь полезно отметить, что m-файлы, создаваемые редактором/отладчиком, делятся на два класса:

• файлы_сценарии – файлы не имеющие входных параметров;

• файлы_функции – файлы имеющие входные параметры полноценные процедуры.

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

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

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

Ранее было показано, что для создания m-файлов может использоваться как встроенный редактор, так и любой текстовый редактор, поддерживающий форматы ASCII и Unicode. Подготовленный и записанный на диск m-файл становится частью системы, и его можно вызывать как из командной строки, так и из другого m-файла.

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

%Основной комментарий

%Дополнительный комментарий

Тело файла с любыми выражениями

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

• они не имеют входных и выходных аргументов;

• работают с данными из рабочей области;

• в процессе выполнения не компилируются;

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

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

%Sinus solver

%Вычисляет значения синуса

%в интервале от 0 до 2pi с шагом pi/6

x=0:pi/6:2*pi;

y=sin(s); y’

Первые три строки здесь – это комментарий, остальные – тело файла. Знак % в комментариях должен начинаться с первой позиции строки. В противном случае команда help name не будет воспринимать комментарий. Командой type Имя_файла можно вывести полный листинг файла.

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

Структура M-файла-функции

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

function var=f_name(Список_параметров)

%Основной комментарий

%Дополнительный комментарий

Тело файла с любыми выражениями

var=выражение

M-файл-функция имеет следующие свойства:

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

• функция возвращает свое значение и может использоваться в виде name(Список_параметров) в математических выражениях;

• все переменные, имеющиеся в теле файла-функции, являются локальными, то есть действуют только в пределах тела функции;

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

• правила вывода комментариев те же, что у файлов-сценариев;

• файл-функция служит средством расширения системы MATLAB;

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

Последняя конструкция var=выражение вводится, если требуется, чтобы функция возвращала результат вычислений.

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

function [var1,var2,…]=f_name(Список_параметров)

%Основной комментарий

%Дополнительный комментарий

Тело файла с любыми выражениями

var1=выражение

var2=выражение

...

2-D графика

Для отображения функций одной переменной f=y(x) почти всегда используются графики в декартовой (прямоугольной) системе координат. При этом обычно строятся две оси – горизонтальная OX и вертикальная OY, и задаются координаты x и y, определяющие узловые точки функции y(x). Другими словами каждому элементу из массива (в данном случае) x ставится в соответствие элемент массива (в данном случае) y, полученный посредством вычисления функции y(x). Эти точки соединяются друг с другом отрезками прямых, то есть осуществляется линейная интерполяция для промежуточных точек. Совокупность точек y(x) задается векторами X и Y одинакового размера.

Рассмотрим пример: построить график функции . Обычно при условии построения графика в MATLAB указывают пределы графика и шаг – расстояние между двумя соседними точками графика по оси абсцисс. Пусть график строится в пределах от 2 до 8 с шагом 0.05. Алгоритм построения графика в общем случае можно описать следующим образом.

Шаг 1. Определить базовый массив x:

x=[2:0.05:8];

Шаг 2. Произвести поэлементное вычисление значения массива y:

y=sin(x).^3+sqrt(x);

Шаг 3. Записать функцию, воспроизводящую заданную функцию в графическом окне, которое активизируется автоматически:

plot(x,y)

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

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

• plot(X,Y) строит график функции y(x), координаты точек (x,y) которой берутся из векторов одинакового размера Y и X.

Если X или Y – матрица, то строится семейство графиков по данным, содержащимся в колонках матрицы.

x=[0 1 2 3 4 5];

Y=[sin(x);cos(x)];

plot(x,Y)

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

• plot(Y) строит график y(i), где значения y берутся из вектора Y, а i представляет собой индекс соответствующего элемента.

• plot(X,Y,S) аналогична команде plot(X,Y), но тип линии графика можно задавать с помощью строковой константы S.

Значениями константы S могут быть следующие символы, задающие тип линии графика:

Цвет линии

Тип точки

Тип линии

y

m

c

r

g

b

w

k

Желтый

Фиолетовый

Голубой

Красный

Зеленый

Синий

Белый

Черный

.

o

x

+

*

s

d

v

^

<

>

p

h

Точка

Окружность

Крест

Плюс

Звездочка

Квадрат

Ромб

Треугольник (вниз)

Треугольник (вверх)

Треугольник (влево)

Треугольник (вправо)

Пятиугольник

Шестиугольник

-

:

-.

--

Сплошная

Двойной пунктир

Штрих-пунктир

Штриховая

• plot(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,…) – эта команда строит на одном графике ряд линий, представленных данными вида (Xi,Yi,Si), где Xi и Yi – векторы или матрицы, а Si – строки. С помощью такой конструкции возможно построение, например, графика функции линией, цвет которой отличается от цвета узловых точек.

Графики в логарифмическом и в полулогарифмическом масштабе

• loglog(…) – синтаксис команды аналогичен ранее рассмотренному для функции plot(…). Логарифмический масштаб используется для координатных осей X и Y.

• semilogx(…) строит график функции в логарифмическом масштабе (основание 10) по оси X и линейном по оси Y;

• semilogy(…) строит график функции в логарифмическом масштабе по оси Y и линейном по оси X.

Оформление графиков

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

Текстовое оформление графиков:

• title('string') – установка на графиках титульной надписи, заданной строковой константой 'string'.

• xlabel('String') – устанавливает надпись возле оси X;

• ylabel('String') – устанавливает надпись возле оси Y;

Включение и выключение сетки:

• grid on добавляет сетку к текущему графику;

• grid off отключает сетку;

Наложение графиков друг на друга:

• hold on обеспечивает продолжение вывода графиков в текущее окно, что позволяет добавлять последующие графики к уже существующим;

• hold off отменяет режим продолжения графических построений;

Работа с окнами

• subplot(m,n,p) – разбивает графическое окно на m×n подокон, при этом m – число подокон по горизонтали, n – число подокон по вертикали, а p – номер подокна, в которое будет выводиться текущий график (подокна отсчитываются последовательно по строкам);

• figure(k) – открывает окно графики с соответствующим номером, после чего все команды относящиеся к выводу и оформлению графиков будут относится к этому окну.

Более подробную справочную информацию о функциях 2D-графики можно получить по справке, набрав команду:

>> help graph2d