Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчет по лабораторной работе №3

.docx
Скачиваний:
42
Добавлен:
03.10.2022
Размер:
49.09 Кб
Скачать

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

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

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

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

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

_____________________________________________________________________________

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

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

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

Типы массивов

Цель работы

Изучить основные типы массивов, используемых в MATLAB, и овладеть навыками их формирования.

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

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

Пояснения:

  • С помощью команд int8(A) logical(A) uint8(A)

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

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

  • Логический

  • В MATLAB тип массива (тип данных) определяется типом его элементов. Для определения типа массива служит функция:

class(<имя массива>)

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

>> S1=sin(A)

S1 =

0.9910 -0.9910 0.9910

-0.9910 0 0.3943

-0.3943 -0.9428 -0.5899

>> S2=sin(B)

Undefined function 'sin' for input arguments of type 'int8'.

>> S3=sin(C)

Undefined function 'sin' for input arguments of type 'uint8'.

>> Sum1=A+B

Error using +

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

>> Sum2=B+C

Error using +

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

>> Log=B&C

Log =

3×3 logical array

1 0 1

0 0 1

0 1 1

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

>> X=['Зенченко' 'Андрей' 'Константинович']

X =

'ЗенченкоАндрейКонстантинович'

>> X=['Зенченко ' 'Андрей' ' Константинович']

X =

'Зенченко Андрей Константинович'

>> Y=['Зенченко ';'Андрей ';' Константинович']

Y =

3×15 char array

'Зенченко '

'Андрей '

' Константинович'

>> F=['КИХ ' 'R=15 ';'FIR ' 'ORDER=15']

F =

2×16 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'

Пояснения:

  • Элементы строки представляют собой слитную запись, поэтому необходимые пробелы должен предусмотреть пользователь

  • Автоматическое добавление пробелов в элементах столбца с выравниванием по левому краю выполняется с помощью функции: char('<char1>','<char2>'...)

  • Преобразование матрицы численного или логического типа в матрицу символьного типа выполняется с помощью функции num2str(x):

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

>> Filter(1).Type='lowpass';

>> Filter(2).Type='hightpass';

>> Filter(3).Type='bandpass';

>> Filter(4).Type='stopband';

>> 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: 'true'

>> Filter.Type

ans =

'lowpass'

ans =

'hightpass'

ans =

'bandpass'

ans =

'stopband'

>> Filter(3).Type

ans =

'bandpass'

>> Filter=rmfield(Filter,'Poles')

Filter =

1×4 struct array with fields:

Type

Order

Пояснения:

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

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

  • 4x4

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

>> 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}=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×16 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 =

'Зенченко Андрей Константинович'

>> S{3,2}

ans =

3×15 char array

'Зенченко '

'Андрей '

' Константинович'

>> S{3,3}

ans =

1×4 struct array with fields:

Type

Order

>> cellplot(S,'legend')

Пояснения:

  • Массив ячеек (cell array) — это наиболее сложный тип массива, элементами которого являются ячейки, представляющее собой массивы любой размерности, любого размера и типа.

  • Вывод элементов массива ячеек выполняется по его имени с указанием индексов

  • Графическое представление матрицы ячеек создается с помощью функции: cellplot(A,'legend').

Выводы:

  1. Изучили основные типы массивов, используемых в MATLAB.

  2. Овладели навыками их формирования.

Самостоятельная работа

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

Сформировать массив ячеек A, рассмотренный в разд. 3.2.4, и привести пример арифметического выражения с элементами данного массива типа double.

>> personal(1).surname = 'Иванов';

personal(2).surname = 'Петров';

personal(3).surname = 'Сидоров';

>> personal(1).data = [1 2 1949];

personal(2).data = [5 7 1975];

personal(3).data = [5 8 1956];

personal(1).position = 'профессор';

personal(2).position = 'доцент';

personal(3).position = 'зав.лаб.';

personal(1).phd = true;

personal(2).phd = true;

personal(3).phd = false;

>> personal

personal =

1×3 struct array with fields:

surname

data

position

phd

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

ans =

3.1416

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

ans =

10.1416