catmask

Получите категориальную маску последовательности

Описание

seq = catmask(msk) возвращает категориальную маску последовательности, seq, на основе источника и свойств в msk.

пример

seq = catmask(msk,len) задает длину seq.

пример

seq = catmask(___,'OverlapAction',action) задает, как signalMask имеет дело с областями с различными значениями категорий, которые перекрываются.

пример

seq = catmask(___,'OverlapAction','prioritizeByList','PriorityList',idxlist) задает порядок, в котором msk приоритеты категорий определяются при перекрытии областей с различными значениями категорий.

[seq,numroi,cats] = catmask(___) также возвращается numroiвектор, содержащий число регионов, найденных для каждой из категорий, перечисленных в cats.

Примеры

свернуть все

Рассмотрим интересующую видимая область (ROI) маску таблицы с четырьмя необходимыми областями, охватывающими выборки, пронумерованные от 2 до 30. Задайте метки категорий следующим A и B. Используйте маску для создания signalMask объект.

roiTbl = table([2 5; 7 10; 15 25; 28 30],["A","B","B","A"]');

m = signalMask(roiTbl);

Извлеките категориальную маску из объекта, задав длину последовательности 35. Выборки после 30-го возвращаются следующим <undefined>.

catSeq = catmask(m,35);

catSeq(max(roiTbl.Var1(end)):end)
ans = 6x1 categorical
     A 
     <undefined> 
     <undefined> 
     <undefined> 
     <undefined> 
     <undefined> 

Еще раз извлеките категориальную маску, но теперь задайте длину последовательности 8. Выборки после восьмого удаляют.

catSeq = catmask(m,8)
catSeq = 8x1 categorical
     <undefined> 
     A 
     A 
     A 
     A 
     <undefined> 
     B 
     B 

Рассмотрим маску 18 на 2 двоичных последовательностей. Используйте маску для создания signalMask объект. Пометьте категории A и B, в таком порядке.

binSeqs = logical([ ...
    0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 1 0 1;
    1 1 0 0 0 1 1 1 1 0 1 1 0 1 0 1 1 0]');

m = signalMask(binSeqs);
m.Categories = ["A" "B"];

Извлечение категориальной маски из объекта. Чтобы обработать перекрытие между категориями, присвойте выборки, общие для двух категорий, первой в списке, A.

seqA = catmask(m,'OverlapAction','PrioritizeByList');
seqA(binSeqs(:,1) & binSeqs(:,2))
ans = 4x1 categorical
     A 
     A 
     A 
     A 

Еще раз извлеките категориальную маску, но теперь обработайте перекрытие между категориями, присвоив общие выборки B с явным списком приоритетов.

seqB = catmask(m,'OverlapAction','PrioritizeByList', ...
    'PriorityList',[2 1]);
seqB(binSeqs(:,1) & binSeqs(:,2))
ans = 4x1 categorical
     B 
     B 
     B 
     B 

Обработайте перекрытие путем удаления областей с менее чем тремя выборками. Отобразите измененную маску двоичной последовательности, которая приводит к этому.

m.MinLength = 3;
binmask(m)'
ans = 2x18 logical array

   0   0   1   1   1   0   0   0   0   0   0   0   1   1   1   1   0   0
   0   0   0   0   0   1   1   1   1   0   0   0   0   0   0   0   0   0

Ранее общие выборки присваиваются категориям областей.

seqM = catmask(m);
seqM(binSeqs(:,1) & binSeqs(:,2))
ans = 4x1 categorical
     B 
     B 
     A 
     A 

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

свернуть все

Маска сигнала, заданная как signalMask объект.

Пример: signalMask(table([2 4;6 7],["male" "female"]')) задает маску сигнала с тремя образцами male область и двухвыборочный female область.

Пример: signalMask(categorical(["" "male" "male" "male" "" "female" "female" ""]',["male" "female"])) задает маску сигнала с тремя образцами male область и двухвыборочный female область.

Пример: signalMask([0 1 1 1 0 0 0 0;0 0 0 0 0 1 1 0]','Categories',["male" "female"]) задает маску сигнала с тремя образцами male область и двухвыборочный female область.

Выход последовательности, заданная как целочисленный скаляр. Области за пределами len игнорируются. Категориальная последовательность выхода seq заполнен <missing> значения в этих случаях:

  • SourceType является 'categoricalSequence' или 'binarySequences' и len больше, чем длина исходной последовательности.

  • SourceType является 'roiTable' и len больше максимального индекса области.

Когда RightExtension ненулевое и SourceType является 'categoricalSequence' или 'binarySequences', catmask расширяет области, возможно, за пределы длины последовательности, применяет все другие модификации, основанные на LeftExtension, LeftShortening, RightShortening, MergeDistance, и MinLength, а затем обрезает полученную последовательность до исходной длины последовательности или до заданной длины len.

В качестве последнего шага catmask управляет перекрытием на основе набора значений для 'OverlapAction', если этот аргумент задан.

Дополнительные сведения о длине выхода см. в разделе Изменение пределов областей.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Способ борьбы с перекрытием, заданный как 'error' или 'prioritizeByList'.

  • 'error'catmask выдает ошибку, если есть перекрытия между областями с различными категориями.

  • 'prioritizeByList'catmask использует список приоритетов, указанный в idxlist для решения проблемы перекрытия между областями с различными категориями. Первая категория в списке имеет наивысший приоритет, и все ее выборки сохраняются в случаях перекрытия. Следующая вторая категория в списке, и ее выборки хранятся в случаях перекрытия, ранее не разрешенных.

    Если idxlist не задан, catmask устанавливает приоритеты категорий в том же порядке, в котором они появляются в Categories свойство msk.

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

Приоритеты категорий в случаях перекрытия, заданные как вектор целых чисел. Индексы в idxlist соответствуют записям в Categories от msk и упорядочиваются по приоритету, с которым они должны рассматриваться, когда области с различными значениями категорий перекрываются. idxlist должны содержать индексы для всех элементов в Categories. Первая категория в списке имеет наивысший приоритет. Это означает, что при перекрытии областей с различными категориями все значения наивысшего приоритета сохраняются. Затем значения со следующим наивысшим приоритетом сохраняются в остальных неперекрывающихся выборках и так далее.

Если idxlist не задан, catmask устанавливает приоритеты категорий в том же порядке, в котором они появляются в Categories свойство msk.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

свернуть все

Категориальная маска последовательности, возвращенная как категориальный массив. Выборки в seq которые не относятся к необходимой области и не имеют значения метки, устанавливаются отсутствующие категориальные значения, отображаемые как <undefined>. Для получения дополнительной информации см. categorical.

  • Если SourceType является 'categoricalSequence' или 'binarySequences' и len не задан, тогда seqs имеет ту же длину, что и исходная маска.

  • Если SourceType является 'roiTable', затем len необходимо указать.

Для получения дополнительной информации о том, как свойства msk влияют на длину seqs, см. «Изменение предела по областям».

Число регионов, найденных для каждой из категорий в cats, возвращается как вектор целых чисел.

Список категорий, возвращенный как вектор строк.

Введенный в R2020b