orderfields

Закажите поля массива структур

Синтаксис

s = orderfields (s1)
s = orderfields (s1, s2)
s = orderfields (s1, c)
s = orderfields (s1, перманент)
[s, перманент] = orderfields (...)

Описание

s = orderfields(s1) заказывает поля в s1 так, чтобы новый массив структур s имел имена полей в лексикографическом порядке ASCII.

s = orderfields(s1, s2) заказывает поля в s1 так, чтобы новый массив структур s имел имена полей в том же порядке как те в s2. Структуры sl и s2 должны иметь те же поля.

s = orderfields(s1, c) заказывает поля в s1 так, чтобы новый массив структур s имел имена полей в том же порядке как имена в c. Входной параметр c может быть массивом ячеек из символьных векторов или массивом строк. Структура s1 и массив c должна содержать те же имена полей.

s = orderfields(s1, perm) заказывает поля в s1 так, чтобы новый массив структур s имел имена полей в порядке, заданном индексами в векторе перестановки perm.

Если s1 имеет имена полей N, элементы perm должны быть расположением чисел от 1 до N. Это особенно полезно, если бы у вас есть больше чем один массив структур, который требуется переупорядочить таким же образом.

[s, perm] = orderfields(...) возвращает вектор перестановки представление изменения, по порядку выполняемого на полях массива структур, который приводит к s.

Примеры

Создайте структуру s. Затем создайте новую структуру из s, но с полями, заказанными в алфавитном порядке:

s = struct('b', 2, 'c', 3, 'a', 1)
s = 
    b: 2
    c: 3
    a: 1

snew = orderfields(s)
snew = 
    a: 1
    b: 2
    c: 3

Расположите поля s в порядке, заданном вторым (массив ячеек) аргумент orderfields. Возвратите новую структуру в snew, и вектор перестановки раньше создавал его в perm:

[snew, perm] = orderfields(s, {'b', 'a', 'c'})
snew = 
    b: 2
    a: 1
    c: 3
perm =
     1
     3
     2

Теперь создайте новую структуру, s2, имея те же имена полей как s. Переупорядочьте поля с помощью вектора перестановки, возвращенного в предыдущей операции:

s2 = struct('b', 3, 'c', 7, 'a', 4)
s2 = 
    b: 3
    c: 7
    a: 4

snew = orderfields(s2, perm)
snew = 
    b: 3
    a: 4
    c: 7

Советы

orderfields только заказывает поля верхнего уровня. Это не рекурсивно.

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

Была ли эта тема полезной?