Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Проверка имен полей и структурСодержание книги
Поиск на нашем сайте
Выполнение операций с полями и элементами полей выполняется по тем же правилам, что и при работе с обычными массивами. Однако существует ряд функций, осуществляющих специфические для структур операции. Приведенные ниже функции служат для тестирования имен полей и структур записей: • 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: []
Применение массивов структур Массивы структур находят самое широкое применение. Например, они используются для представления цветных изображений известного RGB. Они состоят из массивов интенсивности трех цветов – красного r, зеленого g и синего b. Еще более сложные структуры (но, в принципе, вполне очевидные) нужны для разработки баз данных, например о работниках предприятия, службах города, городах страны и т. д. Во всех этих случаях особенно важна возможность доступа к отдельным ячейкам структур и возможность присвоения таким структурам уникальных имен. Массивы ячеек Создание массивов ячеек Массив ячеек – наиболее сложный тип данных в системе 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. Создание ячеек с помощью функции cell Для создания массива ячеек может использоваться функция cell: • cell(N) создает массив ячеек из NхN пустых матриц; • cell(M,N) или cell([M,N]) создает массив ячеек из MхN пустых матриц; • cell(M,N,P,…) или cell([M N P …]) создает массив из MхNхPх… пустых матриц; • cell(size(A)) создает массив ячеек из пустых матриц того же размера, что и массив A; • cell(объект Java) автоматически преобразует объекты или массивы Java (javaarray) в массив ячеек, элементы которого являются объектами MATLAB. Следующие примеры поясняют применение данной функции: >> cell(2) ans = [ ] [ ] [ ] [ ] >> C=cell(2,3) C = [ ] [ ] [ ] [ ] [ ] [ ] >> C0=zeros(2,3) C0 = 0 0 0 0 0 0 >> cell(size(C0)) ans = [ ] [ ] [ ] [ ] [ ] [ ] Созданные пустые ячейки можно заполнить, используя операции присваивания: >> C{1,1}=1;C{1,2}='Привет';С{2,1}='Hello';C{2,2}=[1 2; 3 4]; >> C C = [ 1] 'Привет' [ ] 'Hello' [2x2 double] [ ] Визуализация массивов ячеек Для отображения массива ячеек 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. Графическое представление массива с четырьмя ячейками
|
||||
Последнее изменение этой страницы: 2016-04-23; просмотров: 354; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.51.233 (0.006 с.) |