Скачиваний:
4
Добавлен:
15.10.2023
Размер:
44.91 Кб
Скачать

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

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

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

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

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

_____________________________________________________________________________

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

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

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

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

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

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

_____________________

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

2023

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

  1. Знакомство с матрицами числового и логического типов.

>> A=[127.1 -127.1 127.1;-127.1 0 128.4;-128.4 255.7 255.1]

A =

127.1000 -127.1000 127.1000

-127.1000 0 128.4000

-128.4000 255.7000 255.1000

>> B= int8(A)

B =

3×3 int8 matrix

127 -127 127

-127 0 127

-128 127 127

>> C=uint8(A)

C =

3×3 uint8 matrix

127 0 127

0 0 128

0 255 255

>> D=logical(A)

D =

3×3 logical array

1 1 1

1 0 1

1 1 1

>> class(A)

ans =

'double'

>> class(B)

ans =

'int8'

>> class(C)

ans =

'uint8'

>> class(D)

ans =

'logical'

  • Матрицу А в матрицы В и С можно преобразовать командами:

Int8 - целый 8-битовый со знаком

uint8 - целый 8-битовый без знака

logical – Логический

  • Тип матрицы можно определить с помощью команды class() или по сообщению MATLABa если не поставить точку с запятой.

  1. Операции с матрицами числового типа.

>> S=sin(A)

S =

0.9910 -0.9910 0.9910

-0.9910 0 0.3943

-0.3943 -0.9428 -0.5899

>> S2=sin(B)

Check for incorrect argument data type or missing argument in call to function 'sin'.

>> S3=sin(C)

Check for incorrect argument data type or missing argument in call to function 'sin'.

>> sum=A+B

Error using +

Integers can only be combined with integers of the same class, or scalar doubles.

>> sum=B+C

Error using +

Integers can only be combined with integers of the same class, or scalar doubles.

>> and=B&C

and =

3×3 logical array

1 0 1

0 0 1

0 1 1

>> class(and)

ans =

'logical'

  • Сообщение об ошибке выводится из-за того что тип данных в матрице int8 и uint8, поэтому невозможно произвести операцию и о с ними запрещено выполнение арифметических операций

  1. Знакомство с матрицами символьного типа

>> X= ['Xxxxxx ' 'Xxxxx ' 'Xxxxxxxx']

X =

'Xxxxxx Xxxxx Xxxxxxxx'

>> Y= ['Xxxxxx ';'Xxxxx ';'Xxxxxxxx']

Y =

3×8 char array

'Xxxxxx '

'Xxxxx '

'Xxxxxxxx'

>> F=[char('КИХ','FIR') char(' R=15',' Order=15')]

F =

2×12 char array

'КИХ R=15 '

'FIR Order=15'

>> G=num2str(A)

G =

3×34 char array

' 127.1 -127.1 127.1'

'-127.1 0 128.4'

'-128.4 255.7 255.1'

>> class(A)

ans =

'double'

>> class(G)

ans =

'char'

  • Вывод не слитого столбца можно обеспечить путем дополнительного пробела после или перед началом символа

  • Автоматическое добавление пробелов при выводе элементов столбца можно обеспечить конструкцией [char(_)]

  • Преобразовать матрицу числового типа в матрицу символьного типа можно с помощью команды num2str.

  1. Знакомство с массивами записей (структурами).

>> filter(1).type='lowpass';

>> filter(2).type='hightpass';

>> filter(3).type='bandpass';

>> filter(4).type='stoppass';

>> filter(1).order=10;

>> filter(2).order=20;

>> filter(3).order=30;

>> filter(4).order=40;

>> filter(1).poles=true

>> filter(2).poles=false;

>> filter(3).poles=false;

>> filter(4).poles=true;

>> filter

filter =

1×4 struct array with fields:

type

order

poles

>> filter(1)

ans =

struct with fields:

type: 'lowpass'

order: 10

poles: 1

>> filter.type

ans =

'lowpass'

ans =

'hightpass'

ans =

'bandpass'

ans =

'stoppass'

>> filter(3).type

ans =

'bandpass'

>> filter1=rmfield(filter,'poles')

filter1 =

1×4 struct array with fields:

type

order

  • Массив записей — это разновидность нечислового массива, предназначенного для описания M объектов N параметрами.

  • Запись — список полей, одинаковый для всех M объектов; Число записей равно количеству объектов M.

  • Значение записи — список полей с их значениями для одного объекта

  1. Знакомство с матрицами ячеек

