Проверка имен полей и структур



Мы поможем в написании ваших работ!


Мы поможем в написании ваших работ!



Мы поможем в написании ваших работ!


ЗНАЕТЕ ЛИ ВЫ?

Проверка имен полей и структур



Выполнение операций с полями и элементами полей выполняется по тем же правилам, что и при работе с обычными массивами. Однако существует ряд функций, осуществляющих специфические для структур операции.

Приведенные ниже функции служат для тестирования имен полей и структур записей:

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; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.236.214.224 (0.008 с.)