![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Создание структур и доступ к их компонентамСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Тип данных «Структуры» Структура записей Структуры относятся к сложным типам данных. В предшествующих версиях MATLAB они именовались записями, что приводило к неточностям в терминологии системы MATLAB и баз данных. После того как в MATLAB были включены средства создания баз данных, этот тип данных стал именоваться структурами (structures). Они могут содержать разнородные данные, относящиеся к некоторому именованному объекту. Например, объект man (человек) может характеризоваться следующими данными:
Первые два столбца представляют схему структуры. Как нетрудно заметить, каждая i- я структура состоит из ряда полей, имеющих имена, например man(i).name, man(i).date и т. д. Поля могут содержать данные любого типа – от пустого поля [ ] до массивов. Приведенная выше структура имеет размер 1х1. MATLAB поддерживает и массивы структур, что позволяет создавать мощные базы данных. Поле структуры может содержать другую вложенную структуру или массив структур. Это позволяет создавать вложенные структуры и даже многомерные массивы структур.
Создание структур и доступ к их компонентам Для задания структур на языке MATLAB можно использовать операторы присваивания, что иллюстрирует следующий пример: >> man.name='Иван'; >> man.surname='Петров'; >> man.date=1956; >> man.height=170.5; >> man.weight=70.34; Здесь построена базовая структура без индексного указателя. Теперь можно просмотреть полученную структуру, просто указав ее имя: >> man man = name: 'Иван' surname: 'Петров' date: 1956 height: 170.5000 weight: 70.3400
Нетрудно догадаться, что компоненты структуры можно вызывать по имени и менять их значения. При этом имя компонента состоит из имени структуры и имени поля, разделенных точкой. Это поясняют следующие примеры: >> man.date ans = >> man.date=1964 >> man = name: 'Иван' surname: 'Петров' date: 1964 height: 170.5000 weight: 70.3400
Для создания массива структур вводится их индексация. Например, вектор структур можно создать, введя индекс в скобках после имени структуры. Так, для создания новой, второй структуры можно поступить следующим образом: >> man(2).name='Петр'; >> man(2).surname='Сидоров'; >> man(2).date=1959; >> man(2) ans = name: 'Петр' surname: 'Сидоров' date: 1959 height: [ ] weight: [ ] >> man(2).surname ans = Сидоров >> length(man) ans =
Обратите внимание на то, что не все поля данной структуры заполнены. По-этому значением двух последних компонентов структуры 2 оказываются пустые массивы. Число структур позволяет найти функция length (см. последний при мер).
Функция создания структур Для создания структур используется следующая функция: • struct('field1',VALUES1,'field2',VALUES2,…) возвращает созданную данной функцией структуру, содержащую указанные в параметрах поля 'fieldn' с их значениями 'VALUESn'. Значением может быть массив ячеек. Пример: S=struct('student','Иванов','grup',2,'estimate','good') S = student: 'Иванов' grup: 2 estimate: 'good'
Проверка имен полей и структур Выполнение операций с полями и элементами полей выполняется по тем же правилам, что и при работе с обычными массивами. Однако существует ряд функций, осуществляющих специфические для структур операции. Приведенные ниже функции служат для тестирования имен полей и структур записей: • isfields(S,'field') возвращает логическую 1, если 'field' является именем поля структуры S; • isstruct(S) возвращает логическую 1, если S – структура, и 0 в ином случае. Их применение на примере структуры man показано ниже: >> isfield(man,'name') ans = 1 >> isfield(man,'family') ans = 0 >> isstruct(man) ans = 1 >> isstruct(many) ??? Undefined function or variable 'many'. >> isstruct('many') ans = 0
Функции полей структур Функция возврата имен полей Следующая функция позволяет вывести имена полей заданной структуры: • fieldnames(S) возвращает имена полей структуры S в виде массива ячеек. Пример: >> fieldnames(man) ans = 'name' 'surname' 'date' 'height' 'weight' Функция возврата содержимого полей структуры В конечном счете работа со структурами сводится к выводу и использованию содержимого полей. Для возврата содержимого поля структуры S служит функция getfield: • getfield(S,'field') возвращает содержимое поля структуры S, что эквивалентно S.field; • getfield(S,{i,j},'field',{k}) эквивалентно F=S(i,j).field(k). Пример: >> getfield(man(2),'name') ans = Петр
Функция присваивания значений полям Для присваивания полям заданных значений используется следующая функция: • setfield(S,'field',V) возвращает структуру S с присвоением полю 'field' значения V, что эквивалентно S.field=V. Пример: >> setfield(man(2),'name','Николай') ans = name: 'Николай' surname: 'Сидоров' date: 1959 height: [ ] weight: [ ]
Удаление полей Для удаления полей структуры можно использовать следующую функцию: • rmfield(S,'field') возвращает структуру S с удаленным полем 'field'.S; • rmfield(S,FIELDS) возвращает структуру S с несколькими удаленными полями. Список удаляемых полей FIELDS задается в виде массива символов или строкового массива ячеек. Пример: >> rmfield(man(2),'surname') ans = name: 'Петр' date: 1959 height: [] weight: []
Массивы ячеек Создание массивов ячеек Массив ячеек – наиболее сложный тип данных в системе MATLAB. Это массив, элементами которого являются ячейки, содержащие любые типы массивов, включая массивы ячеек. Отличительным атрибутом массивов ячеек является задание содержимого последних в фигурных скобках {}. Создавать массивы ячеек можно с помощью оператора присваивания. Существуют два способа присваивания данных отдельным ячейкам: • индексацией ячеек; • индексацией содержимого. Рассмотрим первый способ. Для этого создадим файл-сценарий с именем ce.m: A(1,1)={'Курить вредно!'}; A(1,2)={[1 2;3 4]}; A(2,1)={2+3i}; A(2,2)={0:0.1:1}
В этом примере задан массив ячеек с четырьмя элементами: строкой символов, матрицей, комплексным числом и одномерным массивом из 11 чисел. Теперь можно вызвать этот массив: >> ce A = 'Курить вредно!' [2x2 double] [2.0000+ 3.0000i] [1x11 double] >> A(1,1) ans = 'Курить вредно!' >> A(2,1) ans = [2.0000+ 3.0000i]
Заметим, что к ячейкам такого массива можно обращаться с помощью индексирования, например в виде A(1,1), A(2,1) и т. д. При индексации содержимого массив ячеек задается следующим образом: A{1,1}='Курить вредно!'; A{1,2}=[1 2;3 4]; A{2,1}=2+3i; A{2,2}=0:0.1:1; Теперь можно ознакомиться с созданным массивом ячеек в командном режиме: >> A ans = 'Курить вредно!' [2x2 double] [2.0000+ 3.0000i] [1x11 double] >> A{1,1} ans = Курить вредно! >> A{2,1} ans = 2.0000 + 3.0000i При серьезной работе с массивами структур (записей) и массивами ячеек полезно иметь дополнительную информацию о списках значений. Для получения такой информации следует выполнить команду help list. Визуализация массивов ячеек Для отображения массива ячеек C служит команда celldisp(C). Она дает рекурсивное отображение содержимого массива ячеек C. Например, для ранее созданного массива ячеек A получится следующее: >> celldisp(A) A{1,1} = Курить вредно! A{2,1} = 2.0000 + 3.0000i A{1,2} = 1 2 3 4 A{2,2} = Columns 1 through 7 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 Columns 8 through 11 0.7000 0.8000 0.9000 1.0000 Для более наглядного графического представления массива ячеек может использоваться команда cellplot: • cellplot(C) строит структуру массива ячеек C; • cellplot(C,'legend') строит структуру массива ячеек C вместе с «легендой» – шкалой стилей представления данных; На рис. 1 показано представление массива ячеек A, сформированного ранее. Как видно на рис. 1, ячейки массива представлены квадратами. Векторы и матрицы с численными данными представляются массивами красного цвета с прямоугольными ячейками, при этом отображаются отдельные числа и текстовые данные. Справа от представления массива показана легенда, которая даже в монохромном изображении облегчает выделение типов компонент массива оттенками серого цвета.
Рис. 1. Графическое представление массива с четырьмя ячейками Многомерные массивы ячеек Вложенные массивы ячеек Содержимым ячейки массива ячеек может быть, в свою очередь, произвольный массив ячеек. Таким образом, возможно создание вложенных массивов ячеек – пожалуй, самого сложного типа данных. В следующем примере показано формирование массива ячеек A с вложенным в него массивом B (он был создан в примере выше):
>> clear A; >> A(1,1)={{magic(3),{'Hello!'}}}; >> A(1,2)={B}; >> A ans = {1x2 cell} {2x2 cell} >> A{1} ans = [3x3 double] {1x1 cell} >> A{2} ans = 'Пить тоже вредно!' [1x4 double] [ 2] [ 6.2832] >> cellplot(A) На рис. 3 показано отображение массива A с вложенным в него массивом B. В данном случае вложенный массив отображается полностью как часть массива A.
Рис. 3. Графическое представление массива с вложенным в него другим массивом Урок 6 Тип данных «Структуры» Структура записей Структуры относятся к сложным типам данных. В предшествующих версиях MATLAB они именовались записями, что приводило к неточностям в терминологии системы MATLAB и баз данных. После того как в MATLAB были включены средства создания баз данных, этот тип данных стал именоваться структурами (structures). Они могут содержать разнородные данные, относящиеся к некоторому именованному объекту. Например, объект man (человек) может характеризоваться следующими данными:
Первые два столбца представляют схему структуры. Как нетрудно заметить, каждая i- я структура состоит из ряда полей, имеющих имена, например man(i).name, man(i).date и т. д. Поля могут содержать данные любого типа – от пустого поля [ ] до массивов. Приведенная выше структура имеет размер 1х1. MATLAB поддерживает и массивы структур, что позволяет создавать мощные базы данных. Поле структуры может содержать другую вложенную структуру или массив структур. Это позволяет создавать вложенные структуры и даже многомерные массивы структур.
Создание структур и доступ к их компонентам Для задания структур на языке MATLAB можно использовать операторы присваивания, что иллюстрирует следующий пример: >> man.name='Иван'; >> man.surname='Петров'; >> man.date=1956; >> man.height=170.5; >> man.weight=70.34; Здесь построена базовая структура без индексного указателя. Теперь можно просмотреть полученную структуру, просто указав ее имя: >> man man = name: 'Иван' surname: 'Петров' date: 1956 height: 170.5000 weight: 70.3400
Нетрудно догадаться, что компоненты структуры можно вызывать по имени и менять их значения. При этом имя компонента состоит из имени структуры и имени поля, разделенных точкой. Это поясняют следующие примеры: >> man.date ans = >> man.date=1964 >> man = name: 'Иван' surname: 'Петров' date: 1964 height: 170.5000 weight: 70.3400
Для создания массива структур вводится их индексация. Например, вектор структур можно создать, введя индекс в скобках после имени структуры. Так, для создания новой, второй структуры можно поступить следующим образом:
>> man(2).name='Петр'; >> man(2).surname='Сидоров'; >> man(2).date=1959; >> man(2) ans = name: 'Петр' surname: 'Сидоров' date: 1959 height: [ ] weight: [ ] >> man(2).surname ans = Сидоров >> length(man) ans =
Обратите внимание на то, что не все поля данной структуры заполнены. По-этому значением двух последних компонентов структуры 2 оказываются пустые массивы. Число структур позволяет найти функция length (см. последний при мер).
Функция создания структур Для создания структур используется следующая функция: • struct('field1',VALUES1,'field2',VALUES2,…) возвращает созданную данной функцией структуру, содержащую указанные в параметрах поля 'fieldn' с их значениями 'VALUESn'. Значением может быть массив ячеек. Пример: S=struct('student','Иванов','grup',2,'estimate','good') S = student: 'Иванов' grup: 2 estimate: 'good'
|
||||||||
Последнее изменение этой страницы: 2016-04-23; просмотров: 1554; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.116.31 (0.009 с.) |