Лабораторные 2023г / лаба 2
.docxФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Федеральное государственное бюджетное образовательное
учреждение высшего образования
«Санкт-Петербургский государственный университет телекоммуникаций
им. проф. М. А. Бонч-Бруевича»
_____________________________________________________________________________
Кафедра радиосистем и обработки сигналов
Дисциплина «Прикладные пакеты моделирования»
Лабораторная работа № 2
Операции с матрицами
Выполнили: ст. гр. РТ-22
Проверил: к.т.н. доцент Леонюк А.С.
_____________________
Санкт-Петербург
2023
ВЫПОЛНЕНИЕ РАБОТЫ
Определение длины вектора и размера матрицы.
>> A=[1 11 1; 312 123 123; 666 665 667]
A =
1 11 1
312 123 123
666 665 667
>> Z=[]
Z =
[]
>> B=[-pi:pi/32:pi]
B =
Columns 1 through 13
-3.1416 -3.0434 -2.9452 -2.8471 -2.7489 -2.6507 -2.5525 -2.4544 -2.3562 -2.2580 -2.1598 -2.0617 -1.9635
Columns 14 through 26
-1.8653 -1.7671 -1.6690 -1.5708 -1.4726 -1.3744 -1.2763 -1.1781 -1.0799 -0.9817 -0.8836 -0.7854 -0.6872
Columns 27 through 39
-0.5890 -0.4909 -0.3927 -0.2945 -0.1963 -0.0982 0 0.0982 0.1963 0.2945 0.3927 0.4909 0.5890
Columns 40 through 52
0.6872 0.7854 0.8836 0.9817 1.0799 1.1781 1.2763 1.3744 1.4726 1.5708 1.6690 1.7671 1.8653
Columns 53 through 65
1.9635 2.0617 2.1598 2.2580 2.3562 2.4544 2.5525 2.6507 2.7489 2.8471 2.9452 3.0434 3.1416
>> size(A)
ans =
3 3
>> size(Z)
ans =
0 0
>> length(B)
ans =
65
Размер матрицы определяется количеством строк и столбцов, длинна вектора это длинна матрицы n*1
В MATLAB размер определяется командой size(X) , а длинна вектора командой length(X)
Матрица нулевой размерности вводится для дальнейшего использования и создания матрицы любой размерности
Вектор, формирующий регулярную сетку вводят с использованием двоеточия, размер шага допустимо не указывать, если размер шага единица
Генерирование типовых матриц.
>> C=zeros(3)
C =
0 0 0
0 0 0
0 0 0
>> D=ones(3,3)
D =
1 1 1
1 1 1
1 1 1
>> D1=eye(3)
D1 =
1 0 0
0 1 0
0 0 1
>> T=toeplitz(D1)
T =
1 0 0 0 1 0 0 0 1
0 1 0 0 0 1 0 0 0
0 0 1 0 0 0 1 0 0
0 0 0 1 0 0 0 1 0
1 0 0 0 1 0 0 0 1
0 1 0 0 0 1 0 0 0
0 0 1 0 0 0 1 0 0
0 0 0 1 0 0 0 1 0
1 0 0 0 1 0 0 0 1
>> E=rand(3,3)
E =
0.8147 0.9134 0.2785
0.9058 0.6324 0.5469
0.1270 0.0975 0.9575
>> F=randn(3,3)
F =
2.7694 0.7254 -0.2050
-1.3499 -0.0631 -0.1241
3.0349 0.7147 1.4897
MATLAB генерирует типовые матрицы с помощью встроеный функций, их список можно узнать введя команду help elmat
Нулевая матрица – матрица состоящая из нулей
Матрица единиц – матрица состоящая из единиц
Единичная матрица – матрица у которой главная диагональ состоит из единиц
Матрица Теплица - квадратная матрица с одинаковыми элементами на диагоналях, равными соответствующим элементам первого столбца r
Выделение элементов матрицы.
>> F(3,2)
ans =
0.7147
>> diag(F)
ans =
2.7694
-0.0631
1.4897
>> F(1,:)
ans =
2.7694 0.7254 -0.2050
>> F(:,3)
ans =
-0.2050
-0.1241
1.4897
>> F(2:3,1:3)
ans =
-1.3499 -0.0631 -0.1241
3.0349 0.7147 1.4897
Выделение матриц происходит :
выделение из матрицы вектора-столбца: A(:,N) где N — номер столбца;
выделение из матрицы вектора-строки: A(M,:) где M — номер строки;
выделение подматрицы с указанием граничных индексов: A(M1:M2,N1:N2) где: M1:M2 — номера строк с M1 по M2 включительно; N1:N2 — номера столбцов с N1 по N2 включительно;
выделение подматрицы с указанием начальных индексов: A(M1:end;N1:end) где: M1:end — строки с M1 до последней включительно; N1:end — столбцы с N1 до последнего включительно;
растягивание матрицы в вектор-столбец: A(:)
Преобразование матриц.
>> [F,C]
ans =
0.7922 0.0357 0.6787 0 0 0
0.9595 0.8491 0.7577 0 0 0
0.6557 0.9340 0.7431 0 0 0
>> [F;C]
ans =
0.7922 0.0357 0.6787
0.9595 0.8491 0.7577
0.6557 0.9340 0.7431
0 0 0
0 0 0
0 0 0
>> G=repmat(F,2,2)
G =
0.7922 0.0357 0.6787 0.7922 0.0357 0.6787
0.9595 0.8491 0.7577 0.9595 0.8491 0.7577
0.6557 0.9340 0.7431 0.6557 0.9340 0.7431
0.7922 0.0357 0.6787 0.7922 0.0357 0.6787
0.9595 0.8491 0.7577 0.9595 0.8491 0.7577
0.6557 0.9340 0.7431 0.6557 0.9340 0.7431
горизонтальная конкатенация (объединение) подматриц (по столбцам): A=[A1,A2,A3,...] где A1,A2,A3,... — объединяемые подматрицы с одинаковым числом строк;
вертикальная конкатенация подматриц (по строкам): A=[A1;A2;A3;...] где A1;A2;A3;... — объединяемые подматрицы с одинаковым числом столбцов;
копирование матрицы, выполняемое с помощью функции: repmat(A,m,n) где: A — исходная матрица как элемент новой матрицы; m, n — число копий матрицы A по строкам и столбцам соответственно;
копирование квадратных матриц, выполняемое с помощью функции: repmat(A,n) где: A — исходная квадратная матрица как элемент новой квадратной матрицы; n — число копий матрицы A по строкам и столбцам.
Поэлементные операции с матрицами
>> F.*F
ans =
0.6276 0.0013 0.4607
0.9206 0.7210 0.5742
0.4300 0.8723 0.5522
>> F.*2
ans =
1.5844 0.0714 1.3575
1.9190 1.6983 1.5155
1.3115 1.8680 1.4863
Использованный символ умножения * - символ арифметической операции. Для поэлементного умножения после матрицы ставится точка
Сложение и вычитание матриц.
>> A=rand(3,3)
A =
0.4898 0.7094 0.6797
0.4456 0.7547 0.6551
0.6463 0.2760 0.1626
>> B=rand(3,3)
B =
0.1190 0.3404 0.7513
0.4984 0.5853 0.2551
0.9597 0.2238 0.5060
>> C1=A+B
C1 =
0.6088 1.0498 1.4310
0.9440 1.3400 0.9102
1.6061 0.4998 0.6686
>> C2=A-B
C2 =
0.3708 0.3690 -0.0716
-0.0528 0.1694 0.4000
-0.3134 0.0522 -0.3433
C1 и С2 являются результатом сложения и вычитания матриц
Операция сложения и вычитания матриц является коммутативной
Умножение матриц
>> A=randn(6,6)
A =
0.5525 -1.0616 -0.7648 1.4193 0.8351 0.7223
1.1006 2.3505 -1.4023 0.2916 -0.2437 2.5855
1.5442 -0.6156 -1.4224 0.1978 0.2157 -0.6669
0.0859 0.7481 0.4882 1.5877 -1.1658 0.1873
-1.4916 -0.1924 -0.1774 -0.8045 -1.1480 -0.0825
-0.7423 0.8886 -0.1961 0.6966 0.1049 -1.9330
>> B=randn(6,9)
B =
-0.4390 0.3035 -2.1384 1.4367 1.3790 0.7015 0.2820 0.0229 -1.1564
-1.7947 -0.6003 -0.8396 -1.9609 -1.0582 -2.0518 0.0335 -0.2620 -0.5336
0.8404 0.4900 1.3546 -0.1977 -0.4686 -0.3538 -1.3337 -1.7502 -2.0026
-0.8880 0.7394 -1.0722 -1.2078 -0.2725 -0.8236 1.1275 -0.2857 0.9642
0.1001 1.7119 0.9610 2.9080 1.0984 -1.5771 0.3502 -0.8314 0.5201
-0.5445 -0.1941 0.1240 0.8252 -0.2779 0.5080 -0.2991 -0.9792 -0.0200
>> C=A*B
C =
-0.5502 2.7690 -1.9559 4.3368 2.5736 0.7174 2.8170 -0.1775 3.2476
-7.5711 -2.4676 -6.4525 -1.6779 -1.3780 -2.0968 1.7294 -0.5488 0.3840
-0.5593 0.7863 -4.7995 3.5448 3.8157 2.0079 2.8098 3.1033 1.7075
-2.5986 -1.0421 -2.9499 -6.5934 -2.6671 -1.0212 0.7240 -0.7162 -0.5553
1.4954 -2.9681 2.8600 -4.1652 -2.7890 1.8422 -1.4748 1.5917 0.8117
-0.9892 0.2150 -0.3102 -4.9018 -1.4095 -3.9957 1.4822 1.7000 1.5419
Операция умножения возможна только в том случае, если число столбцов матрицы A равно числу строк матрицы B
матрица C размером m p, элемент i-й строки и k-го столбца которой равен сумме произведений соответственных элементов i-й строки матрицы A и kго столбца матрицы B
Операция умножение матриц не является коммутативной
Транспонирование и эрмитово сопряжение матриц
>> F'
ans =
-0.0348 -0.7982 1.0187
-0.1332 -0.7145 1.3514
-0.2248 -0.5890 -0.2938
>> P=[3+2i 4-5i;7-5i 1+i;2+2i 1-8i]
P =
3.0000 + 2.0000i 4.0000 - 5.0000i
7.0000 - 5.0000i 1.0000 + 1.0000i
2.0000 + 2.0000i 1.0000 - 8.0000i
>> P'
ans =
3.0000 - 2.0000i 7.0000 + 5.0000i 2.0000 - 2.0000i
4.0000 + 5.0000i 1.0000 - 1.0000i 1.0000 + 8.0000i
>> R=P'
R =
3.0000 - 2.0000i 7.0000 + 5.0000i 2.0000 - 2.0000i
4.0000 + 5.0000i 1.0000 - 1.0000i 1.0000 + 8.0000i
>> R1=conj(P)
R1 =
3.0000 - 2.0000i 4.0000 + 5.0000i
7.0000 + 5.0000i 1.0000 - 1.0000i
2.0000 - 2.0000i 1.0000 + 8.0000i
Операции транспонирования и эрмитова сопряжения выполняются апострофом ‘, в зависимости от изначальной матрицы.
Обращение матриц
>> det(F)
ans =
0.1550
>> F1=inv(F)
F1 =
6.4884 -2.2117 -0.5298
-5.3828 1.5428 1.0251
-2.2624 -0.5723 -0.5256
>> F2= F*F1
F2 =
1.0000 -0.0000 -0.0000
-0.0000 1.0000 -0.0000
0.0000 0.0000 1.0000
Операция обращения возможна только для квадратных матриц с определителем (детерминантом), не равным нулю.
Определитель матрицы находится с помощью функции det(A)
Для проверки операции обращения матрицы
Решить СЛАУ
>> A=[1 2 3;2 -1 -5;1 -1 -1]
A =
1 2 3
2 -1 -5
1 -1 -1
>> B=[14 -15 -4]
B =
14 -15 -4
>> X=A\B'
X =
1
2
3
>> A*X
ans =
14
-15
-4
Для решения СЛАУ используется операция левого матричного деления (\), оно эквивалентно алгебраическо операции A-1 *B т. е. inv(A)*B;
Вычисление норм матрицы и вектора.
>> NORMS=[norm(F,1) norm(F,2) norm(F,inf)]
NORMS =
4.4941 3.5989 4.5745
>> X=rand(1,100)
X =
Columns 1 through 13
0.0154 0.0430 0.1690 0.6491 0.7317 0.6477 0.4509 0.5470 0.2963 0.7447 0.1890 0.6868 0.1835
Columns 14 through 26
0.3685 0.6256 0.7802 0.0811 0.9294 0.7757 0.4868 0.4359 0.4468 0.3063 0.5085 0.5108 0.8176
Columns 27 through 39
0.7948 0.6443 0.3786 0.8116 0.5328 0.3507 0.9390 0.8759 0.5502 0.6225 0.5870 0.2077 0.3012
Columns 40 through 52
0.4709 0.2305 0.8443 0.1948 0.2259 0.1707 0.2277 0.4357 0.3111 0.9234 0.4302 0.1848 0.9049
Columns 53 through 65
0.9797 0.4389 0.1111 0.2581 0.4087 0.5949 0.2622 0.6028 0.7112 0.2217 0.1174 0.2967 0.3188
Columns 66 through 78
0.4242 0.5079 0.0855 0.2625 0.8010 0.0292 0.9289 0.7303 0.4886 0.5785 0.2373 0.4588 0.9631
Columns 79 through 91
0.5468 0.5211 0.2316 0.4889 0.6241 0.6791 0.3955 0.3674 0.9880 0.0377 0.8852 0.9133 0.7962
Columns 92 through 100
0.0987 0.2619 0.3354 0.6797 0.1366 0.7212 0.1068 0.6538 0.4942
>> NORMS=[norm(X,1) norm(X,2) norm(X,inf)]
NORMS =
48.3600 5.5127 0.9880
Норма матрицы (вектора) — это скаляр, с помощью которого оцениваются значения элементов матрицы (вектора).
Норма матрицы и вектора вычисляется с помощью функции: norm(A,p)
Операции с матрицами в задачах математической статистики
>> max(F)
ans =
2.5260 1.6555 0.7914
>> min(F)
ans =
-1.1201 -1.2571 -0.8655
>> sum(F)
ans =
0.5579 0.7059 -0.2506
>> prod(F)
ans =
2.3992 -0.6400 0.1209
>> mean(F)
ans =
0.1860 0.2353 -0.0835
>> std(F,1)
ans =
1.6584 1.1902 0.6796
>> var(F,1)
ans =
2.7502 1.4165 0.4619
Max(A) - Максимальные элементы столбца
Min(A) - Минимальные элементы столбца
Sum(A) - Сумма элементов столбца
Prod(A) - Произведение элементов столбца
Mean(A) - Математическое ожидание (среднее значение) элементов столбца
Вывод: В ходе выполнения работы были изучены основные способы матричной обработки данных в MATLAB