Скачиваний:
3
Добавлен:
01.10.2023
Размер:
32.95 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

Федеральное государственное бюджетное образовательное

учреждение высшего образования

«Санкт-Петербургский государственный университет телекоммуникаций

им. проф. М. А. Бонч-Бруевича»

_____________________________________________________________________________

Кафедра радиосистем и обработки сигналов

Дисциплина «Прикладные пакеты моделирования»

Лабораторная работа № 2

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

Выполнили: ст. гр. РТ-22

Проверил: к.т.н. доцент Леонюк А.С.

_____________________

Санкт-Петербург

2023

ВЫПОЛНЕНИЕ РАБОТЫ

  1. Определение длины вектора и размера матрицы.

>> 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)

  • Матрица нулевой размерности вводится для дальнейшего использования и создания матрицы любой размерности

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

  1. Генерирование типовых матриц.

>> 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

  1. Выделение элементов матрицы.

>> 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(:)

  1. Преобразование матриц.

>> [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 по строкам и столбцам.

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

>> 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

  • Использованный символ умножения * - символ арифметической операции. Для поэлементного умножения после матрицы ставится точка

  1. Сложение и вычитание матриц.

>> 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 являются результатом сложения и вычитания матриц

  • Операция сложения и вычитания матриц является коммутативной

  1. Умножение матриц

>> 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

  • Операция умножение матриц не является коммутативной

  1. Транспонирование и эрмитово сопряжение матриц

>> 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

  • Операции транспонирования и эрмитова сопряжения выполняются апострофом ‘, в зависимости от изначальной матрицы.

  1. Обращение матриц

>> 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)

  • Для проверки операции обращения матрицы

  1. Решить СЛАУ

>> 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;

  1. Вычисление норм матрицы и вектора.

>> 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)

  1. Операции с матрицами в задачах математической статистики

>> 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

Соседние файлы в папке Лабораторные 2023г