Переменные в среде MATLAB. Простые переменные и основные типы данных в MatLab
Как и во всех языках программирования, в MatLab предусмотрена возможность работы с переменными. Причем пользователь не должен заботиться о том, какие значения будет принимать переменная (комплексные, вещественные или только целые). Для того чтобы присвоить, например, переменной z значение 1.45, достаточно написать в командной строке z = 1.45, при этом MatLab сразу же выведет значение z:
» z = 1.45
z =
1.4500
Здесь знак равенства используется в качестве оператора присваивания.
Часто не очень удобно после каждого присваивания получать еще и результат. Поэтому в MatLab предусмотрена возможность завершать оператор присваивания точкой с запятой для подавления вывода результата в командное окно. Именем переменной может быть любая последовательность букв и цифр без пробела, начинающаяся с буквы. Строчные и прописные буквы различаются, например MZ и mz являются двумя разными переменными. Количество воспринимаемых MatLab символов в имени переменной составляет 31.
В качестве упражнения на использование переменных найдите значение следующего выражения:
Наберите последовательность команд, приведенную ниже (обратите внимание на точку с запятой в первых двух операторах присваивания для подавления вывода промежуточных значений на экран):
» х = sin(1.3*pi)/log(3.4);
» у = sqrt(tan(2.75)/tanh(2.75));
» z
= (х+у)/(х-у)
Z =
0.0243 - 0.9997i
Последний оператор присваивания не завершается точкой с запятой для того, чтобы сразу получить значение исходного выражения. Конечно, можно было бы ввести сразу всю формулу и получить тот же результат:
»(sin(1.3*pi)/log(3.4)+sqrt(tan(2.75)/tanh(2.75)))/…
(sin(1.3*pi)/log(3.4)-sqrt(tan(2.75)/tanh(2.75))) ans =
0.0243 - 0.9997i
Обратите внимание, насколько первая запись компактнее и яснее второй! Во втором варианте формула не помещалась в командном окне на одной строке, и пришлось записать ее в две строки, для чего в конце первой строки поставлены три точки.
Для ввода длинных формул или команд в командную строку следует поставить три точки (подряд, без пробелов), нажать клавишу
MatLab запоминает значения всех переменных, определенных во время сеанса работы. Если после ввода примера, приведенного выше, были проделаны еще какие-либо вычисления, и возникла необходимость вывести значение х
, то следует просто набрать х
в командной строке и нажать
» x
-0.6611
Переменные, определенные выше, можно использовать и в других формулах. Например, если теперь необходимо вычислить выражение
,
то достаточно ввести следующую команду:
» (x-y)^(3/2)
ans =
-0.8139 + 0.3547i
Вызов функций в MatLab обладает достаточной гибкостью. Например, вычислить е3.5 можно, вызвав функцию ехр из командной строки:
» ехр(3.5)
ans =
33.1155
Другой способ состоит в использовании оператора присваивания:
» t = ехр(3.5)
t =
33.1155
Предположим, что часть вычислений с переменными выполнена, а остальные придется доделать во время следующего сеанса работы с MatLab. В этом случае понадобится сохранить переменные, определенные в рабочей среде.
Просмотр переменных
При работе с достаточно большим количеством переменных необходимо знать, какие переменные уже использованы, а какие нет. Для этой цели служит команда who, выводящая в командное окно MatLab список используемых переменных:
» who
Your variables are:
al a2 a3
Команда whos позволяет получить более подробную информацию о переменных в виде таблицы:
Grand total is 3 elements using 24 bytes
Первый столбик Name состоит из имен используемых переменных. То, что содержится в столбике Size, по существу, определяется основным принципом работы MatLab. Программа MatLab все данные представляет в виде массивов.
Переменные al, a2 и а3 являются двумерными массивами размера один на один. Каждая из переменных занимает по восемь байтов, как указано в столбике Bytes. Наконец, в последнем столбике Class указан тип переменных - double array, т.е. массив, состоящий из чисел двойной точности. В строке под таблицей написано, что в итоге три элемента, т.е. переменные, занимают двадцать четыре байта. Оказывается, что представление всех данных в MatLab в виде массивов дает определенные преимущества.
Для освобождения из памяти всех переменных используется команда clear. Если в аргументах указать список переменных (через пробел), то только они будут освобождены из памяти, например:
» clear al аЗ
» who
Your variables are:
a2
Начиная с версии 6.0, появилось удобное средство для просмотра переменных рабочей среды - окно Workspace , для перехода к которому следует активизировать одноименную закладку. Данное окно содержит таблицу, аналогичную той, что выводится командой whos. Двойной щелчок по строке, соответствующей каждой переменной, приводит к отображению ее содержимого в отдельном окне, что особенно полезно при работе с массивами. Панель инструментов окна Workspace позволяет удалить лишние переменные, сохранить и открыть рабочую среду.
Основы программирования в MatLab
Наместников С.М. / Сборник лекций: УлГТУ, Ульяновск. - 2011
Введение
Глава 1. Структура программы. Основные математические операции и типы данных
1.1. Структура программы пакета MatLab
1.2. Простые переменные и основные типы данных в MatLab
1.3. Арифметические операции с простыми переменными
1.4. Основные математические функции MatLab
1.5. Векторы и матрицы в MatLab
1.6. Операции над матрицами и векторами
1.7. Структуры в MatLab
1.8. Ячейки в MatLab
Глава 2. Условные операторы и циклы в MatLab
2.1. Условный оператор if
2.2. Условный оператор switch
2.3. Оператор цикла while
2.4. Оператор цикла for
Глава 3. Работа с графиками в MatLab
3.1. Функция plot
3.2. Оформление графиков
3.3. Отображение трехмерных графиков
3.4. Отображение растровых изображений
Глава 4. Программирование функций в MatLab
4.1. Порядок определения и вызова функций
4.2. Область видимости переменных
Глава 5. Работа с файлами в MatLab
5.1. Функции save и load
5.2. Функции fwrite и fread
5.3. Функции fscanf и fprintf
5.4. Функции imread и imwrite
Введение
Среди множества существующих математических пакетов, таких как Mathematica, MathCad и др., система MatLab занимает лидирующее место благодаря удобному встроенному языку программирования для реализации самых разнообразных математических алгоритмов и задач математического моделирования. Кроме того, данный пакет имеет дополнительно инструмент визуального моделирования Simulink, позволяющий строить и исследовать математические модели, не прибегая к их программированию.
В данном учебном пособии рассматривается внутренний язык программирования MatLab, дающий наибольшую гибкость, богатство функционала и удобство при решении и исследовании математических задач. При изложении материала предпочтение отдавалось наиболее простым конструкциям языка, изучая которые можно создавать самые разнообразные и нетривиальные математические алгоритмы.
Глава 1. Структура программы. Основные математические операции и типы данных
Первым шагом на пути создания математических алгоритмов является изучение структуры программы и набора математических операций, доступных языку программирования. В частности, в данной главе будут рассмотрены математические операции и функции пакета MatLab, связанные с обработкой как скалярных, так и матричных переменных.
Структура программы пакета MatLab
Как правило, каждая программа в MatLab представляет собой функцию и начинается с ключевого слова function, за которым через пробел следует ее название. Например,
function Lab1
a = 5;
b = 2;
c = a*b;
Данная программа заключена в функции с именем Lab1 и вычисляет произведение двух переменных а и b. При сохранении программы в m-файл рекомендуется указывать имя файла, совпадающее с именем функции, т.е. в данном случае – Lab1.
Следует отметить, что в одном m-файле можно задавать множество дополнительных функций. Для этого достаточно написать в конце листинга основной программы еще одно ключевое слово function и задать ее имя, например,
function Lab1
a = 5;
b = 2;
c = a*b;
out_c(c); % вызов функции out_c()
function out_c(arg_c) % определение функции out_c()
disp(arg_c);
Обратите внимание, что функцию out_c() можно вызывать в основной программе до ее определения. Это особенность языка MatLab, позволяющая не беспокоиться программисту о последовательности задания функций. В приведенном примере функция out_c() имеет один входной параметр с именем arg_c, который выводится на экран (в командное окно MatLab) с помощью встроенной функции disp(). В итоге, при выполнении приведенной программы в командном окне MatLab будет отображено значение переменной c.
Дополнительные функции можно оформлять и в отдельных m-файлах. Например, если есть необходимость какую-либо функцию описать в одном m-файле, а вызывать ее в другом, то это можно реализовать следующим образом.
1-й файл (Lab1.m)
При выполнении функции Lab1 система MatLab вызовет функцию square из файла square.m. Это будет сделано автоматически, т.к. встроенные функции языка MatLab определены также и вызываются из файлов, имена которых, как правило, соответствуют именам вызываемых функций. Обратите также внимание на то, что функция square() не только принимает два аргумента a и b, но и возвращает их произведение с помощью переменной res. Представленный синтаксис следует использовать всякий раз, когда требуется возвратить результат вычислений основной программе. В четвертой главе данного пособия более подробно изложены конструкции вызова функций для реализации разнообразных алгоритмов.
Простые переменные и основные типы данных в MatLab
Создание программы, как правило, начинается с определения переменных и способа представления данных. Следовательно, чтобы правильно организовать описание данных программы, необходимо знать как задавать переменные в MatLab и какие виды переменных возможны.
Самый простой и наиболее распространенный тип данных – это число. В MatLab число хранится в переменной, которая имеет некоторое уникальное имя, например,
задает переменную с именем a и присваивает ей значение 5. По умолчанию переменная а является вещественной (тип double), т.е. может принимать дробные значения, например,
задает значение переменной а равное -7,8. Изменить тип переменной можно, указав тип присваиваемого числа с помощью соответствующего ключевого слова, например,
выполнит присваивание числа 5 как целочисленного 16-битового значения. В результате выполнения такой операции тип переменной a будет соответствовать int16.
Типы данных, доступные в MatLab, представлены в табл. 1.1.
Таблица 1.1. Основные типы данных в MatLab
По умолчанию используется тип double, который имеет наибольшую точность представления вещественного числа и является потому универсальным типом. Однако, если необходимо экономить память ЭВМ, то можно указывать самостоятельно желаемый тип.
Последнее, что следует знать при задании переменных – это правило определения их имен. В MatLab имена переменных могут задаваться только латинскими буквами, цифрами и символом ‘_’. Причем, первый символ в имени должен соответствовать букве латинского алфавита. Также следует отметить, что имена
arg = 1;
Arg = 2;
ARG = 3;
это три разных имени, т.е. три разные переменные со значениями 1, 2 и 3 соответственно. Данный пример показывает, что MatLab различает регистр в именах переменных.
При программировании лучше всего задавать осмысленные имена переменных, по которым можно было бы понять какие данные они представляют. Это позволяет избежать путаницы при построении больших программ.
В системе MATLAB существует особой вид переменных, значение которых, за исключением переменой ans, нельзя изменить. Эти переменные называются системными. Они предназначены для более эффективной работы при вычислениях, а также для вывода системой сообщений при некорректной постановке задачи пользователем. В таблице приведен список системных переменных, используемых в MATLAB.
Обозначения системных переменных MATLAB
Комплексные числа
В системе MATLAB комплексные числа, тате же, как и вещественные, имеют тип double. Поэтому нет необходимости в отдельной маркировке, отмечающей работу с комплексными числами. Запись производится следующим образом: 3+7i; -7.1+0.831Е+2*i; 5-3j . Из примера видно, что для обозначения мнимой единицы можно использовать одну из букв: i или j. По умолчанию MATLAB использует букву i.
Ниже приведен пример вычисления корня квадратного из -1
>> b=sqrt(a)
Для комплексных чисел можно применять те же функции, что и для вещественных, кроме очевидных случаев, когда у функции не может быть комплексного аргумента. Например, функция rem (x,y) вычисляет остаток от деления x на у, поэтому использование в качестве ее аргумента комплексного числа приведет к ошибке:
>> a=2+3*i;
>> rem(a,3)
Error using ==> rem
Arguments must be real.
Наряду с этим, существует также ряд функций, применяемых только к комплексным переменным.
Функции комплексных переменных
Например:
>> abs(2+3i)
>> conj(2+3i)
2.0000 - 3.0000i
>> isreal(x)
В последнем примере функция isreal возвратила число 0, т.к. переменная x не является действительной.
5. Видимость имён переменных и имён функций.
Локальные и глобальные переменные. Функция располагает собственным, изолированным от рабочего пространства системы MATLAB, пространством переменных. Поэтому, если перед вызовом M-функции в командном окне MATLABа была определена переменная с именем, например, varName1, то нельзя рассчитывать на то, что переменная в теле функции с этим же именем уже имеет некоторое значение. Это совсем другая переменная (хотя у неё и то же самое имя varName1) и располагается она в памяти машины в другой области памяти.
Переменные, которые используются в теле M-функции и не совпадают с именами формальных параметров этой функции, называются локальными. По-другому говорят, что они видимы лишь в пределах M-функции. Извне они не видны (не достижимы). Внутри функции не видны переменные, определённые в командном окне MATLABа - они являются внешними по отношению к функции и не видны в ней.
Аналогично, локальные внутри некоторой функции переменные не видны внутри другой M-функции.
Одним из каналов передачи информации из командного окна системы MATLAB в M-функцию и из одной функции в другую является механизм параметров функции. Другим таким механизмом являются глобальные переменные.
Чтобы рабочая область системы MATLAB и несколько M-функций могли совместно использовать переменную с некоторым именем, её всюду нужно объявить как глобальную с помощью ключевого слова global. К примеру, переменная glVarS, участвующая в вычислениях в рабочем пространстве и в функции FuncWithGlobVar является одной и той же переменной (единственный участок памяти) повсюду - поэтому её можно использовать в функции без дополнительного присваивания её какого-либо значения:
Так как у глобальных переменных "глобальная" область действия, то чтобы случайно (по ошибке) не переопределить её где-либо, желательно давать таким переменным более мнемонические (более длинные и осмысленные) имена.
Теперь рассмотрим вопрос о видимости имён функций. Если мы сохранили функцию с некоторым именем в файле с этим же именем и расширением m, и кроме того если системе MATLAB известен путь к этому файлу на диске, то эту функцию можно вызывать как из командного окна, так и из других функций.
Однако в тексте M-функции можно поместить опеределения нескольких функций, причём только одна из них может совпадать по имени с именем файла. Именно эта функция и будет видна из командного окна и других функций. Все остальные функции будут внутренними - их могут вызывать только функции из того же файла.
Например, если в файле ManyFunc.m будет содержаться следующий текст
function ret1 = ManyFunc(x1, x2)
ret1 = x1 .* x2 + AnotherFunc(x1)
function ret2 = AnotherFunc(y)
ret2 = y .* y + 2 * y + 3;
состоящий из определений двух функций с именами ManyFunc и AnotherFunc, то извне можно вызывать только функцию ManyFunc. По-другому можно сказать, что извне видны только функции с именами, совпадающими с именами M-файлов. Остальные функции должны вызываться этой функцией и другими внутренними функциями.
Ode23("lotka2",,);
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.
Специальная переменная для числа p:
pi
pi=3.141592653589793e+000.
70
Специальные переменные для обозначения мнимой
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
71
Вероятно, что чаще всего вам придется иметь дело только с
двумя из этих типов данных: массив чисел удвоенной точности
(double) и массив символов (char), или просто строка. Это связано с
тем, что все вычисления в системе MATLAB выполняются с удвоен-
ной точностью и большинство функций работают с массивами чисел
удвоенной точности или строками.
Другие типы данных предназначены для таких специальных
приложений, как работа с разреженными матрицами (sparse), обра-
ботка изображений (uint8), работа с массивами большой размерности
(cell и struct).
Нельзя задать тип переменной numeric или array. Эти типы
называются виртуальными и служат только для того, чтобы сгруппи-
ровать переменные, которые имеют общие атрибуты.
Тип uint8 предназначен для эффективного хранения данных в
памяти. К данным этого типа можно применять только базовые опе-
рации индексации и изменения размеров, но нельзя выполнить ника-
кой математической операции. Для этого такие массивы необходимо
преобразовать в тип double.
Создание собственных типов и добавление методов для
встроенных типов. Нижеприведенная таблица содержит седьмой тип
данных - UserObject. Язык MATLAB позволяет создавать собствен-
ные типы данных и работать с ними по аналогии со встроенными ти-
пами.
Для встроенных типов данных можно переопределять метод точно
также, как это делается для объекта. Например, чтобы задать опера-
цию сортировки для массива типа uint8, необходимо создать метод
(sort.m или sort.mex) и поместить его в специальный каталог @uint8.
Следующая таблица описывает типы данных более подробно.
Класс Пример Описание
Числовой массив удво-
енной точности (это
наиболее распростра-
[ 1 2; 3 4]
Double ненный тип переменной
5 + 6i
в системе MATLAB
72
Массив символов (каж-
дый символ - длиной 16
битов), часто именуется
Char "Привет"
строкой.
Разреженная матрица
удвоенной точности
(только двумерная). Раз-
реженная структура
применяется для хране-
ния матриц с небольшим
количеством ненулевых
элементов, что позволяет
Sparse Speye(5) использовать лишь не-
большую часть памяти,
требуемой для хранения
полной матрицы. Разре-
женные матрицы требу-
ют применения специ-
альных методов для ре-
шения задач.
Массив ячеек. Элемен-
ты этого массива содер-
жат другие массивы.
Массивы ячеек позволя-
Cell { 17 "привет" eye (2)} ют объединить связан-
ные данные, возможно
различных размеров, в
единую структуру.
Массив записей. Он
включает имена полей.
A.day = 12; A.color = Поля сами могут содер-
жать массивы. Подобно
Struct "Red"; A.mat = массивам ячеек, массивы
magic(3); записей объединяют cвя-
занные данные и инфор-
мацию о них.
73
Массив 8-разрядных
целых чисел без зна-
ков. Он позволяет хра-
нить целые числа в диа-
пазоне от 0 до 255 в 1/8
части памяти, требуемой
Uint8 Uint8 (magic (3))
для массива удвоенной
точности. Никакие мате-
матические операции
для этих массивов не
определены.
Тип данных, опреде-
UserObject inline("sin(x)") ляемый пользователем.
Описание диаграммы. Соединительные линии на диаграмме
(рисунок 3.1) определяют принадлежность того или иного типа дан-
ных к одному или нескольким классам.
Пример. Матрица типа sparse имеет также типы double и
numeric. Операторы
isa(S",sparse")
isa(S",double")
isa(S",numeric")
возвращают значения 1(истина), то есть S - числовая разреженная
матрица удвоенной точности. Обратите внимание, что тип array -
массив находится в вершине диаграммы. Это означает, что все данные
системы MATLAB являются массивами.
Каждому типу данных можно соотнести свои функции и опе-
раторы обработки, или другими словами, методы. Дочерние типы
данных, расположенные на диаграмме ниже родительского типа, под-
держаны также и методами родителя. Следовательно, массив типа
double поддержан методами, применяемыми для типа numeric. В таб-
лице приведены некоторые из таких методов:
Класс Метод
74
Вычисление размера (size), длины (length),
размерности (ndims), объединение массивов (), транспонирование (transpose), многомер-
Массив array
ная индексация (subsindex), переопределение
(reshape) и перестановка (permute) размерно-
стей многомерного массива.
Индексация с использованием фигурных ско-
Массив ячеек cell бок {e1,…,en} и разделением элементов списка
запятыми.
Строковые функции (strcmp, lower), автомати-
Строка Char ческое преобразование к типу double для при-
менения методов класса double.
Арифметические и логические операции, мате-
Double
матические функции, функции от матриц.
Поиск (find), обработка комплексных чисел
(real, imag), формирование векторов, выделе-
Numeric
ние строк, столбцов, подблоков массива, рас-
ширение скаляра.
Sparse Операции над разреженными матрицами.
Массив записей Доступ к содержимому поля.field (разделитель
Struct элементов списка - запятая).
Операция хранения (чаще всего используется с
Uint8
ППП Image Processing Toolbox)
UserObject Определяется пользователем
Пустые массивы. Ранние версии системы MATLAB допус-
кали единственную форму пустого массива размера 0х0, обозначаемо-
го как . MATLAB поддерживает массивы, у которых одна, но не
все из размерностей, равна нулю, то есть массивы с размерами 1х0,
10х0х20 или определяются как пустые. Квадратные скобки
продолжают обозначать массив 0х0. Пустые массивы другого раз-
мера могут быть созданы с помощью функций zeros, ones, rand или
eye. Например, для формирования пустого массива размера 0х5, мож-
но использовать оператор присваивания
E = zeros(0,5).
75
Основное назначение пустых массивов состоит в том, чтобы
любая операция, которая определена для массива(матрицы) размера
m?n, определяла правильный результат для случая, когда m или n
равно нулю. Размер массива(матрицы) результата должен соответст-
вовать значению функции, вычисленной в нуле. Например, оператор
C =
требует, чтобы массивы 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() = .
3.4 Операторы системы MATLAB 5. Объедине-
ние операторов в арифметические выражения.
Встроенные функции
Операторы системы MATLAB
Операторы системы MATLAB делятся на три категории:
76
арифметические операторы позволяют конструировать ариф-
метические выражения и выполнять числовые вычисления.
операторы отношения позволяют сравнивать числовые опе-
ранды.
логические операторы позволяют строить логические выра-
жения.
Логические операторы имеют самый низкий приоритет от-
носительно операторов отношения и арифметических операторов.
Арифметические операторы. При работе с массивом чисел
установлены следующие уровни приоритета среди арифметических
операций:
уровень 1:
поэлементное транспонирование (."), поэлементное
возведение в степень (.^), эрмитово сопряженное
транспонирование матрицы ("), возведение матрицы
в степень (^);
уровень 2: унарное сложение (+), унарное вычитание (-);
уровень 3:
умножение массивов (.*), правое деление (./), левое
деление массивов (.\), умножение матриц (*), реше-
ние систем линейных уравнений, операция (/), опера-
ция (\);
уровень 4: сложение (+), вычитание (-);
уровень 5: оператор формирования массивов (:).
Внутри каждого уровня операторы имеют равный приоритет
и вычисляются в порядке следования слева направо. Заданный по
умолчанию порядок следования может быть изменен с помощью
круглых скобок.
Пример. Пусть заданы 2 вектора
A = ;
B = ;
Результаты выполнения оператора
C = A./B. ^ 2 равен C = 0.7500 9.0000 0.2000 , а оператора
C = (A./B). ^ 2 равен C = 2.2500 81.0000 1.0000. Как видно результаты
совершенно различны.
Арифметические операторы допускают использование ин-
дексных выражений. Например:
77
b = sqrt (A(2)) + 2*B (1)
b=7
Арифметические операторы системы MATLAB работают, как
правило, с массивами одинаковых размеров. Для векторов и прямо-
угольных массивов оба операнда должны быть одинакового размера,
за исключением единственного случая, когда один из них - скаляр.
Если один из операндов скалярный, а другой нет, в системе MATLAB
принято, что скаляр расширяется до размеров второго операнда и за-
данная операция применяется к каждому элементу. Такая операция
называется расширением скаляра.
Операторы отношения. В системе MATLAB определено 6
следующих операторов отношения:
< Меньше
<= Меньше или равно
> Больше
> = Больше или равно
== Равно тождественно
~ = Не равно
Операторы отношения выполняют поэлементное сравнение
двух массивов равных размерностей. Для векторов и прямоугольных
массивов, оба операнда должны быть одинакового размера, за исклю-
чением случая когда один из них скаляр. В этом случае MATLAB
сравнивает скаляр с каждым элементом другого операнда. Позиции,
где это соотношение истинно, получают значение 1, где ложно - 0.
Операторы отношения, как правило, применяется для изменения по-
следовательности выполнения операторов программы. Поэтому они
чаще всего используются в теле операторов if, for, while, switch.
Операторы отношения всегда выполняются поэлементно.
Пример. Выполним сравнение двух массивов, используя ус-
ловие А