>> S{1,1}= A;

>> S{1,2}= B;

>> S{1,3}= C;

>> S{2,1}= D;

>> S{2,2}= F;

>> S{2,3}= G;

>> S{3,1}= X;

>> S{3,2}= Y;

>> S{3,3}= char('filter');

>> S{1,1}

ans =

127.1000 -127.1000 127.1000

-127.1000 0 128.4000

-128.4000 255.7000 255.1000

>> S{1,2}

ans =

3×3 int8 matrix

127 -127 127

-127 0 127

-128 127 127

>> S{1,3}

ans =

3×3 uint8 matrix

127 0 127

0 0 128

0 255 255

>> S{2,1}

ans =

3×3 logical array

1 1 1

1 0 1

1 1 1

>> S{2,2}

ans =

2×12 char array

'КИХ R=15 '

'FIR Order=15'

>> S{2,3}

ans =

3×34 char array

' 127.1 -127.1 127.1'

'-127.1 0 128.4'

'-128.4 255.7 255.1'

>> S{3,1}

ans =

‘xxxxxx xxxxx xxxxxxxx'

>> S{3,2}

ans =

3×8 char array

'Xxxxxx '

'Xxxxx '

'Xxxxxxxx'

>> S{3,3}

ans =

'filter'

>> class(S)

ans =

'cell'

>> cellplot(S,'legend')

  • Матрица ячеек состоит из массивов любой размерности и типа.

  • Каждый элемент вводится с помощью фигурных скобок

  • Графическое представление выводится с помощью команды cellplot(_,’legend’).

  • Оно показывает каждый элемент, указывает его тип данных.

Задания на самостоятельную работу

  1. Операции с элементами массива ячеек.

>> A{1,1} = pi;

A{1,2} = [1 2 3;4 5 6];

A{1,3} = char('abs','angle');

A{2,1} = [ones(5,1)]';

A{2,2} = zeros(3,1);

A{2,3} = 'Alla';

A{3,1} = 7 ;

A{3,2} = rand(5,1);

A{3,3} = personal;

>> A{1,1}+A{3,1}

ans =

10.1416

  1. Операции с матрицами целого типа.

>> A = [int8(1543) int8(1237) int8(-1342)];

>> B = [uint8(1321) uint8(9999) uint8(-1000)];

>> C=[A==B; A<B; B<A]

C =

3×3 logical array

0 0 0

1 1 1

0 0 0

  1. Операции с матрицами логического типа.

A =

2×3 int8 matrix

127 127 -128

127 127 -128

>> B = [uint8(1321) uint8(9999) uint8(-1000);uint8(1321) uint8(9999) uint8(-1000)];

>> B = [uint8(1321) uint8(9999) uint8(-1000);uint8(1321) uint8(9999) uint8(-1000)]

B =

2×3 uint8 matrix

255 255 0

255 255 0

>> C=[A==B; A<B; B<A]

C =

6×3 logical array

0 0 0

0 0 0

1 1 1

1 1 1

0 0 0

0 0 0

  1. Операции с матрицами символьного типа

>> A=randn(3)

A =

-0.2050 1.4090 -1.2075

-0.1241 1.4172 0.7172

1.4897 0.6715 1.6302

>> V=num2str(A)

V =

3×32 char array

'-0.20497 1.409 -1.2075'

'-0.12414 1.4172 0.71724'

' 1.4897 0.6715 1.6302'

  1. Операции с массивом записей

>> MAMA(1).vector= [1:4];

>> MAMA(2).vector= [1:5];

>> MAMA(3).vector= [1:6];

>> MAMA(1).mtrix= ones(2);

>> MAMA(2).mtrix= ones(3);

>> MAMA(3).mtrix= ones(5);

>> MAMA

MAMA =

1×3 struct array with fields:

vector

mtrix

>> MAMA(1)

ans =

struct with fields:

vector: [1 2 3 4]

mtrix: [2×2 double]

>> MAMA.vector

ans =

1 2 3 4

ans =

1 2 3 4 5

ans =

1 2 3 4 5 6

>> MAMA.mtrix

ans =

1 1

1 1

ans =

1 1 1

1 1 1

1 1 1

ans =

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

Вывод: Были изучены основные типы массивов, используемых в Matlab, а так же овладены навыками их формирования

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