Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Создание структур и доступ к их компонентам↑ Стр 1 из 3Следующая ⇒ Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Тип данных «Структуры» Структура записей Структуры относятся к сложным типам данных. В предшествующих версиях 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; просмотров: 1536; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.16.68.121 (0.011 с.) |