Арифметические операторы и функции
Арифметические операторы являются самыми распространенными и известными. В отличие от большинства языков программирования в системе MATLAB практически все операторы являются матричными, т. е. предназначены для выполнения операций над матрицами. В табл. 8.1 приводится список арифметических операторов и синтаксис их применения.
Таблица 8.1.Арифметические операторы и функции MATLAB
| Функция
| Название Оператор
| Синтаксис
|
| Plus
| Плюс +
| М1+М2
|
| Uplus
| Унарный плюс +
| +М
|
| Minus
| Минус
| М1-М2
|
| Uminus
| Унарный минус
| -М
|
| Mtimes
| Матричное умножение *
| М1*М2
|
| Times
| Поэлементное умножение массивов .*
| А1*А2
|
| Mpower
| Возведение матрицы в степень
| М1^х
|
| Power
| Поэлементное возведение массива в степень
| А1^х
|
| Mldivide
| Обратное (справа налево) деление матриц \
| M1\M2
|
| Mrdivide
| Деление матриц слева направо /
| М1/М2
|
| Ldivide
| Поэлементное деление массивов справа налево . \
| А1.\А2
|
| Rdivide
| Поэлементное деление массивов слева направо . /
| А1 . /А2
|
| Kron
| Тензорное умножение Кронекера kron
| kron(X.Y)
|
|
|
|
| Обратите внимание на то, что каждый оператор имеет аналогичную по назначению функцию. Например, оператору матричного умножения * соответствует функция mtimes(Ml,M2). Примеры применения арифметических операторов уже не раз приводились, так что ограничимся несколькими дополнительными примерами:
» А=[1 2 3];
» В=[4 5 6]:
» В-А
ans=
|
| 3 3
|
|
| » minus (В. А)
|
|
|
| ans =
|
|
|
|
| 3 3
|
|
| » А. ^ 2
|
|
|
| ans =
|
|
|
|
| 4 9
|
|
| » power(A,2)
|
|
|
| ans =
|
|
|
|
| 4 9
|
|
| » ДАВ
|
|
|
| ans=
|
|
|
| 4.0000
| 2.5000 2.0000
|
|
| » Idivide(A.B)
|
|
|
| ans=
|
|
|
| 4.0000
| 2.5000 2.0000
|
|
| » rdivide(A.B)
|
|
|
| ans=
|
|
|
| 0.2500
| 0.4000 0.5000
|
| Соответствие функций операторам и командам в системе MATLAB является одним из основных положений программирования. Оно позволяет одновременно использовать элементы как операторного, так и функционального программирования.
Следует отметить, что в математических выражениях операторы имеют определенный приоритет исполнения. Например, в MATLAB приоритет логических операторов выше, чем арифметических, приоритет возведения в степень выше приоритетов умножения и деления, приоритет умножения и деления выше приоритета сложения и вычитания. Для изменения приоритета операций в математических выражениях используются круглые скобки. Степень вложения скобок не ограничивается.
Операторы отношения и их функции
Операторы отношения служат для сравнения двух величин, векторов или матриц. Все операторы отношения имеют два операнда, например х и у, и записываются, как показано в табл. 8.2.
Таблица 8.2.Операторы и функции отношения
Функция
| Название
| Оператор
| Пример
| Eq
| Равно
| = =
| x = = y
| Ne
| He равно
| ~ =
| x ~ = y
| Lt
| Меньше чем
| <
| x<y
| Gt
| Больше чем
| >
| x>y
| Le
| Меньше или равно
| <=
| x<=y
| Ge
| Больше или равно
| >=
| x>=y
| Данные операторы выполняют поэлементное сравнение векторов или матриц одинакового размера и возвращают значение 1 (True), если элементы идентичны, и значение 0 (False) в противном случае. Если операнды — действительные числа, то применение операторов отношения тривиально:
» eq(2.2)
ans =
» 2==2
ans =
» ne(l,2)
ans =
» 2 ~- 2
ans =
» 5 > 3
ans =
» le(5.3)
ans =
Следует отметить, что операторы <, <=, > и >= при комплексных операндах используют для сравнения только действительные части операндов — мнимые отбрасываются. В то же время операторы == и ~= ведут сравнение с учетом как действительной, так и мнимой частей операндов. Следующие примеры поясняют это положение:
» (2+3i)>-(2+i)
ans=
» (2+3i)>(2+i)
ans=
» abs(2+3i)>abs(2+i)
ans =
» (2+3i)—(2+i)
ans =
» (2+3i)-(2+i)
ans =
Если один из операндов — скаляр, происходит сравнение всех элементов второго операнда-массива со значением этого скаляра:
M=
-1 0
1 2
» М>=0
ans =
0 1
1 1
В общем случае операторы отношения сравнивают два массива одного размера и выдают результат в виде массива того же размера:
» М>[0 1;.1 0]
ans =
0 0
0 1
Таким образом, спектр применения операторов отношения в системе MATLAB шире, чем в обычных языках программирования, поскольку операндами являются не только числа, но и векторы, матрицы и массивы. Возможно применение операторов отношения и к символьным выражениям:
» 'b'>'а'
ans =
» 'abc'= ='abc'
ans =
1 1 1
» 'cba'<'abc'
ans =
0 0 1
В этом случае символы, входящие в выражения, представляются своими ASCII-кодами. Строки воспринимаются как векторы, содержащие значения кодов. Все это надо учитывать при использовании управляющих структур языка программирования, в которых широко применяются операторы отношения.
Логические операторы
Логические операторы и соответствующие им функции служат для реализации поэлементных логических операций над элементами одинаковых по размеру массивов (табл. 8.3).
Таблица 8.3.Логические операторы и функции MATLAB
Функция
| Название
| And
| Логическое И (AND) &
| Or
| Логическое ИЛИ (OR) |
| Not
| Логическое НЕ (NOT) ~
| Хог
| Исключающее ИЛИ (EXCLUSIVE OR)
| Any
| Верно, если все элементы вектора равны нулю
| All
| Верно, если все элементы вектора не равны нулю
| Работа операторов поясняется приведенными ниже примерами:
»А=[1 2 3];
»В=[1 0 0];
» and(A.B)
ans =
1 0 0
» оr(А.В)
ans =
1 1 1
» А&В
ans =
1 0 0
» А|В
ans=
1 1 1
» not(А)
ans =
0 0 0
» not(B)
ans =
0 1 1
» ~B
ans=
0 1 1
» xor(A.B)
ans =
0 1 1
» any(A)
ans =
» all([0 0 0])
ans =
» all(B)
ans =
» and('abc'.'012')
ans =
1 1 1
Обратите внимание, что аргументами логических операторов могут быть числа и строки. При аргументах-числах логический нуль соответствует числовому нулю, а любое отличное от нуля число воспринимается как логическая единица. Для строк действует уже отмеченное правило — каждый символ строки представляется своим ASCII-кодом.
Специальные символы
К классу операторов в системе MATLAB относятся также специальные символы. Они предназначены для создания самых разнообразных объектов входного языка и языка программирования системы и придания им различных форм. В табл. 8.4 представлено описание полного набора специальных символов.
Таблица 8.4.Специальные символы MATLAB
Обозначение
| Название
| Категория
| :
| Двоеточие
| colon
| ( )
| Круглые скобки
| paren
| [ ]
| Квадратные скобки
| paren
| { }
| Фигурные скобки
| paren
| .
| Десятичная точка
| punct
| .
| Выделение поля структуры
| punct
| ..
| Родительский каталог
| punct
| ...
| Продолжение строки
| punct
| ,
| Разделитель
| punct
| ;
| Точка с запятой
| punct
| %
| Комментарий
| punct
| i
| Вызов команды операционной системы
| punct
| =
| Присваивание
| punct
| 1
| Кавычка
| punct
| 1
| Транспонирование
| transpose
| 1
| Транспонирование с комплексным сопряжением
| ctranspose
| [,]
| Горизонтальная конкатенация
| horzcat
| [;]
| Вертикальная конкатенация
| vertcat
| ( ).( }..
| Присваивание подмассива
| subsasgn
| ( ).{ }..
| Ссылка на подмассив
| subsref
|
| Индекс подмассива
| subsindex
| Теперь рассмотрим их более подробно.
· : (двоеточие) — формирование подвекторов и подматриц из векторов и матриц. Оператор : — один из наиболее часто используемых операторов в системе MATLAB.
Оператор : использует следующие правила для создания векторов:
· j:k — то же, что и [j.j+l,...,k];
· j:k — пустой вектор, если j>k;
· j:i :k — то же, что и [j, j+i ,j+2i .....k];
· j:i :k — пустой вектор, если i>0 и j>k или если i<0 и j<k, где 1, j и k — скалярные величины.
Ниже показано, как выбирать с помощью оператора : строки, столбцы и элементы из векторов, матриц и многомерных массивов:
· А(:, j) — это j-й столбец из А;
· А(i,:) — это i-я строка из А;
· А(:,:) — эквивалент двумерного массива. Для матриц это аналогично А;
· A(j:k) - это A(j), A(j+l),...,A(k);
· A(:J:k)-это A(:.j),A(:,j+l),...,A(:,k);
· А(:,: ,k) — это k-я страница трехмерного массива А;
· A(i.j.k.:) — вектор, выделенный из четырехмерного массива А. Вектор включает элементы А(1, j.k.l), A(i. j,k,2), A(i. j,k.3) и т. д.;
· А(:) — записывает все элементы массива А в виде столбца.
Символы ( ) (круглые скобки) используются для задания порядка выполнения операций в арифметических выражениях, указания последовательности аргументов функции и указания индексов элемента вектора или матрицы. Если X и V — векторы, то X(V) можно представить как [X(V(D), X(V(2)).....X(V(n))]. Элементы вектора V должны быть целыми числами, чтобы их можно было использовать как индексы элементов массива X. Ошибка генерируется в том случае, если индекс элемента меньше единицы или больше, чем size(X). Такой же принцип индексирования действителен и для матриц. Если вектор V имеет т компонентов, а вектор W — п компонентов, то A(V,W) будет матрицей размера mxn, сформированной из элементов матрицы А, индексы которой — элементы векторов V и W.
Символы [ ] (квадратные скобки) используются для формирования векторов и матриц:
· [6.9 9.64 sqrt(-l)] — вектор, содержащий три элемента, разделенных пробелами;
· [6.9. 9.64. i] —такой же вектор;
· [1+j 2-j 3] и [1 +j 2 -j 3] — разные векторы: первый содержит три элемента, а второй пять;
· [11 12 13: 21 22 23] — матрица размера 2x3. Точка с запятой разделяет первую и вторую строки.
Еще несколько примеров:
· А = [ ] — сохраняет пустую матрицу в А;
· А(m. :) = [] — удаляет строку m из матрицы А;
· А(: ,n) = [ ] — удаляет столбец n из матрицы А.
Символы { } (фигурные скобки) используются для формирования массивов ячеек. Например, {magic(3) 6.9 'hello'} — массив ячеек с тремя элементами.
Символ . (десятичная точка) используется для отделения дробной части чисел от целой. Например, 314/100, 3.14 и .314е1 — одно и то же число.
Кроме того, символ точки . используется для выделения полей структур. Например, A.(field) и A(i).field, где А — структура, означает выделение поля структуры с именем «field».
Ниже перечислено назначение остальных специальных символов MATLAB:
· .. (родительский каталог) — переход по дереву каталогов на один уровень вверх;
· ... (продолжение) — три или более точек в конце строки указывают на продолжение строки;
· ; (точка с запятой) — используется внутри круглых скобок для разделения строк матриц, а также в конце операторов для запрета вывода на экран результата вычислений;
· , (запятая) — используется для разделения индексов элементов матрицы и аргументов функции, а также для разделения операторов языка MATLAB. При разделении операторов в строке запятая может заменяться на точку с запятой с целью запрета вывода на экран результата вычислений;
· % (знак процента) — используется для указания логического конца строки. Текст, находящийся после знака процента, воспринимается как комментарий и игнорируется (увы, за исключением русскоязычных комментарий, которые нередко ведут к ошибочным командам);
· ! (восклицательный знак) — является указателем ввода команды операционной системы. Строка, следующая за ним, воспринимается как команда операционной системы;
· = (знак равенства) — используется для присваивания значений в арифметических выражениях;
· ' (одиночная кавычка, апостроф) — текст в кавычках представляется как вектор символов с компонентами, являющимися ASCII-кодами символов. Кавычка внутри строки задается двумя кавычками. Например:
» a-'Hello''my friend'
а =
Hello'my friend
· ' (транспонирование с комплексным сопряжением) — транспонирование матриц, например А' — транспонированная матрица А. Для комплексных матриц транспонирование дополняется комплексным сопряжением. Строки транспонированной матрицы соответствуют столбцам исходной матрицы;
· .' (транспонирование) — транспонирование массива, например А.' — транспонированный массив А. Для комплексных массивов операция сопряжения не выполняется;
· [.] — горизонтальная конкатенация. Так, [А.В] — горизонтальная конкатенация (объединение) матриц А и В. А и В должны иметь одинаковое количество строк. [А В] действует аналогично. Горизонтальная конкатенация может быть применена для любого числа матриц в пределах одних скобок: [А,В,С]. Горизонтальная и вертикальная конкатенации могут использоваться одновременно: [А,В:С];
· [:] — вертикальная конкатенация. Так, [А:В] — вертикальная конкатенация (объединение) матриц А и В. А и В должны иметь одинаковое число столбцов. Вертикальная конкатенация может быть применена для любого числа матриц в пределах одних скобок: [А:В:С]. Горизонтальная и вертикальная конкатенации могут использоваться одновременно: [А;В,С];
· (),{} — присваивание подмассива. Приведем несколько примеров:
o А(1)=В — присваивает значения элементов массива В элементам массива А, которые определяются вектором индексов I. Массив В должен иметь такую же размерность, как и массив I, или может быть скаляром;
o А(I,J)=B — присваивает значения массива В элементам прямоугольной подматрицы А, которые определяются векторами индексов I и J. Массив В должен иметь LENGTH(I) строк и LENGTH(J) столбцов;
o А{1}=В, где А — массив ячеек и I — скаляр, помещает копию массива В в заданную ячейку массива А. Если I имеет более одного элемента, то появляется сообщение об ошибке.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|