zerocrossrate

Уровень пересечения нулем

    Описание

    пример

    rate = zerocrossrate(x) возвращает уровень пересечения нулем x. Если x матрица, затем функция анализирует каждый столбец как отдельный канал и возвращает уровень пересечения нулем как вектор-строку, где каждое значение соответствует каналу.

    пример

    rate = zerocrossrate(TT) возвращает уровень пересечения нулем данных, хранимых в MATLAB® расписание TT. Если TT содержит несколько каналов, затем функция анализирует каждый канал независимо.

    пример

    rate = zerocrossrate(___,Name,Value) задает дополнительные аргументы name-value. Используйте этот синтаксис с любым из входных параметров в предыдущих синтаксисах.

    пример

    [rate,count] = zerocrossrate(___) также возвращает общее количество пересечений в count.

    пример

    [rate,count,indices] = zerocrossrate(___) также возвращает логические индексы в местоположениях сигнала, где пересечение происходит.

    zerocrossrate(___) без выходных аргументов строит rate вдоль оси Y и соответствующего номера окна вдоль оси X. Если длина окна равна полной длине сигнала, то графики функций длина окна вдоль оси X и пересекающегося уровня посреди окна.

    Примеры

    свернуть все

    Рассмотрите вектор из единиц с чередованием знаков. Отобразите данные на графике.

    x = [1 -1 1 -1 1 -1 1 -1 1 -1];
    plot(x)

    Figure contains an axes object. The axes object contains an object of type line.

    Вычислите уровень пересечения нулем x.

    r = zerocrossrate(x)
    r = 0.9500
    

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

    [~,~,indices] = zerocrossrate(x);
    plot(x)
    hold on
    plot(x(indices),'*')
    hold off

    Figure contains an axes object. The axes object contains 2 objects of type line.

    Вычислите уровень пересечения нулем x использование метода сравнения. Уровень отличается от значения, вычисленного с помощью метода различия.

    rC = zerocrossrate(x,Method="comparison")
    rC = 0.9000
    

    Вычислите уровень пересечения нулем x снова использование метода различия и задает нуль как положительный. Уровень равен значению, вычисленному с помощью метода сравнения.

    rZ = zerocrossrate(x,ZeroPositive=1)
    rZ = 0.9000
    

    Теперь задайте начальное состояние x как 1. Уровень равен предыдущему результату.

    rI = zerocrossrate(x,InitialState=1)
    rI = 0.9000
    

    Загрузите набор температурных показаний в Цельсия, бравшемся каждый час в Аэропорту Логана в Бостоне в течение целого месяца января 2011. Создайте timetable и используйте retime агрегировать данные в среднесуточные значения.

    load bostemp
    
    t = hours(1:24*31)';
    TT = timetable(t,tempC);
    rTT = retime(TT,'daily','mean');

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

    avg = mean(TT.tempC)
    avg = -1.3007
    
    [~,count] = zerocrossrate(rTT,Level=avg)
    count = 9
    
    plot(hours(rTT.t/24),rTT.tempC)
    yline(avg)
    xlabel('Time elapsed since January 1, 2011 (days)')
    ylabel('Average daily temperature (\circC)')
    axis tight

    Figure contains an axes object. The axes object contains 2 objects of type line, constantline.

    Речь может быть охарактеризована как озвучиваемый или неречевая. Речевая речь, такая как гласные звуки, происходит, когда голосовые связки вибрируют. В неречевой речи, такой как большинство совместимых звуков, не вибрируют голосовые связки. Можно использовать нулевые пересечения, чтобы классифицировать речевые и неречевые области на звуковой сигнал.

    Загрузите звуковой сигнал в рабочую область MATLAB®. Речь говорит, "Дуб силен, и также дает оттенок".

    [y,fs] = audioread("oak.m4a");
    
    % To hear, type soundsc(y,fs)

    Сигнал производится на уровне 44,1 кГц. Вычислите уровень пересечения нулем для 10 MS Windows с помощью метода сравнения.

    win = fs*0.01;
    rate = zerocrossrate(y,WindowLength=win,Method="comparison");

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

    plot(rate)

    Figure contains an axes object. The axes object contains an object of type line.

    Используйте порог 0.1 дифференцироваться между речевыми и неречевыми сегментами. Создайте signalMask объект, который имеет две категории ("Неречевой" и "Речевой") и строит видимые области (ROIs). Сравните области речевой и неречевой речи в местоположении каждого произносимого слова.

    Речь IBM® Watson в текстовом программном обеспечении API и Audio Toolbox™ может использоваться, чтобы извлечь слова из звукового файла. Загрузите Transcription.mat в рабочую область. Помеченный набор сигнала содержит звуковой сигнал, пределы ROI, и помечает для каждого произносимого слова. Для получения дополнительной информации смотрите, Маркируют Spoken Words in Audio Signals Using External API. Отобразите произносимые слова на графике.

    h = 0.1;
    idu = find(rate > h);
    idu(1:2) = [];
    vi = [(idu-1) idu]*win;
    
    m = sigroi2binmask(vi,length(y));
    mask = signalMask([m ~m],Categories=["Unvoiced" "Voiced"],SampleRate=fs);
    plotsigroi(mask,y)
    
    load Transcription
    
    ln = getLabelNames(transcribedAudio);
    v = getLabelValues(transcribedAudio,1,ln);
    v.Value = categorical(v.Value,v.Value);
    
    RL = v.ROILimits;
    VL = v.Value;
    
    hold on
    text(mean(RL,2),-0.7*ones(size(VL)),VL,HorizontalAlignment="center", ...
        FontSize=11,FontWeight="bold")
    hold off

    Figure contains an axes object. The axes object contains 10 objects of type line, text.

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

    свернуть все

    Данные в виде вектора или матрицы с действительным знаком. Если x матрица, функция возвращает уровень пересечения нулем как вектор-строку, где каждое значение соответствует столбцу данных.

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

    Введите расписание в виде timetable. TT должен содержать однородно произведенный сингл - или данные с двойной точностью. Свойство RowTimes должно содержать duration или datetime вектор с увеличением и конечными значениями. Если TT расписание с одной переменной, содержащей матрицу или расписание с несколькими переменными каждый содержащий вектор, затем функция анализирует каждый канал независимо.

    Аргументы name-value

    Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

    Пример: zerocrossrate(x,Method="comparison",Level=7,transitionEdge="rising") использует метод сравнения вычислить уровень в который x положительно переходы через 7.

    Предыдущие состояния xВ виде вектора, число элементов которого равно количеству входных каналов.

    Пример: zerocrossrate(x,InitialState=[1 0 –1 3]) возвращает пересекающиеся уровни входного сигнала с четырьмя каналами x.

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

    Метод для вычисления уровня пересечения нулем в виде "difference" или "comparison". Если вы не задаете 'Method', функция использует метод различия, чтобы вычислить пересекающийся уровень.

    • comparison — Функция отмечает indices как верный, где пересечение полностью завершается.

    • difference — Функция отмечает indices как верный, где abs (знак (x i) - знак (x i–1))> 0.

    Пример: zerocrossrate(x,Method="comparison") вычисляет пересекающийся уровень x использование метода сравнения.

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

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

    Пример: zerocrossrate(x,WindowLength=20) возвращает пересекающиеся уровни для окон с 20 выборками в x.

    Пример: zerocrossrate(x,WindowLength=fs*0.05) возвращает пересекающиеся уровни для 50 MS Windows в x учитывая частоту дискретизации fs.

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

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

    Пример: zerocrossrate(x,OverlapLength=0) возвращает пересекающиеся уровни сегментов без перекрытия.

    Пример: zerocrossrate(x,WindowLength=20,OverlapLength=5) возвращает пересекающиеся уровни перекрывающихся сегментов с пятью выборками перекрытия.

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

    Уровень сигнала, для которого пересекающийся уровень вычисляется в виде действительного скаляра. Функция вычитает 'Level' значение от сигнала и затем находит нулевые пересечения. Если вы не задаете 'Level', функция использует значение по умолчанию 0 и возвращает уровень пересечения нулем.

    Пример: zerocrossrate(x,Level=1) возвращает уровень в который входной сигнал x кресты 1.

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

    Пороговое значение выше и ниже 'Level' значение, по которому пересекающийся уровень вычисляется в виде действительного скаляра. Функция устанавливает все значения входа в области значений [–threshold'Порог' ] к 0 и затем находит нулевые пересечения.

    Пример: zerocrossrate(x,Threshold=0.1) возвращает пересекающийся уровень с допуском –0.1 к 0,1.

    Примечание

    Когда вы задаете оба 'Level' и 'Threshold', функция сначала вычитает значение уровня из входа и затем устанавливает на 0 получившиеся входные значения, которые находятся в области значений [–threshold'Порог' ].

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

    Переходы, чтобы включать при подсчете нулевых пересечений в виде "falling", "rising", или "both". Если вы задаете "falling", функция считает только отрицательно идущие переходы. Если вы задаете "rising", функция считает только положительно идущие переходы.

    Пример: zerocrossrate(x,TransitionEdge="rising") возвращает пересекающийся уровень x только для положительно идущих переходов.

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

    Подпишите соглашение в виде логического скаляра. Если вы задаете 'ZeroPositive' как верная, функция рассматривает 0 быть положительным. Если вы задаете 'ZeroPositive' как ложь, функция рассматривает 0, –1, и +1 иметь отличные знаки в соответствии с соглашением sign функция.

    Пример: zerocrossrate(x,ZeroPositive=1) возвращает пересекающийся уровень входного сигнала x и рассматривает нуль как положительный.

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

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

    свернуть все

    Уровень пересечения нулем, возвращенный как вектор-строка или матрица. Когда 'WindowLength' равно длине сигнала, rate вектор-строка, число элементов которого равно количеству каналов в x или TT. Когда 'WindowLength' меньше, чем длина сигнала, функция возвращает rate когда матрица, где i-ая строка содержит пересекающийся уровень для i-ого окна и j-ого столбца, соответствует j-ому входному каналу.

    Количество пересечений, возвращенных как N-by-M матрица, где N является количеством окон и M, является количеством входных каналов. I-ая строка соответствует пересекающемуся счету для i-ого окна, и j-ый столбец соответствует пересекающемуся счету для j-ого канала.

    Логические индексы в местоположениях сигнала, где пересечения происходят, возвратились как N-by-'WindowLength'- M массив, где N является количеством окон и M, количество входных каналов.

    Примечание

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

    Расширенные возможности

    Смотрите также

    Функции

    Введенный в R2021b