Документация Engee

pulsewidth

Длительность импульса двухуровневого сигнала.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • w = pulsewidth(x) — возвращает разность между моментами среднего опорного уровня начального и конечного переходов каждого импульса положительной полярности во входном двухуровневом сигнале.

  • w = pulsewidth(x,fs) — определяет частоту дискретизации fs в Гц. Первый момент времени в сигнале соответствует моменту .

  • w = pulsewidth(x,t) — определяет моменты дискретизации t.

  • w,initcross = pulsewidth(___) — возвращает моменты initcross среднего опорного уровня начального перехода каждого импульса. Вы можете указать входную комбинацию любого из приведенных выше вариантов синтаксиса.

  • w,initcross,finalcross = pulsewidth(___) — возвращает моменты finalcross среднего опорного уровня конечного перехода каждого импульса.

  • w,initcross,finalcross,midlev = pulsewidth(___) — возвращает значение сигнала midlev, соответствующее среднему опорному уровню.

  • W = pulsewidth(___,Name,Value) — задает дополнительные параметры, используя один или несколько аргументов типа Name,Value.

  • pulsewidth(___) — строит график сигнала и затемняет области каждого импульса, в которых функция вычисляет его длительность. Функция отмечает положение средних пересечений и соответствующий им опорный уровень. Функция также строит графики уровней состояний и связанных с ними нижних и верхних границ.

Аргументы

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

# x — двухуровневый сигнал
вещественный вектор

Details

Двухуровневый сигнал, заданный как вещественный вектор.

# fs — частота дискретизации
положительный вещественный скаляр

Details

Частота дискретизации, заданная как положительный вещественный скаляр, выраженный в Гц.

# t — выборка моментов времени
вектор

Details

Выборка моментов времени, заданная как вектор. Длина вектора t должна быть равна длине двухуровневого сигнала x.

Входные аргументы «имя-значение»

Укажите необязательные пары аргументов в виде Name,Value, где Name — имя аргумента, а Value — соответствующее значение. Аргументы типа «имя-значение» должны располагаться после других аргументов, но порядок пар не имеет значения.

Используйте запятые для разделения имени и значения, а Name заключите в кавычки.

# MidPercentReferenceLevel — средний опорный уровень
50 (по умолчанию) | вещественный скаляр

Details

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

# Polarity — полярность импульса
"positive" (по умолчанию) | "negative"

Details

Полярность импульса, заданная как "positive" или "negative". Если задано "positive", функция ищет импульсы с положительными начальными переходами (положительная полярность). Если задано "negative", функция pulsewidth ищет импульсы с отрицательными начальными переходами (отрицательная полярность). Подробнее см. в разделе Полярность импульса.

# StateLevels — уровни нижнего и верхнего состояний
вещественный вектор

Details

Уровни нижнего и верхнего состояний, заданные как вектор вещественных значений размером 1 на 2. Первый элемент — уровень нижнего состояния. Второй элемент — уровень верхнего состояния. Если уровни нижнего и верхнего состояний не указаны, функция pulsewidth оценивает уровни состояний по входному сигналу с помощью метода гистограмм. Подробное описание метода гистограмм см. в разделе Оценка на уровне состояний.

# Tolerance — уровни допуска
2 (по умолчанию) | вещественный скаляр

Details

Уровни допуска (границы нижнего и верхнего состояний), заданные как вещественный скаляр, выраженный в процентах. Подробнее см. в разделе Допуски на уровне состояний.

# out — тип выходных данных
:plot (по умолчанию) | :data

Details

Тип выходных данных:

  • :plot — функция возвращает график;

  • :data — функция возвращает данные.

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

# w — длительности импульсов
вектор

Details

Длительность импульса в секундах, возвращаемая в виде вектора. Длительность импульса — это разница во времени между начальным и конечным переходами импульса. В [1] моменты начального и конечного переходов называются моментами возникновения переходов.

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

# initcross — момент среднего опорного уровня начального перехода
вектор-столбец

Details

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

# finalcross — момент среднего опорного уровня конечного перехода
вектор-столбец

Details

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

# midlev — значение сигнала
скаляр

Details

Значение сигнала, соответствующее среднему опорному уровню, возвращаемое в виде скаляра.

Примеры

Начальный и конечный переходы двухуровневого сигнала

Details

Вычислим начальный и конечный переходы для двухуровневой формы сигнала, дискретизированной на частоте 400 кГц.

import EngeeDSP.Functions: pulsewidth

fs = 4e5
t1 = collect(0:1/fs:3)
x1 = zeros(length(t1))
t2 = collect((3+1/fs):1/fs:4)
x2 = fill(5, length(t2))
t3 = collect((4+1/fs):1/fs:7)
x3 = zeros(length(t3))
t = vcat(t1, t2, t3)
x = vcat(x1, x2, x3)

w, initcross, finalcross, midlev = pulsewidth(x, fs)
(1.0000000000000004, 3.00000125, 4.00000125, 2.5)

Дополнительно

Оценка на уровне состояний

Details

Для определения переходов функция pulsewidth оценивает уровни нижнего и верхнего состояний входного сигнала x, используя метод гистограмм по следующим шагам.

  1. Определить минимальную и максимальную амплитуды данных.

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

  3. Отсортировать значения данных по столбцам гистограммы.

  4. Определить самый низкий и самый высокий индексированные столбцы гистограммы с ненулевыми значениями.

  5. Разделить гистограмму на две подгистограммы.

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

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

Средний опорный уровень

Details

Средний опорный уровень в двухуровневом сигнале с уровнем нижнего состояния и уровнем верхнего состояния равен

Момент среднего опорного уровня

Details

Момент среднего опорного уровня равен

где

  • обозначает средний опорный уровень;

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

  • и обозначают значения сигнала в моменты и .

Полярность импульса

Details

Если начальный переход импульса положительный, импульс имеет положительную полярность. Аналогично, импульс положительной полярности (с положительным нарастанием) имеет конечное состояние более положительное, чем начальное. На этом рисунке показан импульс положительной полярности.

dutycycle 1 ru

Если начальный переход импульса отрицательный, импульс имеет отрицательную полярность. Аналогично, импульс отрицательной полярности (с отрицательным нарастанием) имеет начальное состояние более положительное, чем конечное. На этом рисунке показан импульс отрицательной полярности.

dutycycle 2 ru

Допуски на уровне состояний

Details

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

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

Литература

  1. IEEE Standard 181. IEEE® Standard on Transitions, Pulses, and Related Waveforms (2003).