Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Основные матричные операции



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

а умножение – знаком звездочка *. Введем матрицу размером 3×2

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

 

Проверить полученный результат можно умножив матрицу Р саму на себя.

Матричные данные размещаются в памяти последовательно по столбцам. Элементы матрицы в пределах строки отделяются пробелами или запятыми. Непосредственное задание матрицы можно осуществить несколькими способами. Например, вектор-столбец, т.е. матрица, вторая размерность которой равна единице, может быть присвоена переменной А вводом одной строки:

>> A=[7+4i; 4; 3.2] % Ввод вектора-столбца

A =

7.0000 + 4.0000i

4.0000

3.2000

или вводом нескольких строк

>> A = [ % ввод вектора по строкам

7+4i

3.2];

Векторы могут быть сформированы как диапазоны – при помощи двоеточий, разделяющих стартовое значение, шаг и предельное значение. Если величина шага отсутствует, то по умолчанию его значение равно единице.

В результате n:m:k будет сформирован вектор, последний элемент которого не больше k для положительного шага m, и не меньше – для отрицательного: [n, n+m,n+m+m,…]

Например:

>> a=1:2:5

a =

1 3 5

Задание диапазона используется также при организации цикла. В табл. 4.1 представлен некоторый набор функций для создания матриц специального вида.

 

Таблица 4.1 – Функции описания матриц

Функция Описание
eye(m,n) Единичная матрица размерности m×n
zeros(m,n) Нулевая матрица размерности m×n
ones(m,n) Матрица, состоящая из одних единиц размерности m×n
rand(m,n) Возвращает матрицу случайных чисел равномерно, распределенных в диапазоне от 0 до 1, размерность m×n
randn(m, n) Возвращает матрицу размерности m×n, состоящих из случайных чисел, имеющих гауссовское распределение
tril(A),triu(A) Выделение нижней треугольной и верхней треугольной частей матрицы A
inv(A) Нахождение обратной матрицы A
det(A) Нахождение определителя (детерминанта) квадратной матрицы A

 

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

Для дальнейших примеров введем матрицу 2 x 2:

 

>> A=[1 2+5*i; 4.6 3]

A =

1.0000 2.0000 + 5.0000i

4.6000 3.0000

Чтобы изменить элемент матрицы, ему нужно присвоить новое значение:

>> A(2,2)=10 % Второй элемент второй строки

 

A =

1.0000 2.0000 + 5.0000i

4.6000 10.0000

 

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

Например, нулевая матрица того же порядка, что и матрица А, будет сформирована по команде

 

>> A2=zeros(size(A))

A2 =

0 0

0 0

 

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

>> A(1:2, 2)

ans =

2.0000 + 5.0000i

10.0000

 

Двоеточие само по себе означает строку или столбец целиком. Для удаления элемента вектора достаточно присвоить ему пустой массив – пару квадратных скобок [ ]. Чтобы вычеркнуть одну или несколько строк (столбцов) матрицы нужно указать диапазон удаляемых строк (столбцов) для одной размерности и поставить двоеточие для другой размерности. Для нахождения длины вектора можно воспользоваться также командой length.

Рассмотрим примеры использования фунций описания матриц.

 

>> A=[1 2 3 4 5 6;7 8 9 10 11 12;13 14 15 16 17 18];

 

>> tril(A) ans = 1 0 0 0 0 0 7 8 0 0 0 0 13 14 15 0 0 0   >> triu(A) ans = 1 2 3 4 5 6 0 8 9 10 11 12 0 0 15 16 17 18

 

>> A=[1 2 3 4;5 9 7 8;6 13 11 12;8 5 3 4];

 

Обратная матрица диагональ матр определитель
>> inv(A) ans = -0.0000 -0.5000 0.2500 0.2500 -0.3333 1.1667 -0.5833 -0.2500 -0.3333 -3.3333 2.1667 0.5000 0.6667 2.0417 -1.3958 -0.3125   >> diag(A) ans =   >> det(A) ans = -48  

 

Набор арифметических операций в MatLab для работы с матрицами состоит из стандартных операций сложения – вычитания, умножения – деления, операции возведения в степень и дополнены специальными матричными операциями (табл. 4.2). Если операция применяется к матрицам, размеры которых не согласованы, то будет выведено сообщение об ошибке.

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

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

 

