orderfields

Упорядоченные поля массива структур

Описание

пример

S = orderfields(S1) заказывает поля в S1 по имени.

Поскольку имена полей могут содержать только буквы, цифры и символ подчеркивания, этот синтаксис сортирует имена полей в порядке ASCII. Все заглавные буквы приходят перед всеми строчными буквами.

пример

S = orderfields(S1,S2) возвращает копию S1 с переупорядоченными полями, чтобы соответствовать порядку полей S2. Входные массивы структур S1 и S2 должны иметь одинаковые имена полей.

пример

S = orderfields(S1,C) соответствует порядку имен, заданных в массиве входа C. Имя каждого поля в S1 должен появиться один раз в C.

пример

S = orderfields(S1,P) соответствует порядку, заданному вектором сочетания P.

Если S1 имеет n поля, затем элементы P являются целыми числами от 1 через n, расположенные в любом порядке. Для примера, если S1 имеет три поля и P является [3 1 2], затем третье поле S1 - первое поле выхода S. Этот синтаксис полезен для того, чтобы упорядочить несколько массивов структур одним и тем же способом.

пример

[S,Pout] = orderfields(___) также возвращает вектор сочетания. Элементы Pout являются целыми числами от 1 через n, организованная в порядке, который представляет изменение порядка полей. Можно использовать этот синтаксис с любым из входных параметров предыдущих синтаксисов.

Примеры

свернуть все

Создайте структуру с несколькими полями.

S1 = struct('b',1,'B',2,'a',3,'A',4)
S1 = struct with fields:
    b: 1
    B: 2
    a: 3
    A: 4

Закажите поля. Этот синтаксис упорядочивает поля по их именам в порядке ASCII.

S = orderfields(S1)
S = struct with fields:
    A: 4
    B: 2
    a: 3
    b: 1

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

S1 = struct('b',1,'B',2,'a',3,'A',4)
S1 = struct with fields:
    b: 1
    B: 2
    a: 3
    A: 4

S2 = struct('a',0,'b',20,'B',10,'A',0)
S2 = struct with fields:
    a: 0
    b: 20
    B: 10
    A: 0

Закажите поля в S1 чтобы соответствовать порядку полей в S2.

S = orderfields(S1,S2)
S = struct with fields:
    a: 3
    b: 1
    B: 2
    A: 4

Создайте структуру.

data.x = linspace(0,2*pi);
data.y = sin(data.x);
data.title = 'y = sin(x)'
data = struct with fields:
        x: [1x100 double]
        y: [1x100 double]
    title: 'y = sin(x)'

Упорядочить поля можно путем перечисления их имен в массиве ячеек.

C = {'title','x','y'};
data = orderfields(data,C)
data = struct with fields:
    title: 'y = sin(x)'
        x: [1x100 double]
        y: [1x100 double]

Создайте структуру.

data.x = linspace(0,2*pi);
data.y = sin(data.x);
data.title = 'y = sin(x)'
data = struct with fields:
        x: [1x100 double]
        y: [1x100 double]
    title: 'y = sin(x)'

Упорядочивайте поля путем перечисления их исходных позиций в другом порядке. Для примера переместите третье поле так, чтобы оно было первым полем структуры output.

P = [3 1 2];
data = orderfields(data,P)
data = struct with fields:
    title: 'y = sin(x)'
        x: [1x100 double]
        y: [1x100 double]

Создайте структуру.

data1.x = linspace(0,2*pi);
data1.y = sin(data1.x);
data1.title = 'y = sin(x)';

Переупорядочить структуру можно используя orderfields функция. Сохраните новый порядок поля в векторе сочетания Pout.

[S,Pout] = orderfields(data1,{'title','x','y'})
S = struct with fields:
    title: 'y = sin(x)'
        x: [1x100 double]
        y: [1x100 double]

Pout = 3×1

     3
     1
     2

Создайте вторую структуру с теми же полями.

data2.x = data1.x;
data2.y = cos(data2.x);
data2.title = 'y = cos(x)';

Переупорядочить поля data2 использование Pout. Если у вас есть много структур с одинаковыми именами полей, то можно использовать Pout, чтобы переупорядочить их все одинаковым образом.

S2 = orderfields(data2,Pout)
S2 = struct with fields:
    title: 'y = cos(x)'
        x: [1x100 double]
        y: [1x100 double]

Входные параметры

свернуть все

Входная структура, заданная как массив структур.

Порядок полей по структуре, заданный как массив структур. S2 имеет те же поля, что и S1 но задает их в другом порядке.

Порядок полей по имени, заданный как массив ячеек из векторов символов или строковые массивы. Имена в C должны совпадать с именами полей S1.

Порядок поля по числу, заданный как числовой вектор. Числа должны быть целыми числами от 1 через n, где n количество полей S1.

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

свернуть все

Переупорядоченная структура, возвращенная как массив структур. S имеет те же поля, что и S1 но они могут быть в другом порядке.

Выход поля, возвращенный как числовой вектор. Элементы Pout являются целыми числами от 1 через n, где n количество полей S1. Сочетание целых чисел представляет изменение порядка полей.

Совет

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

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