Ввод, сложение и вычитание векторов
Вектор-столбцы и вектор-строки
Основные определения и соглашения
Работа с массивами
Лабораторная работа №2
Среда обитания
Опасности
Природная среда (биосфера)
Техногенная среда (техносфера)
Производственная среда
Ноксосфера
Все данные MatLab представляет в виде массивов. Очень важно правильно понять, как использовать массивы. Без этого невозможна эффективная работа в MatLab, в частности построение графиков, решение задач линейной алгебры, обработки данных, статистики и многих других. В этой главе подробно описаны вычисления с векторами и матрицами. Даже если вы знакомы с каким-либо языком программирования, все равно лучше прочесть эту главу. MatLab предоставляет пользователю обширные возможности для работы с массивами данных. Следующий раздел посвящен необходимым сведениям, касающимся массивов.
Что такое массив, должно быть известно каждому, кто хоть немного занимался программированием. Массив — упорядоченная, пронумерованная совокупность однородных данных. У массива должно быть имя. Массивы различаются по числу размерностей или измерений: одномерные, двумерные, многомерные. Размером массива называют число элементов, вдоль каждого из измерений. Доступ к элементам осуществляется при помощи индекса. В MatLab нумерация элементов массивов начинается с единицы. Это значит, что индексы должны быть больше или равны единице. Важно понять, что вектор, вектор-строк а, матрица или тензор являются математическими объектами, а одномерные, двумерные или многомерные массивы — способы хранения этих объектов в компьютере. Всюду дальше в книге будут использоваться слова вектор, матрица и тензор, если больший интерес представляет сам объект, чем способ его хранения. Вектор может быть записан в столбик (вектор-столбец) и в строку (вектор-строк). Вектор-столбцы и вектор-строки часто будут называться просто векторами, различие будет сделано в тех случаях, если важен способ хранения вектора в MatLab. Векторы и матрицы обозначаются курсивом, а соответствующие им массивы прямым моноширинным шрифтом, например: "вектор а содержится в массиве а", "запишите матрицу R в массив к".
Работу с массивами начнем с простого примера — вычисления суммы векторов
Для хранения векторов используйте массивы а и 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