Значения полей из массива структур
Загрузка структуры, содержащей информацию о дорогах в 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');
Извлеките имена дорог, хранящиеся в поле 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}
S
- СтруктураСтруктура, заданная как структура.
name
- Имя поляИмя поля, заданное как чувствительный к регистру строковый скаляр или вектор символов.
a
- Извлеченные значения поляИзвлеченные значения поля, возвращенные как 1-байт- n числовой вектор или массив ячеек. n - общее количество элементов в поле name
структуры S
, то есть n = numel([S(:).(name)])
. a
- массив ячеек, если какие-либо значения полей в имени поля содержат вектор символов или если значения полей неоднородны по типу; в противном случае a
- тот же тип, что и значения полей. Форма входа поля не сохранилась в a
.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.