signalMask

Измените и преобразуйте маски сигнала и извлеките необходимые области сигнала

Описание

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

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

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

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

  • Извлеките необходимые области сигнала из сигнального вектора.

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

Создание

Описание

пример

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

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

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

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

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

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

    • Первая переменная является матрицей 2D столбца. Каждая строка матрицы содержит начало и пределы конца необходимой области сигнала.

      • Если 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 с тремя выборками область и 2D демонстрационный female область.

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

Пример: signalMask([0 1 1 1 0 0 0 0;0 0 0 0 0 1 1 0]','Categories',["male" "female"]) задает маску сигнала с male с тремя выборками область и 2D демонстрационный 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 th категория соответствует i th столбец src. Если src имеет столбцы P, и это свойство не задано, signalMask устанавливает названия категории на ["1" "2" ... "P"].

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

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

Типы данных: логический

Индексы выбранных категорий в виде вектора из целочисленных значений индекса, указывающих на элементы категории в 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Получите маску таблицы ROI

Примеры

свернуть все

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

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

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

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

Постройте сигнал и отобразите changepoints.

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