Отчет по лабораторной работе №3
.docxФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Федеральное государственное бюджетное образовательное
учреждение высшего образования
«Санкт-Петербургский государственный университет телекоммуникаций
им. проф. М. А. Бонч-Бруевича»
_____________________________________________________________________________
Кафедра радиосистем и обработки сигналов
Дисциплина «Прикладные пакеты моделирования»
Лабораторная работа № 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').
Выводы:
Изучили основные типы массивов, используемых в MATLAB.
Овладели навыками их формирования.
Самостоятельная работа
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