exponenta event banner

extractfield

Значения полей из массива структуры

Синтаксис

Описание

пример

a = extractfield(S,name) возвращает значения полей, указанные в поле name структуры S.

Примеры

свернуть все

Загрузите структуру, которая содержит информацию о дорогах в Concord, MA.

roads = shaperead('concord_roads.shp');
r = roads(1:5)
r=5×1 struct array with fields:
    Geometry
    BoundingBox
    X
    Y
    STREETNAME
    RT_NUMBER
    CLASS
    ADMIN_TYPE
    LENGTH

Получите координаты x и y дорог. Отобразите карту и выделите первые несколько элементов с помощью пурпурного цвета.

hold on
plot(extractfield(roads,'X'),extractfield(roads,'Y'));
plot(extractfield(r,'X'),extractfield(r,'Y'),'m');

Figure contains an axes. The axes contains 2 objects of type line.

Извлеките названия дорог, хранящиеся в поле STREETNAME. Значения полей являются векторами символов, поэтому результат возвращается в массиве ячеек.

names = extractfield(r,'STREETNAME')
names = 1x5 cell
  Columns 1 through 4

    {0x0 char}    {'WRIGHT FARM'}    {'WRIGHT FARM'}    {'WRIGHT FARM'}

  Column 5

    {'WRIGHT FARM'}

Извлеките X из структуры и проверьте формат возвращаемых значений. Все значения имеют одинаковый числовой тип данных (double), поэтому результат возвращается в векторе.

uniformType = extractfield(r,'X')
uniformType = 1×42
105 ×

    2.0884    2.0884    2.0884    2.0883    2.0883    2.0882    2.0882    2.0882    2.0882    2.0882    2.0882    2.0883    2.0883       NaN    2.0884    2.0886    2.0887    2.0889    2.0890    2.0890    2.0891       NaN    2.0891    2.0891    2.0891    2.0891       NaN    2.0898    2.0898    2.0897    2.0896    2.0896    2.0895    2.0894    2.0894    2.0893    2.0892    2.0891       NaN    2.0891    2.0892       NaN

В иллюстративных целях измените значение поля X в одном из элементов на другой тип данных. Эта команда преобразует второй элемент в тип данных single.

r(2).X = single(r(2).X);

Извлеките X снова значения полей. На этот раз значения имеют различные типы данных, поэтому результат возвращается в массиве ячеек.

mixedType = extractfield(r,'X')
mixedType=1×5 cell array
  Columns 1 through 4

    {1x14 double}    {1x8 single}    {1x5 double}    {1x12 double}

  Column 5

    {1x3 double}

Входные аргументы

свернуть все

Структура, заданная как структура.

Имя поля, определяемое как скалярный или символьный вектор строки с учетом регистра.

Выходные аргументы

свернуть все

Извлеченные значения полей, возвращенные в виде числового вектора или массива ячеек 1 на n. n - общее число элементов в поле name структуры S, то есть n = numel([S(:).(name)]). a является массивом ячеек, если какие-либо значения полей в имени поля содержат символьный вектор или если значения полей не одинаковы по типу; иначе a имеет тот же тип, что и значения полей. Форма поля ввода не сохраняется в a.

См. также

|

Представлен до R2006a