Прикладные пакеты моделирования (3 лаб)
.pdfФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ Федеральное государственное образовательное бюджетное учреждение
высшего профессионального образования «Санкт-Петербургский государственный университет телекоммуникаций
им. проф. М. А. Бонч-Бруевича»
_____________________________________________________________________________
Кафедра радиосистем и обработки сигналов Дисциплина «Прикладные пакеты моделирования»
Лабораторная работа №3
Типы массивов
Выполнили:
Проверил:Степанов А. Б.
Санкт-Петербург
1. Знакомство с матрицами числового и логического типов.
>> A |
= [127.1 -127.1 127.7; -127.7 0 128.4; -128.4 255.7 |
||
255.1] |
|
|
|
A = |
|
|
|
127.1000 |
-127.1000 |
127.7000 |
|
-127.7000 |
0 |
128.4000 |
|
-128.4000 |
255.7000 |
255.1000 |
|
>> B = int8(A) |
|
||
B = |
|
|
|
127 |
-127 |
127 |
|
-128 |
0 |
127 |
|
-128 |
127 |
127 |
|
>> С = uint8(A) |
|
||
С = |
|
|
|
127 |
0 |
128 |
|
0 |
0 |
128 |
|
0 |
255 |
255 |
|
>> D = logical(A)
Warning: Values other than 0 or 1 converted to logical 1
D = |
|
|
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
Пояснение:
•как преобразовать матрицу A в матрицы B, C и D с помощью функций преобразований типа: double (X);
int8(X); uint8(X).
•по какому правилу формируются элементы матрицы B вещественный двойной точности
•по какому правилу формируются элементы матрицы C целый 8-битовый со знаком
•по какому правилу формируются элементы матрицы D целый 8-битовый без знака
•как определяется тип матрицы class(X)
2.Операции с матрицами числового типа.
2
>> sin(A) |
|
|
ans = |
|
|
0.9910 |
-0.9910 |
0.8936 |
-0.8936 |
0 |
0.3943 |
-0.3943 |
-0.9428 |
-0.5899 |
>> sin(B) |
|
|
???Function 'sin' is not defined for values of class 'int8'. Error in ==> sin at 12
builtin('sin', varargin{:}); >> sin(C)
???Function 'sin' is not defined for values of class 'uint8'. Error in ==> sin at 12
builtin('sin', varargin{:}); >> A+B
???Error using ==> plus
Integers can only be combined with integers of the same class, or scalar doubles.
>> B+C
??? Error using ==> plus
Integers can only be combined with integers of the same class,
or scalar doubles. |
||
>> x=[A>1] |
|
|
x = |
|
|
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
>> A |
|
|
A = |
|
|
127.1000 |
-127.1000 |
127.7000 |
-127.7000 |
0 |
128.4000 |
-128.4000 |
255.7000 |
255.1000 |
>>class(x) ans = logical
>>size(x) ans =
33
>>B&C
ans =
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
Пояснение:
•Синус элементов не может быть вычислен
•Сумма так же не может быть вычислена
3.Знакомство с матрицами символьного типа.
>> X = ['Селиванова ' 'Ольга ' 'Сергеевна']
X =
Селиванова Ольга Сергеевна
>>Y = char('Баландин', 'Иван ', 'Андреевич')
Y =
Баландин
Иван
Андреевич
>>F = [char('КИХ ','FIR') char('R=15','Order=15')]
F =
КИХ R=15
3
FIR Order=15 |
|
|
>> G=num2str(A) |
|
|
G = |
|
|
127.1 |
-127.1 |
127.7 |
-127.7 |
0 |
128.4 |
-128.4 |
255.7 |
255.1 |
Пояснение:
•как обеспечить не слитный вывод элементов вектора-строки с помощью пробелов, которые должен выставить пользователь
•как обеспечить автоматическое добавление пробелов при выводе элементов столбца
char('<char1>','<char2>'...) где <char1>,<char2>... — элементы столбца с произвольным количеством символов.
•как преобразовать матрицу числового типа в матрицу символьного типа Преобразование матрицы численного или логического типа в
матрицу символьного типа выполняется с помощью функции
num2str(x)
4.Знакомство с массивами записей (структурами).
>>filter(1).Type='lowpass';
>>filter(2).Type='highpass';
>>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).Fs='1000';
>>filter(2).Fs='2000';
>>filter(3).Fs='3000';
>>filter(4).Fs='4000';
>>filter
filter =
1x4 struct array with fields: Type
Order Fs
>>filter (1) ans =
Type: 'lowpass' Order: '10'
Fs: '1000'
>>filter.Type
ans = lowpass ans = highpass ans = bandpass ans = stopband
>> filter(3).Type ans =
bandpass
4
>> rmfield(filter,'Fs') ans =
1x4 struct array with fields: Type
Order
Пояснение:
•с какой целью создается массив записей
Структура (массив записей — struct array) — это разновидность нечислового массива, предназначенного для описания M объектов N параметрами. Для описания структуры потребуется ввести ряд новых терминов
•что собой представляет запись и значение записи
Type (тип избирательности) — lowpass, highpass, bandpass, stopband;
Order (порядок фильтра) — 10, 20, 30, 40; Fs— 1000, 2000, 3000, 4000
•каков размер массива записей Filter
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.7000 |
-127.7000 |
0 |
128.4000 |
-128.4000 |
255.7000 |
255.1000 |
>>class(S{1,1}) ans =
double
>>class(S{1,2}) ans =
int8
>>class(S{1,3}) ans =
uint8
>>class(S{2,1}) ans =
logical
>>class(S{2,2}) ans =
char
>>class(S{2,3}) ans =
char
>>class(S{3,1}) ans =
char
5
>>class(S{3,2}) ans =
char
>>class(S{3,3}) ans =
struct
Пояснение:
•из каких элементов создается матрица ячеек
Массив ячеек (cell array) — это наиболее сложный тип массива, элементами которого являются ячейки, представляющее собой массивы любой размерности, любого размера и типа. Элементы массива ячеек указываются в фигурных скобках.
•как эти элементы вводятся Поочередно присваиваем значения
•как выводится графическое представление матрицы ячеек Графическое представление матрицы ячеек создается с помощью
функции:
cellplot(A,'legend')
•что оно собой представляет
6
Представляет собой матрицу, в которой каждая взятая отдельная матрица графически описана
7