Арифметические операции с массивами.

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

Таблица 1.6.1. Знаки арифметических операций в системе MATLAB.

Оператор

Выполняемое действие (описание)

1

2

+

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

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

1

2

?

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

/

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

Оператор возведения в степень. Бинарный оператор. Первым операндом может быть скалярная величина или квадратная матрица. Если первый операнд скалярная величина, то второй может быть любым действительным скаляром. В качестве результата возвращается первый операнд, возведенный в степень, определяемую вторым операндом. Если же первый операнд - квадратная матрица, то второй операнд должен быть целочисленным (в том числе может быть отрицательным). Результатом является матрица, вычисленная посредством возведения матрицы-операнда в целочисленную степень.

Оператор левостороннего деления. Бинарный оператор. Операндами являеются квадратные матрицы одного ранга. Результатом является матрица, равная произведению матрицы, обратной к первому опаранду-матрице на второй операнд-матрицу.

?

Оператор поэлементного умножения. Бинарный оператор. Операндами являются матрицы одинакового размера. Результатом является матрица, элементы которой равны произведению соответствующих элементов матриц-операндов.

./

Оператор поэлементного деления. Бинарный оператор. Операндами являются матрицы одинакового размера. Результатом является матрица, элементы которой вычисляются как частное от деления элементов матрицы - первого операнда на соответствующие элементы матрицы - второго операнда.

л

Оператор поэлементного левостороннего деления. Бинарный оператор. Операндами являются матрицы одинакового размера. Результатом является матрица, элементы которой вычисляются как частное от деления элементов матрицы - второго операнда на соответствующие элементы матрицы - первого операнда.

1

2

r

Оператор транспонирования. Унарный оператор. Результатом является матрица, транспонированная к матрице-операнду.

r

Оператор вычисления сопряженной матрицы. Унарный оператор. Результатом является матрица, сопряженная к матрице-оператору. Для действительных матриц эквивалентна оператору транспонирования, для комплексных матриц споряженная матрица получается из исходной транспонированием и комплексным сопряжением ее элементов.

Оператор поэлементного возведения в степень. Бинарный оператор. Операндами могут быть скалярные величины или матрицы (в разной комбинации). Если первый аргумент - матрица, а второй - скалярная величина или матрица той же размерности, то в качестве результата возвращается матрица, элементы которой получаются возведением элементов первой матрицы в степень, определяемую вторым операндом-скаляром или соответстующими элементами второго операнда-матрицы. Если первы оператор - складярная вличина, а второй оператор - матрица, то результатом будет матрица того же размера, что и матрица-операнд (второй). Элементы матрицы-результата полуаются возведением скалярной величины (первый операнд) в степень, определяемую соответствующим элементом второго (матричного операнда).

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

1. Транспонирование вектора (например, в режиме командной строки):

» х=[3 -1 2] х =

3-12 >> whos х

Name Size Bytes Class Attributes

x 1x3 24 double

» y=[3; -1; 2]

У =

  • 3
  • -1
  • 2

>> whos у

Name Size Bytes Class Attributes

у 3x1 24 double

>> a=x' a =

  • 3
  • -1
  • 2

>> whos a

Name Size Bytes Class Attributes

a 3x1 24 double

» b=y' b =

3-12 >> whos b

Name Size Bytes Class Attributes

b 1x3 24 double

Таким образом, вектор-строка (вектор-столбец) при транспонировании переходит в вектор-столбец (вектор-строку).

2. Транспонирование действительной матрицы (например, в режиме командной строки):

» А=[1 2 3; 4 5 А =

  • 1 2
  • 4 5

>> whos А

Name Size

А 2x3

  • 6]
  • 3
  • 6

Bytes Class 48 double

Attributes

» В=А' В =

  • 1 4
  • 2 5
  • 3 6 >> whos В

Bytes Class 48 double

Attributes

Name Size

В 3x2

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

3. Умножение и деление вектора на число (например, в режиме командной строки):

» q=[6 7 8 9]

q =

6 7 8 9

» q*4 ans =

24 28 32 36

» 4 *q ans =

24 28 32 36

» q/4 ans =

1.5000 1.7500 2.0000 2.2500

» 4/q

Error using /

Matrix dimensions must agree.

Отметим, что умножать вектора на число в системе MATLAB можно как справа, так и слева (заметим, что умножение матрицы на число подобно умножению вектора на число). Деление числа на вектор невозможно.

4. Поэлементное умножение векторов (например, в режиме командной строки):

» а=[1 2 4 ] ;

» Ь=[3 2 0] ;

>> а.*Ь ans =

  • 3 4 0
  • 5. Сложение матриц (например, в режиме командной строки):

» А=[4 1; 0 5]

А =

  • 4 1
  • 0 5

» В=[2 2; 17]

В =

  • 2 2
  • 1 7

» С=[1 2 3; 0 4 2]

С =

  • 12 3
  • 0 4 2

» Rl=A+B

R1 =

б 3

1 12

» R2=A+C

Matrix dimensions must agree.

» R3=A+7 R3 =

  • 11 8
  • 7 12

Как видно, операция сложения выполняется поэлементно и порождает массив тех же размеров, что и исходные операнды. Если используются операнды разных размеров выдается сообщение об ошибке. Исключением в этом смысле является ситуация, когда один из операндов является скаляром (в таких случаях скаляр предварительно расширяется до массива того же размера, что и матричный операнд).

6. Поэлементное возведение в степень матрицы (например, в режиме командной строки):

» Х=[8 5 3 6; -2 4 -7 1]

X =

  • 8 5 3 6
  • -2 4-7 1

» Y=[2 4 -7 9; 1 3 2 8]

Y =

  • 2 4-79
  • 13 2 8

» X. л3 ans =

  • 512 125 27 216
  • -8 64 -343 1

» Х.ЛУ ans =

  • 1.0е+07 *
  • 0.0000 0.0001 0.0000 1.0078
  • -0.0000 0.0000 0.0000 0.0000

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

Следует обратить внимание на результат, полученный при выполнении операции х.ЛУ. Как видно, система MATLAB выделила общий множитель 1.0е+07 для всех элементов результирующей матрицы.

 
Посмотреть оригинал