exponenta event banner

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