Ввод, сложение и вычитание векторов

Вектор-столбцы и вектор-строки

Работу с массивами начнем с простого примера — вычисления суммы векторов

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

>>а = [1.3; 5.4; 6.9]

a=

1.3000

5.4000

6.9000

Замечание

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

Так как введенное выражение не завершено точкой с запятой, то MatLab тематически вывела значение переменной а. Введите теперь второй вектор, подавив вывод на экран

>>b = [7.1; 3.5; 8.2];

Для нахождения суммы векторов используется знак +. Вычислите сумму, запишите результат в массив с и выведите его элементы в командное окно:

>> с = а + b

8.4000

8.9000

15.1000

Узнайте размерность и размер массива а при помощи встроенных функций

ndims и size: >>ndims(a)

ans=

size(a) ans =

3 1

Итак, вектор а хранится в двумерном массиве а размерностью три на один (вектор-столбец из трех строк и одного столбца). Аналогичные операции можно проделать и для массивов b и с. Заметьте, что числа в MatLab представляются в виде двумерного массива один на один. Отсюда должно стать понятно, почему при сложении векторов используется тот же знак плюс, что и для сложения чисел. Естественно, для нахождения разности векторов следует применять знак минус, с умножением дело обстоит несколько сложнее.

Замечание

Если размеры векторов, к которым применяется сложение или вычитание, не совпадают, то выдается сообщение об ошибке.

Особенность MatLab представлять все данные в виде массивов является очень удобной. Пусть, например, требуется вычислить значение функции sin сразу для всех элементов вектора с (который хранится в массиве с) и записать результат в вектор d. Используйте следующий оператор присваивания:

» d = sin(c)

d =

0.8546

0.5010

0.5712

Итак, встроенные в MatLab элементарные функции приспосабливаются к виду аргументов; если аргумент является массивом, то результат функции будет массивом того же размера, но с элементами, равными значению функции от соответствующих элементов исходного массива. Убедитесь в этом еще на одном примере. Если необходимо найти квадратный корень из элементов вектора d со знаком минус, то достаточно записать:

>>sqrt(d)

ans =

0 + 0.9244i

0 + 0.7078i

0 + 0.7558i

Оператор присваивания не использовался, поэтому MatLab записала ответ в стандартную переменную ans.

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

>> s1 = [3 4 9 2]

s1 =

3 4 9 2

>> s2 = [5 3 3 2]

 

>>s2 =

5 3 3 2

>>s3 = s1 + s2

s3=

8 7 12 4

>>s4=log(s3)

s4 =

2.0794 1.9459 2.4849 1.3863

Выясните, в каких массивах хранятся вектор-строки. Для этого можно использовать функции ndims и size или команду whos:

» whos

Name Size Bytes Class

s1 1x4 32 double array

s2 1x4 32 double array

s3 1x4 32 double array

s4 1x4 32 double array

Итак, вектор-строки s1, s2, s3 и s4 содержатся в двумерных массивах размерностью один на четыре. Для определения длины векторов или вектор-строк служит встроенная функция length:

>>length(s1)

ans=

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

>>vl = [1; 2];

>>v2 = [3; 4; 5];

>>v = [vl; v2]

v=

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

» vl = [1 2];

»v2 = [3 4 5];

»v = [vl v2]

v =

1 2 3 4 5