Матлаб как вывести матрицу

1. Матрица строка. Указывается переменная, ставится знак присвоения и в квадратных скобках через запятую или пробел перечисляются элементы:

2. Матрица столбец. В качестве разделителя элементов применяется символ «;»:

3. Квадратная или прямоугольная матрица:

>> C = [5 6 9; 56 45 73; 15,21,36];

4. Генерация вектора. Синтаксис: = : : . Если не указать шаг, то по умолчанию он принимается за 1.

5. Единичная матрица. Синтаксис: =ones( , ).

6. Нулевая матрица. Синтаксис: =zeros( , );

Доступ к ячейкам матрицы. Синтаксис: ( , ). Необходимо помнить, что нумерация строк и столбцов начинается с 1.

Операции с матрицами:

1. Скалярные операции. Умножение и деление матрицы на число, а также сложение и вычитание матрицы и числа (скаляр) – «.*», «./»,«.+», «.–». Каждая скалярная операция выполняются с каждой ячейкой матрицы отдельно. Любая скалярная (поэлементная) операция, то есть операция сразу над всем массивом, в MatLab обозначаются при помощи точки.

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

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

4. Удаление отдельных столбцов или строк. Для удаления отдельных столбцов или строк матрицы используются: пустые квадратные скобки [] и оператор двоеточие (:).

>> C = [24 33 42; 34 47 60; 44 61 78]

Как и в других алгоритмических языках, к элементам матриц и векторов обращаются, используя индексы. В отличие от языка С, в системе MATLAB индексы отсчитываются от 1 и заключаются в круглые скобки — х(1), а(2,3). Довольно интересной особенностью языка MATLAB является возможность выполнения однотипных операций над подмножеством компонентов векторов или матриц. Для этого вместо индекса указывается диапазон индексов, разделяемых двоеточием.

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

» А – [1 2 3 4; 5 б 7 8; 9 10 11 12]

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

Если же нужно поместить на указанное место некоторое число, например pi, выполните следующее:

А= 1.0000 2.0000 3.0000 4.0000

5.0000 6.0000 3.1416 8.0000

9.0000 10.0000 11.0000 12.0000

Такая операция называется "вырезкой." Вырезать(вставить) можно как один элемент, так и целую матрицу меньших размеров. Допустим, вам надо вырезать всю вторую строку матрицы » А(:)

B= 5.0000 6.0000 3.1416 8.0000

Аналогично можно вставить матрицу В вместо любой строки А

А = 5.0000 6.0000 3.1416 8.0000

5.0000 6.0000 3.1416 8.0000

9.0000 10.0000 11.0000 12.0000

Если верхней границей изменения номеров элементов матрицы является ее размер в этом измерении, вместо него можно использовать служебное слово end. Например:

Эти операции удобно использовать для формирования матриц, большинство элементов которых одинаковы, в частности так называемых разреженных матриц, состоящих в основном из нулей. Для примера рассмотрим формирование разреженной матрицы размером 5×7 с единичными элементами в центре:

«Растянуть» матрицу А в единый вектор v можно с помощью обычной записи v=A(:). При этом создается вектор-столбец с количеством элементов m*n.

Богатые возможности для формирования матриц большой размерности с повторяющимися блоками дает операция кронекеровского произведения kron(A,B) . При этой операции каждый элемент левой матрацы умножается на всю правую матрицу:

»А=[2 3;4 5]; B=[1 1;1 1];

Читайте также:  Лучшие программы для прошивки андроида через пк

1.4. Специфика выполнения арифметических операций

При составлении алгебраических выражений MATLAB разрешает использование традиционных знаков арифметических операций и символов специальных операций, список которых приведен в табл. 2.3.

Покомпонентное сложение числовых массивов одинаковой размерности; добавление скалярной величины к каждому элементу массива

Покомпонентное вычитание числовых массивов одинаковой размерности; вычитание скалярной величины из каждого элемента массива

Умножение матриц в соответствии с правилами линейной алгебры (чис­ло столбцов первого сомножителя должно быть равно числу строк вто­рого сомножителя); умножение всех компонентов массива на скаляр

Покомпонентное умножение элементов массивов одинаковой размерности

Деление скаляра на скаляр; покомпонентное деление всех элементов массива на скаляр:

(а, в — квадратные матрицы одного порядка)

Покомпонентное деление элементов массивов одинаковой размерности

АB= А -1 *B —левое матричное деление

А. B— покомпонентное деление элементов B на A (левое поэлементное деление)

Возведение скаляра в любую степень;

вычисление целой степени квадратной матрицы

Задание числовых значений элементов матрицы;

задание выходных параметров функции.

Указание индексов (порядковых номеров) элемента вектора или матрицы;

задание порядка выполнения операций

знак поэлементного выполнения операции

Переход по дереву каталогов на один уровень вверх

1. Различные способы ввода матриц в пакете MatLab

Вводить небольшие по размеру матрицы удобно прямо из командной строки. Введите матрицу размерностью два на три

.

Для хранения матрицы используйте двумерный массив с именем A. При вводе учтите, что матрицу А можно рассматривать как вектор-столбец из двух элементов, каждый из которых является вектор-строкой длиной три, следовательно, строки при наборе отделяются точкой с запятой:

