Уровень пересечения нулем
задает дополнительные аргументы name-value. Используйте этот синтаксис с любым из входных параметров в предыдущих синтаксисах.rate
= zerocrossrate(___,Name,Value
)
zerocrossrate(___)
без выходных аргументов строит rate
вдоль оси Y и соответствующего номера окна вдоль оси X. Если длина окна равна полной длине сигнала, то графики функций длина окна вдоль оси X и пересекающегося уровня посреди окна.
Рассмотрите вектор из единиц с чередованием знаков. Отобразите данные на графике.
x = [1 -1 1 -1 1 -1 1 -1 1 -1]; plot(x)
Вычислите уровень пересечения нулем x
.
r = zerocrossrate(x)
r = 0.9500
Используйте третий выходной аргумент, чтобы найти местоположения, где пересечения происходят. Постройте x
и местоположения пересечения нулем. Функция возвращает индекс на следующей выборке после пересечения, не обязательно точного местоположения пересечения. Первая выборка отмечена как точка пересечения, потому что функция рассматривает начальное состояние x
быть нулем по умолчанию.
[~,~,indices] = zerocrossrate(x); plot(x) hold on plot(x(indices),'*') hold off
Вычислите уровень пересечения нулем 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
Речь может быть охарактеризована как озвучиваемый или неречевая. Речевая речь, такая как гласные звуки, происходит, когда голосовые связки вибрируют. В неречевой речи, такой как большинство совместимых звуков, не вибрируют голосовые связки. Можно использовать нулевые пересечения, чтобы классифицировать речевые и неречевые области на звуковой сигнал.
Загрузите звуковой сигнал в рабочую область 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)
Используйте порог 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
x
данныеДанные в виде вектора или матрицы с действительным знаком. Если x
матрица, функция возвращает уровень пересечения нулем как вектор-строку, где каждое значение соответствует столбцу данных.
Типы данных: single
| double
TT
— Введите расписаниеВведите расписание в виде timetable
. TT
должен содержать однородно произведенный сингл - или данные с двойной точностью. Свойство RowTimes должно содержать duration
или datetime
вектор с увеличением и конечными значениями. Если TT
расписание с одной переменной, содержащей матрицу или расписание с несколькими переменными каждый содержащий вектор, затем функция анализирует каждый канал независимо.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
zerocrossrate(x,Method="comparison",Level=7,transitionEdge="rising")
использует метод сравнения вычислить уровень в который x
положительно переходы через 7
.InitialState
— Предыдущие состояния
(значение по умолчанию) | векторПредыдущие состояния x
В виде вектора, число элементов которого равно количеству входных каналов.
Пример: zerocrossrate(x,InitialState=[1 0 –1 3])
возвращает пересекающиеся уровни входного сигнала с четырьмя каналами x
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Method
— Метод для вычислительного уровня пересечения нулем"difference"
(значение по умолчанию) | "comparison"
Метод для вычисления уровня пересечения нулем в виде "difference"
или "comparison"
. Если вы не задаете 'Method'
, функция использует метод различия, чтобы вычислить пересекающийся уровень.
comparison
— Функция отмечает indices
как верный, где пересечение полностью завершается.
difference
— Функция отмечает indices
как верный, где abs (знак (x i) - знак (x i–1))> 0.
Пример: zerocrossrate(x,Method="comparison")
вычисляет пересекающийся уровень x
использование метода сравнения.
Типы данных: char |
string
WindowLength
— Длина окнаДлина окна, по которой можно вычислить пересекающийся уровень в виде положительного целого числа. Длина окна по умолчанию является длиной сигнала.
Пример: 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
OverlapLength
— Количество перекрывающихся выборок
(значение по умолчанию) | положительное целое числоКоличество перекрывающихся выборок между смежными сегментами в виде положительного целого числа. Перекрытие должно быть меньшим, чем длина окна.
Пример: zerocrossrate(x,OverlapLength=0)
возвращает пересекающиеся уровни сегментов без перекрытия.
Пример: zerocrossrate(x,WindowLength=20,OverlapLength=5)
возвращает пересекающиеся уровни перекрывающихся сегментов с пятью выборками перекрытия.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Level
— Уровень сигнала
(значение по умолчанию) | действительный скалярУровень сигнала, для которого пересекающийся уровень вычисляется в виде действительного скаляра. Функция вычитает 'Level'
значение от сигнала и затем находит нулевые пересечения. Если вы не задаете 'Level'
, функция использует значение по умолчанию 0
и возвращает уровень пересечения нулем.
Пример: zerocrossrate(x,Level=1)
возвращает уровень в который входной сигнал x
кресты 1
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Threshold
'Порог'
(значение по умолчанию) | действительный скалярПороговое значение выше и ниже '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
TransitionEdge
— Переходы"both"
(значение по умолчанию) | "falling"
| "rising"
Переходы, чтобы включать при подсчете нулевых пересечений в виде "falling"
, "rising"
, или "both"
. Если вы задаете "falling"
, функция считает только отрицательно идущие переходы. Если вы задаете "rising"
, функция считает только положительно идущие переходы.
Пример: zerocrossrate(x,TransitionEdge="rising")
возвращает пересекающийся уровень x
только для положительно идущих переходов.
Типы данных: char |
string
ZeroPositive
— Подпишите соглашение
или false
(значение по умолчанию) | 1
или true
Подпишите соглашение в виде логического скаляра. Если вы задаете 'ZeroPositive'
как верная, функция рассматривает 0
быть положительным. Если вы задаете 'ZeroPositive'
как ложь, функция рассматривает 0
, –1, и +
1
иметь отличные знаки в соответствии с соглашением sign
функция.
Пример: zerocrossrate(x,ZeroPositive=1)
возвращает пересекающийся уровень входного сигнала x
и рассматривает нуль как положительный.
Типы данных: логический
rate
— Уровень пересечения нулемУровень пересечения нулем, возвращенный как вектор-строка или матрица. Когда 'WindowLength'
равно длине сигнала, rate
вектор-строка, число элементов которого равно количеству каналов в x
или TT
. Когда 'WindowLength'
меньше, чем длина сигнала, функция возвращает rate
когда матрица, где i-ая строка содержит пересекающийся уровень для i-ого окна и j-ого столбца, соответствует j-ому входному каналу.
count
— Количество пересеченийКоличество пересечений, возвращенных как N-by-M матрица, где N является количеством окон и M, является количеством входных каналов. I-ая строка соответствует пересекающемуся счету для i-ого окна, и j-ый столбец соответствует пересекающемуся счету для j-ого канала.
indices
— Логические индексыWindowLength
- M массивЛогические индексы в местоположениях сигнала, где пересечения происходят, возвратились как N-by-'WindowLength'
- M массив, где N является количеством окон и M, количество входных каналов.
Примечание
Индексы не могут представлять точные местоположения пересечения сигнала. zerocrossrate
функция возвращает индекс на следующей выборке после пересечения.
Указания и ограничения по применению:
Генерация кода не поддерживает динамическое выделение памяти отключения, когда длина окна задана, и вход является больше чем одним каналом.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.