exponenta event banner

союз

Установка объединения двух массивов

Описание

пример

C = union(A,B) возвращает объединенные данные из A и B без повторов. C находится в отсортированном порядке.

  • Если A и B таблицы или расписания, то union возвращает объединенный набор строк из обеих таблиц. Для расписания, union учитывает время строк для определения равенства и сортирует расписание вывода C по временам строк.

пример

C = union(A,B,setOrder) прибыль C в определенном порядке. setOrder может быть 'sorted' или 'stable'.

C = union(A,B,___,'rows') и C = union(A,B,'rows',___) обрабатывать каждую строку A и каждая строка B как одиночные объекты и вернуть объединенные строки из A и Bбез повторов. Необходимо указать A и B и дополнительно может указать setOrder.

'rows' параметр не поддерживает массивы ячеек, если только один из входов не является категориальным массивом или массивом datetime.

пример

[C,ia,ib] = union(___) также возвращает векторы индекса ia и ib с использованием любого из предыдущих синтаксисов.

  • Как правило, значения в C являются сортированной комбинацией элементов A(ia) и B(ib).

  • Если 'rows' , то строки C являются сортированной комбинацией строк A(ia,:) и B(ib,:).

  • Если A и B таблицы или расписания, то C - сортированная комбинация строк A(ia,:) и B(ib,:).

пример

[C,ia,ib] = union(A,B,'legacy') и [C,ia,ib] = union(A,B,'rows','legacy') сохранить поведение union функция из R2012b и предыдущих версий.

'legacy' не поддерживает категориальные массивы, массивы datetime, массивы duration, таблицы или расписания.

Примеры

свернуть все

Определите два вектора с общим значением.

A = [5 7 1]; 
B = [3 1 1];

Найти объединение векторов A и B.

C = union(A,B)
C = 1×4

     1     3     5     7

Определите две таблицы с общими строками.