» А = [3 1 -1; 2 4 3]
А =
3 1 -1
2 4 3

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

.

Начните набирать в командной строке

Нажмите клавишу . Обратите внимание, что пакет ничего не вычислил. Курсор мигает на следующей строке без символа ». Продолжите ввод матрицы построчно, нажимая в конце каждой строки . Последнюю строку завершите закрывающей квадратной скобкой, получается:

2 7 0
-5 1 2]
B =
4 3 -1
2 7 0
-5 1 2

Еще один способ ввода матриц состоит в том, что матрицу можно трактовать как вектор-строку, каждый элемент которой является вектор-столбцом. Например, матрицу два на три

можно ввести при помощи команды:

» С = [[3; 4] [-1; 2] [7; 0]]
С =
3 -1 7
4 2 0

Посмотрите переменные рабочей среды, набрав в командной строке whos:

А 2×3 48 double array
В 3×3 72 double array
С 2×3 48 double array

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

2. Обращение к элементам матриц в пакете MatLab

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

Элементы матриц могут входить в состав выражений:

» С(1, 1) + С(2, 2) + С(2, 3)
ans =
5

Расположение элементов матрицы в памяти компьютера определяет еще один способ обращения к ним. Матрица А размера m на n хранится в виде вектора длины mn, в котором элементы матрицы расположены один за другим по столбцам

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

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

[C(1,1) C(2,1) C(1,2) С(2,2) С(1,3) С(2,3)],

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

3. Операции над матрицами в пакете MatLab: сложение, вычитание, умножение, транспонирование и возведение в степень

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

» S = А+С
S =
6 0 6
6 6 3
» R = С – А
R =
0 -2 8
2 -2 -3

Следите за совпадением размерности, иначе получите сообщение об ошибке:

» S = А+В
. Error using ==> ±
Matrix dimensions must agree.

Для умножения матриц предназначена звездочка:

» Р = С*В
P =
-25 9 11
20 26 -4

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

Читайте также:  Можно ли теоретически рассчитать момент инерции блока

» Р = А*3
Р =
9 3 -3
6 12 -3
» Р = 3*А
Р =
9 3 -3
6 12 9

Транспонирование матрицы, так же как и вектора, производится при помощи .’, а символ ‘ означает комплексное сопряжение. Для вещественных матриц эти операции приводят к одинаковым результатам:

» В’
ans =
4 2 -5
3 7 1
-1 0 2

» В.’
ans =
4 2 -5
3 7 1
-1 0 2

Замечание 1

Если матрица есть произвольная матрица размера n m, то матрица, транспонированная по отношению к А,есть матрица размера m n: Таким образом, строки матрицы становятся столбцами матрицы , а столбцы матрицы становятся строками матрицы .
Комплексно-сопряженная матрица получается из исходной в два этапа: выполняется транспонирование исходной матрицы, а затем все комплексные числа заменяются на комплексно-сопряженные.

Сопряжение и транспонирование матриц, содержащих комплексные числа, приведут к созданию разных матриц:

»K= [l-i, 2+3i; 3-5i, l-9i]
К = 1.0000 – 1.0000i 2.0000 + 3.0000i
3.0000 – 5.0000i 1.0000 – 9.0000i
»K’
ans =
1.0000 + 1.0000i 3.0000 + 5.0000i
2.0000 – 3.0000i 1.0000 + 9.0000i

» K.’
ans =
1.0000 – 1.0000i 3.0000 – 5.0000i
2.0000 + 3.0000i 1.0000 – 9.0000i

Замечание 2

При вводе вектор-строк их элементы можно разделять или пробелами, или запятыми. При вводе матрицы К применены запятые для более наглядного разделения комплексных чисел в строке.

Возведение квадратной матрицы в целую степень производится с использованием оператора ^:

» В2 = В^2
B2 =
27 32 -6
22 55 -2
-28 -6 9

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

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

»(А+С)*В^3*(А-С)’
ans =
1848 1914
10290 3612

4. Умножение матриц и векторов

Вектор-столбец или вектор-строка в MatLab являются матрицами, у которых один из размеров равен единице, поэтому все вышеописанные операции применимы и для умножения матрицы на вектор-столбец или вектор-строки на матрицу. Например, вычисление выражения

можно осуществить следующим образом:

» a = [1 3 -2];
» B = [2 0 1; -4 8 -1; 0 9 2];
» c = [-8; 3; 4];
» a*B*c
ans =
74

5. Блочные матрицы

Очень часто в приложениях возникают так называемые блочные матрицы, т.е. матрицы, составленные из непересекающихся подматриц (блоков). Рассмотрим вначале конструирование блочных матриц. Введите матрицы: , , , и создайте из них блочную матрицу .
Учитывая, что матрица К состоит из двух строк, в первой строке матрицы А и B, а во второй – С и D, блочную матрицу можно сформировать следующим образом:

» К = [А В; С D]
K =
-1 4 2 0
-1 4 0 5
3 -3 8 9
-3 3 1 10

