exponenta event banner

signalMask

Модификация и преобразование сигнальных масок и извлечение представляющих интерес сигнальных областей

Описание

Использовать signalMask для хранения местоположений областей, представляющих интерес для сигнала, вместе со значениями метки или категории для каждой области.

Используя signalMask, вы можете:

  • Представление маски сигнала в виде таблицы, категориальной последовательности или матрицы двоичных последовательностей.

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

  • Извлекают представляющие интерес сигнальные области из вектора сигнала.

  • Постройте график сигнала с цветокодированными областями, представляющими интерес.

Создание

Описание

пример

msk = signalMask(src) создает маску сигнала для источника входных данных src. Маска определяет местоположения областей, представляющих интерес для сигнала, вместе со значениями метки или категории для каждой области.

msk = signalMask(src,Name,Value) Задает свойства, используя пары имя-значение. Можно указать несколько пар имя-значение. Заключите каждое имя свойства в кавычки.

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

развернуть все

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

  • Когда src является таблицей ROI, она должна содержать две переменные:

    • Первая переменная является матрицей из двух столбцов. Каждая строка матрицы содержит начальный и конечный пределы интересующей сигнальной области.

      • Если SampleRate указывается, signalMask интерпретирует пределы как значения времени, выраженные в секундах.

      • Если SampleRate не указан, signalMask интерпретирует пределы как выборочные индексы. Если элементы матрицы не являются целыми числами, signalMask округляет их значения до ближайшего целого числа, большего нуля.

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

  • Когда src является категориальной векторной последовательностью, группы смежных элементов категории одинаковых значений указывают интересующую область сигнала, помеченную этой конкретной категорией. Элементы, которые не относятся к категории (и, следовательно, не имеют значения метки), должны быть указаны как отсутствующие категориальные, отображаемые как <undefined>. Дополнительные сведения см. в разделе categorical.

  • Когда src является P-столбчатой матрицей двоичных последовательностей, каждый столбец интерпретируется как сигнальная маска с true элементы, маркирующие области интересов для каждой из P различных категорий, помеченные целыми числами от 1 до P. Если вы предпочитаете, вы можете указать список P имен категорий с помощью Categories собственность.

Пример: 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 регион.

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

Свойства

развернуть все

Это свойство доступно только для чтения.

Тип входного источника, возвращаемого как "roiTable", "categoricalSequence", или "binarySequences". Это свойство выводится из src и не может быть установлен.

Пример: signalMask(table([2 4;6 7],["male" "female"]')) имеет SourceType возвращено как "roiTable".

Пример: signalMask(categorical(["" "male" "male" "male" "" "female" "female" ""]',["male" "female"])) имеет SourceType возвращено как "categoricalSequence".

Пример: signalMask([0 1 1 1 0 0 0 0;0 0 0 0 0 1 1 0]','Categories',["male" "female"]) имеет SourceType возвращено как "binarySequences".

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

Это свойство доступно только для чтения.

Значение частоты выборки, указанное как положительный числовой скаляр. Если src указывается как таблица ROI, signalMask предполагает, что таблица содержит пределы области, выраженные в секундах. Если это свойство опущено, объект обрабатывает все пределы области как индексы выборки.

Типы данных: single | double

Имена категорий, указанные как строковый вектор или массив ячеек символьных векторов. Это свойство может быть установлено только в том случае, если src - матрица двоичных последовательностей. Для всех остальных входных данных src типы, signalMask выводит имена категорий непосредственно из src и это свойство доступно только для чтения. Вектор имеет количество элементов, равное количеству столбцов src, и его i-я категория соответствует i-му столбцу src. Если src имеет столбцы P, и это свойство не указано, signalMask устанавливает имена категорий как ["1" "2" ... "P"].

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

Параметр для выбора подмножества категорий, заданного как логическое значение. Если для этого свойства установлено значение false после создания маски, затем все категории в Categories выбраны. SpecifySelectedCategories может использоваться только для существующего объекта и не может быть указана как пара имя-значение.

Типы данных: logical

Индексы выбранных категорий, указанные как вектор целочисленных значений индексов, указывающих на элементы категории в Categories. Категории, не перечисленные в этом свойстве, отфильтровываются из ввода маски при вызове функций объекта signalMask. Индексы категорий должны быть отсортированы по возрастанию. Это свойство применяется только в том случае, если SpecifySelectedCategories является true. SelectedCategories может использоваться только для существующего объекта и не может быть указана как пара имя-значение.

Пример: Набор категорий ["woman" "girl" "man" "boy"], указание SelectedCategories как [1 2 4] выбирает ["woman" "girl" "boy"] и отфильтровывает остальное.

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

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

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

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

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

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

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

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

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

Расстояние между объединяемыми областями, указанное как положительное целое число. Если указано это свойство, signalMask объединяет области одной категории, разделенные указанным количеством образцов или менее. Дополнительные сведения см. в разделе Изменение границ региона.

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

Минимальная длина сохраняемых областей, заданная как положительное целое число. Если указано это свойство, signalMask удаляет области короче указанного количества выборок. Дополнительные сведения см. в разделе Изменение границ региона.

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

Функции объекта

binmaskПолучение матрицы маски двоичных последовательностей
catmaskПолучить маску категориальной последовательности
extractsigroiИзвлекать интересующие области на основе маски сигнала
plotsigroiПечать областей сигнала на основе маски сигнала
roimaskПолучение маски таблицы окупаемости инвестиций

Примеры

свернуть все

Загрузите речевой сигнал, дискретизированный при Fs = 7418 Гц. Файл содержит запись женского голоса, говорящего слово «MATLAB ®».

load mtlb
t = (0:length(mtlb)-1)/Fs;

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

q = findchangepts(mtlb,"Statistic","rms","MaxNumChanges",5);

Постройте график сигнала и просмотрите точки изменения.

findchangepts(mtlb,"Statistic","rms","MaxNumChanges",5)
axis tight

Определите области интересов, которые соответствуют каждой букве в слове.

roitable = t([[1;q] [q;length(mtlb)]]);

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

x = ["M" "A" "T" "L" "A" "B"]';
y = unique(x,"stable");
c = categorical(x,y);

Создайте маску сигнала для интересующих областей и соответствующих меток. Сократить каждую область на одну выборку от права, чтобы избежать смежности. Отображение маски таблицы области интересов.

src = table(roitable,c);
msk = signalMask(src,"SampleRate",Fs,"RightShortening",1);
roimask(msk)
ans=6×2 table
         roitable          c
    ___________________    _

          0    0.017525    M
    0.01766     0.10461    A
    0.10475     0.22162    T
    0.22176     0.33675    L
    0.33688     0.46535    A
    0.46549     0.53909    B

Ввести пробелы в сигнал, где буква "A" вокализирован.

m = mtlb;

seq = catmask(msk,length(mtlb));
m(seq == "A") = NaN;

Реконструируйте сигнал с помощью авторегрессионного процесса. Извлекают каждую интересующую область из восстановленного сигнала.

p = fillgaps(m);

w = extractsigroi(msk,p);

Чтобы воспроизвести звук с паузой после каждой области, раскомментируйте эти строки:

% for k = 1:length(w)
%     sound(cell2mat(w{k}),Fs)
%     pause(0.5)
% end

Постройте график реконструированного сигнала и визуализируйте интересующие области.

figure
plotsigroi(msk,p)

Подробнее

развернуть все

Представлен в R2020b