Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодичкаИПлб.doc
Скачиваний:
38
Добавлен:
08.05.2019
Размер:
6.96 Mб
Скачать

Лабораторная работа ип2 работа с матрицами в matlab

1. Общие сведения

Matlab является компьютерной системой, которая предназначена для осуществления операций с матрицами. Матрица, столбец, строка – это математические объекты. Способом их представления и хранения в памяти компьютера является массив (Array). По умолчанию в Matlab принято, что любая заданная переменная представляет собой массив. Под матрицей понимается двумерный массив , под вектором – одномерный: – вектор-строка или – вектор-столбец. Отдельно заданное значение (скаляр) Matlab воспринимает как массив размером . В программировании массив это совокупность однотипных значений, упорядоченных по индексам. У массива, как и у любой переменной, должно быть имя. Все элементы одного массива имеют одинаковое имя – имя массива и различаются порядковыми номерами (индексами). Индексы однозначно определяют положение элемента в массиве. В Matlab разрешены только натуральные индексы. Все элементы массива одинаково доступны. Для инженера больший интерес представляет сам объект – матрица, нежели способ его хранения – массив. Поэтому в дальнейшем будут преимущественно использоваться слова "матрица" и "вектор". Для обозначения матриц в математическом тексте принято использовать прописные, а для векторов строчные полужирные буквы прямого шрифта. Для их отдельных элементов – буквы строчного курсива. Например, – первый элемент вектора b, – элемент матрицы А, стоящий во второй строке в третьем столбце (рис. 2.1, а). В памяти компьютера Matlab хранит матрицу по столбцам (рис. 2.1, б). Это может быть важным при выполнении операций над матрицей и адресации отдельных ее элементов.

а б

Рис. 2.1. Матрица А и ее представление в памяти

2. Одномерные массивы – векторы

Для определенности будем рассматривать числовые данные. Векторы – это линейные наборы чисел (элементов), в которых позиция каждого элемента задаётся единственным числом – его номером. Можно говорить о первом элементе вектора, о втором и т.д. Matlab различает прописные и строчные буквы. Поэтому в тексте программы или в командной строке и вектор в целом, и отдельный его элемент обозначаются одними и теми же символами. Элемент отличается тем, что за его именем обязательно стоит индекс, заключенный в круглые скобки. В общем случае индекс может быть вычисляемым объектом, т.е. задаваться выражением.

Для создания вектора, состоящего из нескольких чисел, чаще всего используется операция конкатенации (сцепления, объединения), обозначаемая в Matlab с помощью квадратных скобок – [ ]. Элементы, объединяемые в массив, должны отделяться друг от друга разделителями. При формировании вектора-строки в качестве разделителя можно использовать пробел и/или запятую. Например, выражение

>> a=[1 2 3]

a =

1 2 3

формирует переменную с именем a, являющуюся вектором-строкой из трёх чисел. Поскольку в конце командной строки не поставлен символ подавления эхо-печати – точка с запятой, то после нажатия на Enter на экране распечатался результат выполнения команды – содержимое созданной переменной с именем а (строки результата не предваряются символом >>). Из результата хорошо видно, что а именно вектор-строка. Аналогичный результат можно получить, выполнив выражение

>> b=[10,20,30]

b =

10 20 30

В этом примере разделителем элементов при формировании вектора являлась запятая. Можно одновременно использовать оба разделителя, или задавать значения элементов через несколько пробелов. Вектор можно формировать и поэлементно (прописать каждый элемент отдельно, не используя конкатенацию). Например

>> c(1)=1.5; c(2)=2*c(1)

c =

1.5000 3.0000

В первой строке примера сформирован вектор с из двух элементов, причем второй имеет в двое большее значение, чем первый. Во второй и третьей строках дано эхо Matlab – печать результата. После выполнения этих примеров в рабочем пространстве будут размещены три переменные с именами a, b и с (рис. 2.2).

Рис. 2.2. Создание векторов-строк

В колонке Size рабочего пространства Workspace хорошо видно, что созданы именно векторы-строки – для них указаны размеры типа . Теперь можно корректировать значения элементов созданных переменных, добавлять в них новые элементы, объединять векторы (конкатенировать). Например

>> a(3)=13; a(4)=4

a =

1 2 13 4

>> b=[b 4.25]

b =

10.0000 20.0000 30.0000 4.2500

>> c=[7.5 c a]

c =

7.5000 1.5000 3.0000 1.0000 2.0000 13.0000 4.0000

В векторе a изменили значение третьего элемента со старого, равного 3, на новое, равное 13, и добавили четвертый элемент. К вектору b тоже добавили четвертый элемент, равный 4,25, но технологией конкатенации. В начало вектора с добавлен элемент (уже имеющиеся элементы автоматически сдвинулись вправо на один индекс), а в его конец ("в хвост") конкатенированы элементы вектора a (сам вектор а при от этого не изменяется). Вектор с стал длиной 7 элементов.

Текущую длину одномерного массива (количество элементов в нем) всегда можно узнать с помощью функции length (длина)

length(с)

ans =

7

Векторы могут состоять не только из вещественных чисел. Выражение

d = [1+2j, 2+3j, 3-4j];

формирует вектор-строку d из трех комплексных чисел.

Выражение

>> d = [];

сделает вектор пустым (переменная d сохранится в Workspace, но размер ее будет 0×0).

>> с=[ [] 3]

с =

3

сначала очистит переменную с (сделает вектор пустым), а потом добавит в нее первый (и он будет единственный) элемент, равный 3.

Внимание: 1. При попытке адресации несуществующего элемента, например пятого элемента вектора a, в командном окне Matlab появится сообщение об ошибке

>> a(5)

??? Index exceeds matrix dimensions.

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

>> a(5) = -17;

2. Добавление в пустой или не еще существующий вектор элементов с номерами, идущими с пропуском значений, породит заполнение нулями не адресованных элементов вектора.

> d=[];

>> d(3)=3; d(7)=17

d =

0 0 3 0 0 0 17

В результате в векторе d будет семь элементов.

Для задания значений компонентов вектора-столбца используются те же приемы, но в качестве разделителей элементов выступает символ ";" – точка с запятой. Например

>> a=[1; 5; 10]

a =

1

5

10

>> b=[2 4]'

b =

2

4

>> c=[a; b]

c =

1

5

10

2

4

>> d=[6

9]

d =

6

9

Здесь вектор b получается из вектора-строки при помощи операции транспонирования, обозначаемой символом ' (апостроф). Вектор с формируется конкатенацией двух столбцов a и b. При формировании столбца d в качестве разделителя элементов используется признак конца строки (нажатие на Enter). В результате четырех операций присваивания в рабочем пространстве (рис. 2.3) будет сформировано четыре вектора-столбца (в колонке Size размер переменных указан по типу – столбец из m строк и в колонке Value значения компонентов перечислены хоть и в строку, но через точку с запятой). Тип (класс) элементов у всех векторов double – числовой двойной точности.

Рис. 2.3. Векторы-столбцы в Workspace