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

falltime

Время спада отрицательных фронтов двухуровневых сигналов.

Библиотека

EngeeDSP

Синтаксис

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

  • f = falltime(x) — возвращает вектор f, содержащий время каждого отрицательного фронта входного двухуровневого сигнала x от опорных уровней 90% до 10%. Поскольку функция falltime использует интерполяцию, f может содержать значения, не соответствующие моментам дискретизации двухуровневого сигнала x.

  • f = falltime(x, fs) — использует частоту дискретизации в Гц. Частота дискретизации определяет моменты дискретизации, соответствующие элементам x.

  • f = falltime(x, t) — использует моменты дискретизации t, которые задаются как вектор с тем же количеством элементов, что и x.

  • f, lt, ut = falltime(___) — возвращает векторы lt и ut, элементы которых соответствуют моментам времени, когда x пересекает нижний и верхний процентные опорные уровни. Этот синтаксис выходных данных можно использовать с любым из предыдущих входных синтаксисов.

  • f, lt, ut, ll, ul = falltime(___) — также возвращает уровни ll и ul, соответствующие нижнему и верхнему процентным опорным уровням.

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

Аргументы

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

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

Details

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

# fs — частота дискретизации, Гц
скаляр

Details

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

# t — моменты дискретизации
вектор

Details

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

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

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

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

Пример: f = falltime([4,3,2,1], "PercentReferenceLevels", [30 60]).

# PercentReferenceLevels — опорные уровни в процентах от амплитуды сигнала
[10 90] (по умолчанию) | двухэлементный вектор-строка

Details

Опорные уровни в процентах от амплитуды сигнала, заданные как двухэлементный положительный вектор-строка. Элементы вектора-строки соответствуют низкому и высокому опорным уровням в процентах. Высокий уровень состояния определяется как 100%, а низкий — как 0%. Подробнее см. в разделе Процентные опорные уровни.

# StateLevels — низкий и высокий уровни состояний
двухэлементный вектор-строка

Details

Низкий и высокий уровни состояний, заданные как двухэлементный вектор-строка. Первый и второй элементы вектора соответствуют низкому и высокому уровням состояний.

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

Details

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

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

Details

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

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

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

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

# f — длительность отрицательного фронта
вектор

Details

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

# lt — моменты пересечения нижнего опорного уровня
вектор

Details

Моменты пересечения нижнего опорного уровня, возвращаемые в виде вектора. Вектор lt содержит моменты времени, когда отрицательный фронт пересекает нижний опорный уровень. По умолчанию нижнее значение опорного уровня составляет 10% от опорного уровня. Вы можете изменить значения опорных уровней по умолчанию, указав аргумент PercentReferenceLevels.

# ut — моменты пересечения верхнего опорного уровня
вектор

Details

Моменты пересечения верхнего опорного уровня, возвращаемые в виде вектора. Вектор ut содержит моменты времени, когда отрицательный фронт пересекает верхний опорный уровень. По умолчанию верхнее значение опорного уровня составляет 90% от опорного уровня. Вы можете изменить значения опорных уровней по умолчанию, указав аргумент PercentReferenceLevels.

# ll — нижний опорный уровень
скаляр

Details

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

По умолчанию нижнее значение опорного уровня составляет 10% от опорного уровня. Вы можете изменить значения опорных уровней по умолчанию, указав аргумент PercentReferenceLevels.

# ul — верхний опорный уровень
скаляр

Details

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

По умолчанию верхнее значение опорного уровня составляет 90% от опорного уровня. Вы можете изменить значения опорных уровней по умолчанию, указав аргумент PercentReferenceLevels.

Примеры

Время спада сигнала

Details

Вычислим время спада сигнала.

import EngeeDSP.Functions: falltime
f = falltime([4,3,2,1], "PercentReferenceLevels", [30 60], out=:data)
(0.5940000000000003, 3.391, 2.7969999999999997, 1.609, 2.2030000000000003)

Выведем график.

import EngeeDSP.Functions: falltime
f = falltime([4,3,2,1], "PercentReferenceLevels", [30 60], out=:plot)

falltime 1

Время спада двухуровневого сигнала

Details

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

t = [0, 2.5000e-07, 5.0000e-07, 7.5000e-07, 1.0000e-06, 1.2500e-06, 1.5000e-06, 1.7500e-06, 2.0000e-06, 2.2500e-06, 2.5000e-06, 2.7500e-06, 3.0000e-06,
     3.2500e-06, 3.5000e-06, 3.7500e-06, 4.0000e-06, 4.2500e-06, 4.5000e-06, 4.7500e-06, 5.0000e-06, 5.2500e-06, 5.5000e-06, 5.7500e-06, 6.0000e-06,
     6.2500e-06, 6.5000e-06, 6.7500e-06, 7.0000e-06, 7.2500e-06, 7.5000e-06, 7.7500e-06, 8.0000e-06, 8.2500e-06, 8.5000e-06, 8.7500e-06, 9.0000e-06,
     9.2500e-06, 9.5000e-06, 9.7500e-06]

x = [2.3026, 2.2907, 2.2628, 2.3515, 2.2769, 2.2981, 2.3281, 2.3088, 2.2934, 2.2302, 2.2527, 2.3326, 2.2343, 2.2934, 2.3041, 2.2866, 2.3062,
     2.3055, 2.2707, 2.1992, 2.4520, -0.1271, 0.1181, -0.0250, -0.0227, -0.0061, -0.0216, -0.0125, 0.0085, -0.0031, 0.0175, -0.0202, 0.0273,
     0.0227, 0.0199, 0.0644, -0.0326, 0.0011, 0.0162, -0.0264]

import EngeeDSP.Functions: falltime

falltime(x, out=:plot)

falltime 2

Снова определим время спада и укажем примерные моменты времени t. Изобразим результат на новом графике.

falltime(x, t, out=:plot)

falltime 3

Время спада по опорным уровням 20% и 80%

Details

Рассчитаем время спада двухуровневого сигнала, используя опорные уровни 20% и 80%. Построим график сигнала и обозначим на нем время спада.

falltime(x, "PercentReferenceLevels", [20 80], out=:plot)

falltime 4

Время спада, моменты временни опорного уровня и опорные уровни

Details

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

f, lt, ut, ll, ul = falltime(x, t, out=:plot)

falltime 5

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

print("Fall time is ", lt-ut, " seconds")
Fall time is 1.7999999999999828e-7 seconds

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

Фронт сигнала

Details

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

Отрицательный фронт

Details

Отрицательный фронт в двухуровневом сигнале — это переход из состояния с высоким уровнем в состояние с низким уровнем. Если сигнал дифференцируем в окрестности фронта, эквивалентным определением будет фронт с отрицательной первой производной.

Процентные опорные уровни

Details

Если — это низкое состояние, — высокое состояние, а — верхний процентный опорный уровень, то значение сигнала, соответствующее верхнему процентному опорному уровню, равно

Если — это нижний процентный опорный уровень, то значение сигнала, соответствующее нижнему процентному опорному уровню, равно

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

Details

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

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

Литература

  1. IEEE® Standard on Transitions, Pulses, and Related Waveforms, IEEE Standard 181, 2003, pp. 15–17.