Таблица 4.2 – Знаки операций

Символ Назначение
+,- Символы плюс и минус обозначают знак числа или операцию сложения и вычитания матриц, причем матрицы должны быть одной размерности
* Знак умножения обозначает матричное умножение, для поэлементного умножения матрицы применяется комбинированный знак (.*)
' Апостроф обозначает операцию транспонирования (вместе с комплексным сопряжением), транспонирование без вычисления сопряжения обозначается при помощи комбинированного знака (.')
/ Левое деление  
\ Правое деление  
^ Оператор возведения в степень, для поэлементного возведения в степень применяется комбинированный знак (.^)

 

Проиллюстрируем различие обычного и поэлементного умножений при помощи следующего примера.

Введём матрицу H размера 2х2 и матрицу D из единиц той же размерности:

 

>> H=[0 1; 2 3], D=ones(size(H))

H =

0 1

2 3

D =

1 1

1 1

Перемножим матрицы, используя обычное умножение:

>> H*D

ans =

1 1

5 5

 

Теперь применим поэлементную операцию:

 

>> H.*D

ans =

0 1

2 3

 

Система MatLab имеет ряд функций, предназначенных для обработки данных, заданных в матричной или векторной форме (табл. 4.3).

 

Таблица 4.3 – Функции для работы с матрицами

Функция Описание
size(A) Возвращает массив, состоящий из числа строк и числа столбцов матрицы.
sum(A) Возвращает сумму всех элементов по столбцу
mean(A) Возвращает среднее значение столбца матрицы
std(A) Возвращает среднеквадратическое отклонение столбца матрицы
min(A), max(A) Возвращает минимум и максимум соответственно, по столбцу матрицы
sort(A) Сортирует столбец матрицы по возрастанию
prod(A) Вычисляет произведение всех элементов столбцов

Например, зададим значения матрицы А и вычислим суммы элементов строк S и суммы элементов столбцов S1:

 

» A = [ 1 2 3; 4 5 6; 7 8 9 ]

А=[1 2 3

4 5 6

7 8 9]

 

» S = sum(A) % вектор сумм элементов столбцов

S = [12 15 18]

 

» S1= sum(A') % вектор сумм элементов строк

S1 = [6 15 24]

 

Так как функция mean(x) –вычисляет средние значения элементов столбцов матрицы, и если х – вектор из n елементов, то вычисляется

mx = . Например:

 

» MA=mean(A)

MA = [4 5 6]

» MS=mean(S)

S= 15

Минимальные значения столбцов матрицы, например для матрицы A :

» Mn= min (A)

Mn = [1 2 3]

Максимальные значения вектора или элементов столбцов матрицы, например для матрицы A:

» Mx= max(A)

Mx= [7 8 9]

Сортировка по возрастанию: например:

»y = [3 1 8 4 5];

»w = sort(y)

w = [1 3 4 5 8]

 

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

»b = − sort(-y)

b = [8 5 4 3 1]

 

Символы и текстовые строки в MatLab вводятся при помощи простых кавычек. Во внутреннем представлении символы даны целыми числами. Конвертировать массив символов в числовую матрицу позволяет команда double. Обратная операция совершается по команде char. Печатаемые символы из стандартного набора ASCII представлены числами от 32 до 255.

Приведем примеры для данных команд. Вначале введем строку:

 

>>s = 'Привет'

s =

Привет

 

Отметим, что для ввода русских букв следует выбрать в меню File/ Preferences/ Command Windows Fontшрифт с русской кодировкой.

 

>>h = [v + ' от MATLAB']

v =

Привет от MATLAB

 

Тот же результат получится, если вместо переменной v использовать строковую переменную s.

Для перевода численных данных в строковые переменные имеется ряд команд преобразования. В табл. 4.4 приведены некоторые функции для этих и обратных операций, а полный список можно получить по команде help strfun.

 

Таблица 4.4 – Функции работы со строковыми переменными

Функция Действие
num2str Перевод числа в строку
int2str Перевод целого числа в строку
mat2str Преобразование матрицы в строку
str2mat Объединение строк в матрицу
str2num Преобразование строки в число
strcat Объединение строк

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.