Типы массивов L3. Лабораторная работа 3 Типы Массивов Выполнили группа рм03 Миронов М. Е. Фокичев А. А. Проверил преподаватель Гуреев А. Е
Скачать 224 Kb.
|
ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ Федеральное государственное бюджетное образовательное учреждение высшего образования «Санкт-Петербургский государственный университет телекоммуникаций им. проф. М. А. Бонч-Бруевича» _____________________________________________________________________________ Кафедра радиосистем и обработки сигналов Дисциплина «Прикладные пакеты моделирования» Лабораторная работа № 3Типы Массивов Выполнили: группа РМ-03 Миронов М. Е. Фокичев А. А. Проверил: преподаватель: Гуреев А.Е. Санкт-Петербург 2022 Знакомство с матрицами числового и логического типов >> 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 >> C = uint8 (A) C = 127 0 128 0 0 128 0 255 255 >> D = logical (A) 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 Пояснения: С помощью функций преобразований типа: int8(A) uint8(A) logical(A) по правилу целый 8-битовый со знаком по правилу целый 8-битовый без знака логический class(A) Операции с матрицами числового типа >> sin (A) ans = 0.9910 -0.9910 0.8936 -0.8936 0 0.3943 -0.3943 -0.9428 -0.5899 >> sin (B) ??? Undefined function or method 'sin' for input arguments of type 'int8'. >> sin (C) ??? Undefined function or method 'sin' for input arguments of type 'uint8'. >> A+B ??? Error using ==> plus Class of operand is not supported. >> 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 = 3 3 >> B&C ans = 1 0 1 0 0 1 0 1 1 Пояснение: Синус элементов B и C не могут быть вычислены Сумма так же не может быть вычислена Знакомство с матрицами символного типа >> X=['Петров ' 'Алексей ' 'Андреевич'] X = Петров Алексей Андреевич >> Y=['Егоров ' 'Олег ' 'Борисович'] Y = Егоров Олег Борисович >> F = [char('КИХ ','FIR ') char('R=15','Order=15')] F = КИХ R=15 FIR Order=15 >> A A = 127.1000 -127.1000 127.7000 -127.7000 0 128.4000 -128.4000 255.7000 255.1000 >> G=num2str(A) G = 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(‘ Знакомство с массивами записей (структурами) >> 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 = 1x4 struct array with fields: Type Order Poles >> filter (1) ans = Type: 'lowpass' Order: '10' Poles: 'true' >> filter.Type ans = lowpass ans = highpass ans = bandpass ans = stopband >> filter(3).Type ans = bandpass >> rmfield(filter, 'Poles') ans = 1x4 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. Знакомство с матрицами ячеек >> 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 >> S{1,2} ans = 127 -127 127 -128 0 127 -128 127 127 >> class(S{1,2}) ans = int8 >> S{1,3} ans = 127 0 128 0 0 128 0 255 255 >> class(S{1,3}) ans = uint8 >> S{2,1} ans = 1 1 1 1 0 1 1 1 1 >> class(S{2,1}) ans = logical >> S{2,2} ans = КИХ R=15 FIR Order=15 >> class(S{2,2}) ans = char >> S{2,3} ans = 127.1 -127.1 127.7 -127.7 0 128.4 -128.4 255.7 255.1 >> class(S{2,3}) ans = char >> S{3,1} ans = Петров Алексей Андреевич >> class(S{3,1}) ans = char >> S{3,2} ans = Егоров Олег Борисович >> class(S{3,2}) ans = char >> S{3,3} ans = 1x4 struct array with fields: Type Order Poles >> class(S{3,3}) ans = struct Пояснения: Массив ячеек (cell array) — это наиболее сложный тип массива, элементами которого являются ячейки, представляющее собой массивы любой размерности, любого размера и типа. Поочередно присваиваем значения Графическое представление матрицы ячеек создается с помощью функции cellplot (A, “legend”) Представляет собой матрицу, в которой каждая взятая отдельная матрица графически описана Самостоятельная работа 1С) Операции с элементами массива ячеек >> 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; >> 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} B = 8.1416 10.1416 12.1416 2С) Операции с матрицами целого типа >> A = [int8(270.1) int8(320.8) int8(526.5)] A = 127 127 127 >> B = [int8(120.1) int8(130.2) int8(97.2)] B = 120 127 97 >> A+B ans = 127 127 127 3С) Операции с матрицами логического типа >> C = [A C = 0 0 0 0 1 0 1 1 1 4С) Операции с матрицами символьного типа >> A = [123.1 119.2 95.3; 78.4 99.5 111.6; 162.7 32.8 156.9] A = 123.1000 119.2000 95.3000 78.4000 99.5000 111.6000 162.7000 32.8000 156.9000 >> class (A) ans = double >> B = num2str(A) B = 123.1 119.2 95.3 78.4 99.5 111.6 162.7 32.8 156.9 >> class (B) ans = char 5С) Операции с массивами записей >> Person(1).Name=['Петров' 'Алексей' 'Андреевич']; Person(2).Name=['Гельфанд' 'Анна' 'Вениаминовна']; Person(3).Name=['Гирфанова' 'Кристина' 'Фаритовна']; >> Person(1).RV=[190 195; 80 85]; Person(2).RV=[160 165; 50 60]; Person(3).RV=[160 165; 40 50]; >> Person.Name ans = ПетровАлексейАндреевич ans = ГельфандАннаВениаминовна ans = ГирфановаКристинаФаритовна >> Person(1) ans = Name: 'ПетровАлексейАндреевич' RV: [2x2 double] >> Person.RV ans = 190 195 80 85 ans = 160 165 50 60 ans = 160 165 40 50 |