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

Прикладные пакеты моделирования (3 лаб)

.pdf
Скачиваний:
152
Добавлен:
30.01.2019
Размер:
209.74 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ Федеральное государственное образовательное бюджетное учреждение

высшего профессионального образования «Санкт-Петербургский государственный университет телекоммуникаций

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

_____________________________________________________________________________

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

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