Блочную матрицу можно получить и другим способом, если считать, что матрица К состоит из двух столбцов, в первом – матрицы А и С, а во втором – В и D:

Обратной задачей к конструированию блочных матриц является задача выделения блоков. Выделение блоков матриц осуществляется индексацией при помощи двоеточия. Введите матрицу

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

»Р1 = Р(2:3,2:3)
Р1 =
10 12
11 10

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

»p = P(2, 🙂
p =
4 10 12 5

При выделении блока до конца матрицы можно не указывать ее размеры, а использовать элемент end:

»p = Р(2, 2:end)
p =
10 12 5

6. Удаление строк и столбцов

В MatLab парные квадратные скобки [ ] обозначают пустой массив, который, в частности, позволяет удалять строки и столбцы матрицы. Для удаления строки следует присвоить ей пустой массив. Удалите, например, первую строку квадратной матрицы:

» М = [2 0 3
1 1 4
6 1 3];
» M(1,:)=[];
» M
M =
1 1 4
6 1 3

Обратите внимание на соответствующее изменение размеров массива, которое можно проверить при помощи size:

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

Индексация существенно экономит время при вводе матриц, имеющих определенную структуру.

7. Заполнение матриц при помощи индексации

Выше было описано несколько способов ввода матриц в MatLab. Однако часто бывает проще сгенерировать матрицу, чем вводить ее, особенно если она обладает простой структурой. Рассмотрим пример такой матрицы:

Читайте также:  Мтс подключение второго телевизора

.

Генерация матрицы Т осуществляется в три этапа:
1. Создание массива T размера пять на пять, состоящего из нулей.
2. Заполнение первой строки единицами.
3. Заполнение части последней строки минус единицами до последнего элемента.
Соответствующие команды MatLab приведены ниже.

» A(1:5, 1:5) = 0
A=
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
» A(1, 🙂 = 1
A=
1 1 1 1 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
» A(end, 3:end) = -1
A=
1 1 1 1 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 -1 -1 -1

Создание некоторых специальных матриц в MatLab осуществляется при помощи встроенных функций.

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

Заполнение прямоугольной матрицы нулями производится встроенной функцией zeros, аргументами которой являются число строк и столбцов матрицы:

» A = zeros(3, 6)
A =
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0

Один аргумент функции zeros приводит к образованию квадратной матрицы заданного размера:

» A = zeros(3)
A =
0 0 0
0 0 0
0 0 0

Единичная матрица инициализируется при помощи функции eye:

» I = eye(4)
I=
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

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

» I = eye(4, 8)
I =
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0

Матрица, состоящая из единиц, образуется в результате вызова функции
ones:

» E = ones(3, 7)
E =
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1

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

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

» R = rand(3, 5)
R =
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763

Один аргумент функций rand и randn приводит к формированию квадратных матриц:
Часто возникает необходимость создания диагональных матриц, т.е. матриц, у которых все недиагональные элементы равны нулю. Функция diag формирует диагональную матрицу из вектор-столбца или вектор-строки, располагая их элементы по диагонали матрицы:

» d = [1; 2; 3; 4];
» D = diag(d)
D =
1 0 0 0
0 2 0 0
0 0 3 0
0 0 0 4

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

» A = [10 1 2; 1 20 3; 2 3 30];
» d = diag(A)
d =
10
20
30

9. Поэлементные операции с матрицами

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

, .

Умножение каждого элемента одной матрицы на соответствующий элемент другой производится при помощи оператора .*:

» С = А.*В
С =
-2 10 -8
21 -12 -45

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

» R1 = А./В1
R1 =
-2.0000 2.5000 -0.1250
0.4286 -1.3333 -1.8000
» R2 = А.В1
R2 =
-0.5000 0.4000 -8.0000
2.3333 -0.7500 -0.5556

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

10. Визуализация матриц

Матрицы с достаточно большим количеством нулей называются разреженными. Часто необходимо знать, где расположены ненулевые элементы, т.е. получить так называемый шаблон матрицы. Для этого в MatLab служит функция spy. Посмотрим шаблон матрицы G
.

После выполнения команды spy на экране появляется графическое окно Figure No. 1. На вертикальной и горизонтальной осях отложены номера строк и столбцов. Ненулевые элементы обозначены маркерами, внизу графического окна указано число ненулевых элементов (nz = 19).
Наглядную информацию о соотношении величин элементов матрицы дает функция imagesc, которая интерпретирует матрицу как прямоугольное изображение. Каждый элемент матрицы представляется в виде квадратика, цвет которого соответствует величине элемента. Для того чтобы узнать соответствие цвета и величины элемента следует использовать команду colorbar, выводящую рядом с изображением матрицы шкалу цвета (Insert (в графическом окне Figure No. 1), colorbar). Наконец, для печати на монохромном принтере удобно получить изображение в оттенках серого цвета, используя команду colormap(gray) (Edit (в графическом окне Figure No. 1), Colormap, Colormap Editor, Tools, gray). Мы будем работать с матрицей G. Набирайте команды, указанные ниже, и следите за состоянием графического окна:

» imagesc(G)
» colorbar
» colormap(gray)

В результате получается наглядное представление матрицы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector