Переменные в среде 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 вычислит все выражение или выполнит команду после нажатия на в последней строке (в которой нет трех идущих подряд точек).

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. Операторы отношения всегда выполняются поэлементно. Пример. Выполним сравнение двух массивов, используя ус- ловие А

Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: