![]() КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Создание матриц и базовые матричные операции
ИСПОЛЬЗОВАНИЕ МАТРИЦ В MATLAB. Базовой структурой данных в MATLAB является матрица (matrix): двухмернaя, имеющая прямоугольную форму структура данных, в которой хранится набор элементов данных в простом и легко доступном формате. Эти элементы данных могут быть числами, символами, логическими единицами true или false, или даже другими типами структур данных MATLAB. В MATLAB используются двухмерные матрицы для хранения отдельных чисел, а также, линейных последовательностей данных. В этих случаях размерности 1×1 и 1×n, соответственно, где n – длина числовой последовательности. MATLAB также поддерживает структуры данных, которые имеют больше чем два измерения. В MATLAB эти структуры данных имеют название arrays (массивы). MATLAB является вычислительной средой, основой которой является матрица. Все вводимы в MATLAB данные хранятся в форме матрицы или многомерного массива. Матрица – это двух мерный массив вещественных или комплексных чисел. В MATLAB имеется ряд функций, которые позволяют создавать различные типы матриц. Простейший способ создания матрицы в MATLAB – использовать оператор констора матрицы, []. Этот оператор создает строку в матрице при вводе элементов (показаны ниже как E) в скобках. Каждый элемент необходимо отделять запятой или пробелом: row = [E1, E2,..., Em] row = [E1 E2... Em] Например, для того, чтобы создать матрицу из пяти элементов, напечатайте A = [12 62 93 -8 22]; Для того, чтобы начать новую строку, надо закончить текущую точкой с запятой: A = [row1; row2;...; rown] В этом примере вводится матрица, состоящая из 3-х строк и 5-и столбцов (3×5) чисел. Все строки должны иметь одинаковое число элементов, A = [12 62 93 -8 22; 16 2 87 43 91; -4 17 -72 95 6] A = 12 62 93 -8 22 16 2 87 43 91 -4 17 -72 95 6 Этот оператор констора матрицы может создавать только двухмерные матрицы (включая 0×0, 1×1, 1×n,). Специализированные матричные функции.
Например, для создания волшебной квадратной матрицы 5×5 воспользумся функцией magic, A = magic(5)
Конкатенация (объединение) матриц. Матричная конкатенация – это объединение одной или большего числа матриц, для получения новой матрицы. Скобки [] используются не только как конструктор матрицы, но также как оператор конкатенации. Результатом выражения C = [A B] является конкатенация матриц A и B по горизонтали. Результатом выражения C = [A; B] является конкатенация матриц A и B по вертикали. This example constructs a new matrix C by concatenating matrices A and B in a vertical direction: A = ones(2, 5) * 6; % матрица 2×5 все элементы которой равны 6 B = rand(3, 5); % матрица 3×5 состоящая из случайных чисел C = [A; B] % конкатенация матриц A и B по вертикали Функции матричной конкатенации
Генерирование числовых последовательностей, оператор двоеточие (:). Оператор двоеточие (first:last) генерирует матрицу 1×n (или вектор) последовательных чисел от первого числа до последнего. По умолчанию получаем последовательность чисел, увеличивающихся на единицу, каждое последующее на 1 больше предыдущего. A = 10: 15 A = 10 11 12 13 14 15 Последовательность чисел не обязательно должна состоять из целых положительных. Она может содержать отрицательные числа, а также дроби: A = -2.5: 2.5 A = -2.5000 -1.5000 -0.5000 0.5000 1.5000 2.5000 Для генерирования числовых последовательностей с шагом, отличным от 1, оператор двоеточие может использоваться со указанием величины приращения элементов (first:step:last). Величина step указывает шаг приращения (уменьшения, если step является отрицательным числом) элементов последовательности чисел. Например, A = 10: 5: 50 A = 10 15 20 25 30 35 40 45 50 Шаг может быть дробным или отрицательным числом, A = 3: 0.2: 3.8 A = 3.0000 3.2000 3.4000 3.6000 3.8000 A = 9:-1: 1 A = 9 8 7 6 5 4 3 2 1 Индексация матриц. Для доступа к отдельному элементу матрицы задайтеномерстроки и номерстолбца используя следующу запись A(n, m), где A – матричная переменная. Номерстолбца всегда указывается первым, а номерстолбца – втрым, например, A = magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 для доступа к элементу в 4-й строке, 2-й колонке напечатайте A(4, 2) ans = Для массивов, которые имет размерность большую двух, необходимо задавать дополнительные индексы, которые следуют за индексами строк и столбцов. Линейная индексация матриц. Вы можете обращаться к элементу матрицы используя единственный индекс, A(k). MATLAB хранит матрицы и массивы не в той форме, в которой они появляются в командном окне, а как единый столбец элементов. Этот единый столбец составлен из столбцов матрицы, каждый столбц присоединяется к предыдущему. Так, матрица A A = [2 6 9; 4 2 8; 3 5 1] A = 2 6 9 4 2 8 3 5 1 в действительности хранится в памяти как последовательность 2, 4, 3, 6, 2, 5, 9, 8, 1 Элемент с строке 3, столбец 2 матрицы A (значение = 5) может быть идентифицирован как элемент 6 в действительной хранимой последовательности. Для доступа к этому элементу, есть возможность использовать стандартный синтаксис A(3,2), или есть возможность применить A(6), относящуюся к линейной индексации. Обращение к последовательности элементов. Для матрицы A размерности 4×4, сумму элементов 4-го столбца можно вычислить набрав A = magic(4); A(1,4) + A(2,4) + A(3,4) + A(4,4) Можно уменьшить размер выражения используя оператор двоеточие. Индексные выражения, включающие двоеточия, обращаются к последовательности элементов матрицы. Выражение, A(1:m, n) обращается к элементам в строках с 1-й по m-ю, n-го столбца матрицы A. Используя эту запись, можно вычислить сумму элементов 4-го столбца матрицы A более компактно: sum(A(1:4, 4)) Обращение к элементам, которые не следуют друг за другом. Для этого используйте оператор двоеточия с величиной шага. Выражение m: 3: n означает обращение к каждому третьему элементу матрицы. При линейной индексации имеем: B = A; B(1:3:16) = -10 B = -10 2 3 -10 5 11 -10 8 9 -10 6 12 -10 14 15 -10 MATLAB поддерживает тип индексации массивом, при которой один массив используется как индекс в другом массиве. Этот тип индексации может быть основан на задании в массиве индексов либо номеров, либо размещения элементов. В приведенном ниже примере массив B состоит из индексов 1, 3, 6, 7, и 10 массива A. В этом случае, числовые значения элементов массива B соответствуют положению элементов в массиве A: A = 5:5:50 A = 5 10 15 20 25 30 35 40 45 50 B = [1 3 6 7 10]; A(B) ans = 5 15 30 35 50 Ключевое слово end (конец). MATLAB предоставляет ключевое слово end для доступа к последнему элементу массива. В предыдущем примере можно использовать запись B(1:3:end) = -10 Описание всех элементов строки или столбца. Двоеточие само по себе относится ко всем элементам строки или столбца матрицы. Используя следующую запись может быть вычислена сумма элементов во 2-м столбце волшебной квадратной 4×4 матрицы A: sum(A(:, 2)) ans = Используя двоеточие в линейной индексации можно обратиться ко всем элементам всей матрицы. A(:) ans = . . . Получение информации о матрице. Функции, возвращающие информации о форме матрицы.
Изменение размерности и формы матриц. Способы увеличения размерности матрицы. • Конкатенация новых элементов • Размещение элементов за границами матрицы Конкатенация наиболее подходит, если необходимо добавить к матрице новые элемнты или блоки, совместимые по размерности с исходной матрицей. Для добавления одного или большего числа элементов к матрице, которые не совместимы по размерности с исходной матрицей, часто можно разместить новые элементы за границами исходной матрицы. MATLAB автоматически дополнит матрицу нулями, для того, чтобы она была прямоугольной. Пример. Дана матрица 3×5, A = [ 10 20 30 40 50;... 60 70 80 90 100;... 110 120 130 140 150]; ее необходимо дополнить 4-й строкой. Разместим новый элемент в 1-м столбце не существующей 4-й строки исходной матрицы. MATLAB расширит матрицу A добавлением новой 4-й строки, заполнив нулями колонки со 2-й по 5-ю. A(4,1) =0 A = 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 0 0 0 0 0 Размерность матрицы может быть уменьшена за счет удаления строк и столбцов из матрицы присваиванием удаляемым строкам и столбцам значения пустого массива. Пример. Дана матрица 4×4, A = magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 из нее необходимо удалить 2-й столбец, A(:, 2) = [] результат: A = 16 3 13 5 10 8 9 6 12 4 15 1 Для удаления единственного элемента или последовательности элементов может быть использована линейная индексация. При этом результатом будет преобразование оставшихся элементов в вектор-строку, A(2: 2: 10) = [] в результате получим: A = 16 9 3 6 13 12 1 Функции, изменяющие форму матрицы
Примеры применения функций, изменяющих форму матрицы. Используя матрицу А, имеющую размерность 3×4 построить матрицу В размерности 2×6: A = [1 4 7 10; 2 5 8 11; 3 6 9 12] A = 1 4 7 10 2 5 8 11 3 6 9 12 B = reshape(A, 2, 6) B = 1 3 5 7 9 11 2 4 6 8 10 12 Для транспонирования матрицы можно использовать как функцию transpose, так и оператор (.')s: B = A.' B = 1 2 3 4 5 6 7 8 9 10 11 12 Скаляры. Скалярная величина – это любое отдельное вещественное или комплексное число, которое представлено вMATLAB как матрица размерности 1×1: A = 5; ndims(A) ans = size(A) ans = 1 1 Функция isscalar определяет, содержит ли переменная скалярную величину: isscalar(A) ans = Векторы. Вектор – это матрица, одина из размерностей которой равна единице, а другие больше единицы. Пример числового вектора-строки: A = [5.73 2-4i 9/7 25e3.046 sqrt(32) 8j] size(A) ans = 1 7 Пример числового вектора-столбца: В = [5.36; 7.01; 9.44] В = 5.36 7.01 9.44 size(В) ans = 3 1 isvector(А), isvector(В) ans =
ans =
Матричные операции. Сложение и вычитание матриц Для сложения и вычитания матриц необходимо, чтобы обе матрицы имели одинаковый размер или одна из них была скаляром. Сложение и вычитании матриц осуществляется поэлементно. Например, A = pascal(3); B = magic(3); X = A + B X = 9 2 7 4 7 10 5 12 8 Y = X – A Y = 8 1 6 3 5 7 4 9 2 Векторное произведение и транспонирование Вектор-строка и вектор-столбец могут быть перемножены, если они имеют одинаковую длину. Имеется два вида произведения векторов – внутреннее и внешнее. Результатом внутреннего произведения является вектор, а внешнего – матрица. Например: v = [2 0 -1]; u = [3; 1; 4]; x = v*u x = y = u*v y = 6 0 -3 2 0 -1 8 0 -4 Для матриц с вещественными элементами, операция транспонирования (оператор апостроф (')) меняет местами aij и aji. MATLAB использует также оператор апостроф (') для транспонирования матриц с комплексными числами, при этом кроме транспонирования комплексные числа заменяются на комплексно-сопряженные. Для транспонирования матриц с комплексными числами без замены на комплексно-сопряженные, используется оператор точка-апостроф (.'). Например, B = magic(3) X = B' B = 8 1 6 3 5 7 4 9 2 X = 8 3 4 1 5 9 6 7 2 Транспонирование превращает вектор-строку в вектор-столбец, и наоборот: x = v' x = -1
y = u' y = 3 1 4 Умножение матриц. Произведение матриц определяется таким образом, чтобы отражать состав базовфых линейных преобразований и обеспечивать компактное представление систем совместимых линейных уравнений. Матричное произведение матриц C = AB определено, когда размерность столбцов матрицы A равна размерности строк матрицы B, или когда один из множителей скаляр. Если A имеет размерность m×p и B – размерность p×n, их произведение C имеет размерность m×n. Например, A=[1 2 3;4 5 6]; B=[1 2;3 4; 5 6]; С=A*B С = 22 28 49 64 Матрица может быть умножена справа на вектор-столбец (длина вектора-столбца должна быть равна длине строки матрицы) и слева на вектор-строку (длина вектора-строки должна быть равна длине столбца матрицы), например: A=[1 2 3;4 5 6]; u = [3; 1; 4]; Х = A*u Х = B=[1 2;3 4; 5 6]; v = [2 0 -1]; Y = v*B Y = -3 -2 Любая матриц и любой вектор могут быть умножены на скаляр, например, A=[1 2 3;4 5 6]; 7*A ans = 7 14 21 28 35 42 v = [2 0 -1]; 3*v ans = 6 0 -3 Единичная матрица (общепринятое обозначение I) – это матрица любой размерности, все элементы главной диагонали которой равны единице, а остальные элементы равны нулю. Эти матрицы имеют свойство, AI = A и IA = A в случае соответствия размерностей A и I. В MATLAB функция eye(m,n) возвращает единичную прямоугольную матрицу m×n и eye(n) возвращает единичную квадратную матрицу n×n. Нормы векторов и матриц. p -норма вектора x вычисляется функцией norm(x,p). Эта функция определена для любого значения p > 1, наиболее часто используемые значения p 1, 2, и ∞. По умолчанию p = 2, что соответствует Евклидовой длине: v = [2 0 -1]; [norm(v,1) norm(v) norm(v,inf)] ans = 3.0000 2.2361 2.0000 p -норма матрицы A, может быть вычислена для p = 1, 2, and ∞ функцией norm(A,p). Опять, по умолчанию p = 2: C = fix(10*rand(3,2)); [norm(C,1) norm(C) norm(C,inf)] ans = 19.0000 14.8015 13.0000
Дата добавления: 2014-01-11; Просмотров: 7156; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |