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

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

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

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

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

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

_____________________________________________________________________________

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

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

Лабораторная работа №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 =

3×3 int8 matrix

127 -127 127

-128 0 127

-128 127 127

>> C = uint8(A)

C =

3×3 uint8 matrix

127 0 128

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'

Пояснение:

  • Как преобразовать матрицу A в матрицы B, C и D

С помощью функций преобразований типа: double (X); int8(X); uint8(X).

  • По какому правилу формируются элементы матрицы B

Числа преобразуются в константы, лежащие в интервале -128;127

Тип вещественный двойной точности

  • По какому правилу формируются элементы матрицы C

Числа преобразуются в константы, лежащие в интервале положительных чисел от 0 до 255

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

  • По какому правилу формируются элементы матрицы D

Любой элемент, отличающийся от 0 преобразуется в логическую 1, а нули, соответственно, в логический 0

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

  • Как определяется тип матрицы

class(X)

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

>> sin(A)

ans =

0.9910 -0.9910 0.8936

-0.8936 0 0.3943

-0.3943 -0.9428 -0.5899

>> sin(B)

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

>> sin(C)

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

>> A+B

Error using +

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

>> B+C

Error using +

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

>> x=[A>1]

x =

3×3 Logical array

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 =

3 3

>> v = B&C

v =

3×3 Logical array

1 0 1

0 0 1

0 1 1

>> class(v)

ans =

'logical'

>> size(v)

ans =

3 3

Пояснение:

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

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

>> X = ['Фомин ' 'Павел ' 'Викторович']

X =

'Фомин Павел Викторович'

>> Y = char('Меланков ', 'Александр ', 'Игоревич')

Y =

3×10 char array

'Меланков '

'Александр '

'Игоревич '

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

'-127.7 0 128.4'

'-128.4 255.7 255.1'

>> class(A)

ans =

'double'

>> class(G)

ans =

'char'

Пояснение:

  • Как обеспечить не слитный вывод элементов вектора-строки?

С помощью пробелов, которые должен выставить пользователь

  • как обеспечить автоматическое добавление пробелов при выводе элементов столбца?

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

'highpass'

ans =

'bandpass'

ans =

'stopband'

>> filter(3).Type

ans =

'bandpass'

>> rmfield(filter,'Poles')

ans =

1×4 struct array with fields:

Type

Order

Пояснение:

  • с какой целью создается массив записей?

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

  • что собой представляет запись и значение записи?

Type (тип избирательности) — lowpass, highpass, bandpass, stopband;

Order (порядок фильтра) — 10, 20, 30, 40;

Poles – true, false, false, true.

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

>> S{3,3}

ans =

1×4 struct array with fields:

Type

Order

Poles

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

>> class(S{3,2})

ans =

'char'

>> class(S{3,3})

ans =

'struct'

cellplot(S,'legend')

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

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

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

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

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

>> B = sum(A{1,2})+A{1,1}

  1. =

8.1416 10.1416 12.1416

>>class(B) ans =

‘double’

>> C = A{1,2}*A{1,1}

  1. =

3.1416 6.2832 9.4248

12.5664 15.7080 18.8496

>>class(C) ans =

‘double’

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

Привести пример выражения с матрицами целого типа.

>> A = [int8(19.7) int8(15.5) int8(-15.7); int8(13.1) int8(50.9) int8(-59.3)] A =

Соседние файлы в предмете Прикладные пакеты моделирования