Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zadania_na_2_semestr / Методическое пособие.pdf
Скачиваний:
377
Добавлен:
02.04.2015
Размер:
1.62 Mб
Скачать

ans =

4 4

55

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

>> M(1, :) ans =

1

1

2

2

Кроме того (начиная с версии 5.0) на последнюю строку или столбец массива можно ссылаться с помощью ключевого слова «end»:

>> M(2:end, 1:2) ans =

22

3 3

44

Способ 3 Расположение элементов матрицы в памяти компьютера определяет еще один способ

обращения к ним. Матрица A размера m на n хранится в виде вектора длины m*n, в котором элементы матрицы расположены один за другим по столбцам:

[А(1,1) А(2,1) ... А(m,1) ... ... ... А(1,n) А(2,n) ... А(m,n)].

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

Например, матрица W содержится в следующем векторе:

[W(1,1) W(2,1) W(1,2) W(2,2) W(1,3)W(2,3)].

Доступ к элементам матрицы осуществляется следующим образом:

>> W W =

2

4

6

-1

-3

-5

>>W(2) ans =

-1

>>W(5) ans =

6

Заполнение матриц

43

Если нужно присвоить элементу W(i, j) новое значение x, то следует использовать следующее выражение: W(i, j) = x. Пример:

>> W(2,2) = 0 W =

2

4

6

-1

0

-5

Тем же образом можно заполнять и подблоки матрицы. Проведем это на матрице M:

>> M M =

1

1

2

2

2

2

3

3

3

3

4

4

4

4

5

5

>> M(3:end, :) = 0 M =

1

1

2

2

2

2

3

3

0

0

0

0

0

0

0

0

Операции деления, умножения и возведения в степень.

Наряду с операциями над отдельными элементами матриц и векторов система позволяет производить операции умножения, деления и возведения в степень сразу над всеми элементами, то есть над массивами. Для этого перед знаком операции ставится точка. Например, оператор * означает умножение для векторов или матриц, а оператор .* – поэлементное умножение всех элементов массива.

Так, если M – матрица, то M.*2 даст матрицу, все элементы которой умножены на скаляр – число 2. Впрочем, для умножения матрицы на скаляр оба выражения – M*2 и M.*2

– оказываются эквивалентными. Это правило распространяется на операцию деления - ./, и операцию возведения в степень .^.

Примеры:

>> A = [ 1 2; -1 -2] A =

12

-1 -2

>> A.*2

 

ans =

4

2

-2

-4

44

>> B = [ 3 2; 2 3] B =

32

23

>>A.*B

ans =

34

-2 -6

>> A.^B ans =

14

1-8

Транспонирование матриц в MATLAB осуществляется оператором «».Этот оператор так же может записываться «.’», при этом оба выражения эквивалентны. Пример:

>> A = [ 1 2 3 4] A =

1

2

3

4

>> A' ans =

1

2

3

4

>> A''

 

 

 

ans =

2

3

4

1

Создание матриц специального вида

Заполнение прямоугольной матрицы нулями производится встроенной функцией zeros, аргументами которой являются число строк и столбцов матрицы. Матрица, состоящая из единиц, образуется в результате вызова функции ones. Если вызывать функцию zeros (или ones) с одним аргументом n, то она создаст массив размером n на n. Это правило распространяется так же на ones.

Пример:

>> A = zeros(2) A =

00

00

45

>> B = ones(2,3) B =

1

1

1

1

1

1

Для создания единичной матрицы используется функция eye:

 

 

 

>> E = eye(4)

 

 

E =

0

0

0

1

0

1

0

0

0

0

1

0

0

0

0

1

Функция eye с двумя аргументами создает прямоугольную матрицу, у которой на главной диагонали стоят единицы, а остальные элементы равны нулю:

 

 

 

 

 

>> E = eye(3,6)

 

 

 

 

E =

0

0

0

0

0

1

0

1

0

0

0

0

0

0

1

0

0

0

Есть возможность заполнения матриц случайными элементами. Результатом функции rand является матрица чисел, распределенных случайным образом между нулем и единицей, а функции randn — матрица чисел, распределенных по нормальному закону:

 

 

 

>> R = rand(4)

 

 

R =

0.6324

0.9575

0.9572

0.8147

0.9058

0.0975

0.9649

0.4854

0.1270

0.2785

0.1576

0.8003

0.9134

0.5469

0.9706

0.1419

>> Rn = randn(3,4)

 

 

Rn =

1.4172

0.7172

1.0347

-0.1241

1.4897

0.6715

1.6302

0.7269

1.4090

-1.2075

0.4889

-0.3034

Функция diag служит и для выделения диагонали матрицы в вектор, например:

 

 

 

>> D = [ 1 2 3 4]

 

 

D =

2

3

4

1

>> D = diag(D)

 

 

D =

0

0

0

1

0

2

0

0

0

0

3

0

0

0

0

4

46