signalMask

Изменяйте и преобразуйте маски сигнала и извлекайте интересующие вас области сигнала

Описание

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

Использование signalMask, можно:

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

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

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

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

Создание

Описание

пример

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

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Получите маску таблицы ROI

Примеры

свернуть все

Загрузите речевой сигнал, дискретизированный Fs=7418Hz. Файл содержит запись женского голоса, говорящего слово «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