A = table([1:5]',['A';'B';'C';'D';'E'],logical([0;1;0;1;0]))
A=5×3 table
    Var1    Var2    Var3 
    ____    ____    _____

     1       A      false
     2       B      true 
     3       C      false
     4       D      true 
     5       E      false

B = table([1:2:10]',['A';'C';'E';'G';'I'],logical(zeros(5,1)))
B=5×3 table
    Var1    Var2    Var3 
    ____    ____    _____

     1       A      false
     3       C      false
     5       E      false
     7       G      false
     9       I      false

Поиск объединения таблиц A и B.

C = union(A,B)
C=7×3 table
    Var1    Var2    Var3 
    ____    ____    _____

     1       A      false
     2       B      true 
     3       C      false
     4       D      true 
     5       E      false
     7       G      false
     9       I      false

Определите два вектора с общим значением.

A = [5 7 1]; 
B = [3 1 1];

Найти объединение векторов A и B, а также векторы индекса, ia и ib.

[C,ia,ib] = union(A,B)
C = 1×4

     1     3     5     7

ia = 3×1

     3
     1
     2

ib = 1

Значения в C являются комбинированными значениями A(ia) и B(ib).

Определение таблицы, Aпола, возраста и роста для трех человек.

A = table(['M';'M';'F'],[27;52;31],[74;68;64],...
'VariableNames',{'Gender' 'Age' 'Height'},...
'RowNames',{'Ted' 'Fred' 'Betty'})
A=3×3 table
             Gender    Age    Height
             ______    ___    ______

    Ted        M       27       74  
    Fred       M       52       68  
    Betty      F       31       64  

Определение таблицы, B с теми же переменными, что и A.

B = table(['F';'M'],[64;68],[31;47],...
'VariableNames',{'Gender' 'Height' 'Age'},...
'RowNames',{'Meg' 'Joe'})
B=2×3 table
           Gender    Height    Age
           ______    ______    ___

    Meg      F         64      31 
    Joe      M         68      47 

Поиск объединения таблиц A и B, а также векторы индекса, ia и ib.

[C,ia,ib] = union(A,B)
C=4×3 table
             Gender    Age    Height
             ______    ___    ______

    Betty      F       31       64  
    Ted        M       27       74  
    Joe        M       47       68  
    Fred       M       52       68  

ia = 3×1

     3
     1
     2

ib = 2

Данные для Meg и Betty одинаковые. union возвращает только индекс из A, что соответствует Betty.

Определите две матрицы с общей строкой.

A = [2 2 2; 0 0 1];
B = [1 2 3; 2 2 2; 2 2 2];

Найти объединенные строки A и B, без повторения, а также векторы индекса ia и ib.

[C,ia,ib] = union(A,B,'rows')
C = 3×3

     0     0     1
     1     2     3
     2     2     2

ia = 2×1

     2
     1

ib = 1

Строки C являются объединенными строками A(ia,:) и B(ib,:).

Используйте setOrder для указания порядка значений в C.

Определить 'stable' если вы хотите, чтобы значения в C иметь тот же порядок, что и в A и B.

A = [5 7 1]; 
B = [3 1 1];
[C,ia,ib] = union(A,B,'stable')
C = 1×4

     5     7     1     3

ia = 3×1

     1
     2
     3

ib = 1

Кроме того, можно указать 'sorted' заказ.

A = [5 7 1]; 
B = [3 1 1];
[C,ia,ib] = union(A,B,'sorted')
C = 1×4

     1     3     5     7

ia = 3×1

     3
     1
     2

ib = 1

Определение двух векторов, содержащих NaN.

A = [5 NaN 1]; 
B = [4 NaN NaN];

Найти объединение векторов A и B.

C = union(A,B)
C = 1×6

     1     4     5   NaN   NaN   NaN

union удовольствия NaN значения как отдельные.

Создание массива ячеек из символьных векторов, A.

A = {'dog','cat','fish','horse'};

Создание массива ячеек из символьных векторов, B, где некоторые из векторов имеют завершающее белое пространство.

B = {'dog ','cat','fish ','horse'};

Объединение элементов A и B.

[C,ia,ib] = union(A,B)
C = 1x6 cell
    {'cat'}    {'dog'}    {'dog '}    {'fish'}    {'fish '}    {'horse'}

ia = 4×1

     2
     1
     3
     4

ib = 2×1

     1
     3

union обрабатывает конечный пробел в массивах ячеек векторов символов как отдельные символы.

Создание символьного массива векторов столбцов.

A = ['A';'B';'C']
A = 3x1 char array
    'A'
    'B'
    'C'

class(A)
ans = 
'char'

Создание вектора строки, содержащего элементы числового типа double.

B = [68 69 70]
B = 1×3

    68    69    70

class(B)
ans = 
'double'

union из A и B возвращает символьный массив векторов столбцов.

C = union(A,B)
C = 6x1 char array
    'A'
    'B'
    'C'
    'D'
    'E'
    'F'

class(C)
ans = 
'char'

Создание вектора символов, содержащего буквы a , b, и c.

A = ['a';'b';'c'];
class(A)
ans = 
'char'

Создание массива ячеек из символьных векторов, содержащих буквы c, d, и e.

B = {'c','d','e'};
class(B)
ans = 
'cell'

Объединение элементов A и B.

C = union(A,B)
C = 5x1 cell
    {'a'}
    {'b'}
    {'c'}
    {'d'}
    {'e'}

Результат, C, является массивом ячеек символьных векторов.

class(C)
ans = 
'cell'

Используйте 'legacy' флаг для сохранения поведения union из R2012b и предыдущих версий в коде.

Найти объединение A и B с текущим поведением.

A = [5 7 1]; 
B = [3 1 1];
[C1,ia1,ib1] = union(A,B)
C1 = 1×4

     1     3     5     7

ia1 = 3×1

     3
     1
     2

ib1 = 1

Найти объединение A и Bи сохраните унаследованное поведение.

A = [5 7 1]; 
B = [3 1 1];
[C2,ia2,ib2] = union(A,B,'legacy')
C2 = 1×4

     1     3     5     7

ia2 = 1×2

     1     2

ib2 = 1×2

     3     1

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

свернуть все

Входные массивы, указанные как числовые массивы, логические массивы, символьные массивы, строковые массивы, категориальные массивы, массивы datetime, массивы duration, массивы ячеек символьных векторов, таблиц или расписаний. При указании 'rows' опция, A и B должно иметь одинаковое количество столбцов.

A и B должен быть одного класса со следующими исключениями:

  • logical, char, и все числовые классы могут комбинироваться с double массивы.

  • Массивы ячеек символьных векторов могут комбинироваться с массивами символов или строковыми массивами.

  • Категориальные массивы могут сочетаться с символьными массивами, массивами ячеек символьных векторов или строковыми массивами.

  • Массивы datetime могут объединяться с массивами ячеек векторов символов даты или одиночных векторов символов даты.

Существуют дополнительные требования к A и B на основе типа данных:

  • Если A и B оба порядковых категориальных массива, они должны иметь одинаковые наборы категорий, включая их порядок. Если ни то ни другое A ни B порядковые номера, у них нет необходимости иметь одинаковые наборы категорий, и сравнение выполняется с использованием имен категорий. В этом случае категории C являются отсортированным объединением категорий из A и B.

  • Если A и B таблицы или расписания, они должны иметь одинаковые имена переменных (за исключением порядка). Для таблиц имена строк игнорируются, так что две строки, имеющие одинаковые значения, но разные имена, считаются равными. Для расписаний учитывается время строк, так что две строки, имеющие одинаковые значения, но разные времена, не считаются равными.

  • Если A и B являются массивами datetime, они должны согласовываться друг с другом в определении часового пояса.

A и B также могут быть объектами со следующими методами классов:

  • sort (или sortrows для 'rows' опция)

  • ne

Методы класса объектов должны согласовываться друг с другом. Эти объекты включают гетерогенные массивы, полученные из одного корневого класса. Например, A и B может представлять собой массивы дескрипторов графических объектов.

Флаг заказа, указанный как 'sorted' или 'stable', указывает порядок значений (или строк) в C.

ФлагОписание
'sorted'

Значения (или строки) в C возврат в отсортированном порядке, как возвращено sort.

Пример

C = union([5 5 3],[1 2 5],'sorted')
C =

     1     2     3     5

'stable'

Значения (или строки) в C возврат в том же порядке, что и в A, то B.

Пример

C = union([5 5 3],[1 2 5],'stable')
C =

     5     3     1     2

Типы данных: char | string

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

свернуть все

Комбинированные данные A и B, возвращается в виде вектора, матрицы, таблицы или расписания. Если входные данные A и B таблицы или расписания, затем порядок переменных в C совпадает с порядком переменных в A.

Ниже описывается форма C когда входы являются векторами или матрицами и когда 'legacy' флаг не указан:

  • Если 'rows' флаг не указан, то C является вектором столбца, если только оба A и B - векторы строк, в этом случае C - вектор строки. Например, union([],[1 2]) возвращает вектор столбца.

  • Если 'rows' флаг указан, затем C является матрицей, содержащей объединенные строки A и B.

Класс входов A и B определяет класс C:

  • Если класс A и B те же самые, то C является тем же классом.

  • Если объединить char или неразрушающий числовой класс с double, то C является тем же классом, что и неразъемный ввод.

  • Если объединить logical класс с double, то C является double.

  • При объединении массива ячеек символьных векторов с char, то C является массивом ячеек символьных векторов.

  • Если объединить категориальный массив с символьным вектором, массивом ячеек символьных векторов или строкой, то C является категориальным массивом.

  • Если объединить массив datetime с массивом ячеек векторов символов даты или одиночного вектора символов даты, то C является массивом datetime.

  • Если объединить строковый массив с символьным вектором или массивом ячеек символьных векторов, то C является строковым массивом.

Индекс в A, возвращается в виде вектора столбца, когда 'legacy' флаг не указан. ia указывает значения (или строки) в A которые способствуют союзу. Если значение (или строка) появляется несколько раз в A, то ia содержит индекс первого вхождения значения (или строки). Если значение появляется в обоих A и B, то ia содержит индекс для первого вхождения в A.

Индекс в B, возвращается в виде вектора столбца, когда 'legacy' флаг не указан. ib указывает значения (или строки) в B которые способствуют союзу. При наличии повторяющегося значения (или строки), появляющегося исключительно в B, то ib содержит индекс к первому вхождению значения. Если значение (или строка) появляется в обоих A и B, то ib не содержит индекс к значению (или строке).

Совет

  • Чтобы найти объединение относительно подмножества переменных из таблицы или расписания, можно использовать подстрочный индекс столбца. Например, можно использовать union(A(:,vars),B(:,vars)), где vars является положительным целым числом, вектором положительных целых чисел, именем переменной, массивом ячеек с именами переменных или логическим вектором. Кроме того, можно использовать vartype для создания подстрочного индекса, выбирающего переменные указанного типа.

Расширенные возможности

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