exponenta event banner

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)'

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

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