В этом примере показано, как анализировать импульсы и переходы, а также вычислять метрики, включая время нарастания, время падения, скорость нарастания, переполнение, недоделку, длительность импульса и рабочий цикл.
Сначала рассмотрим выборки из шумного тактового сигнала.
load clocksig clock1 time1 Fs plot(time1,clock1) xlabel('Time (seconds)') ylabel('Voltage')

Использовать statelevels без выходного аргумента для визуализации уровней состояния. Уровни состояния оцениваются по гистограмме.
statelevels(clock1)

ans = 1×2
0.0138 5.1848
Вычисленная гистограмма делится на две области одинакового размера между первым и последним ячейками. Режим каждой области гистограммы возвращается как оцененное значение уровня состояния в окне команд.
Дополнительные входные аргументы используются для указания количества ячеек гистограммы, границ гистограммы и метода оценки уровня состояния.
Использовать risetime без выходного аргумента для визуализации времени нарастания положительных краев.
risetime(clock1,time1)

ans = 5×1
10-4 ×
0.5919
0.8344
0.7185
0.8970
0.6366
Опорные уровни по умолчанию для вычисления времени нарастания и времени спада устанавливаются на уровне 10% и 90% амплитуды сигнала.
Укажите пользовательские опорные уровни и уровни состояний с помощью дополнительных входных аргументов, как показано ниже для измерения времени падения.
falltime(clock1,time1,'PercentReferenceLevels',[20 80],'StateLevels',[0 5])

ans = 4×1
10-4 ×
0.4294
0.5727
0.5032
0.4762
Получайте измерения программно, вызывая функции с одним или несколькими выходными аргументами. Для данных с равномерной выборкой можно указать частоту выборки вместо вектора времени. Использовать slewrate для измерения наклона каждого положительного или отрицательного края.
sr = slewrate(clock1(1:100),Fs)
sr = 7.0840e+04
Теперь рассмотрим данные с часов со значительным превышением и понижением.
load clocksig clock2 time2 Fs plot(time2,clock2) xlabel('Time (seconds)') ylabel('Voltage')

Недостаточно затухающие синхросигналы имеют перегрузки. Превышения выражаются в процентах от разницы между уровнями состояний. Переполнения могут происходить сразу после края, в начале области постпереходной аберрации. Это называется перестрелкой. Их можно измерить с помощью overshoot функция.
overshoot(clock2(95:270),Fs)
ans = 2×1
4.9451
2.5399
legend('Location','NorthEast')

Переполнения также могут происходить непосредственно перед краем, в конце области предпереходной аберрации. Они называются preshoot overshoots. Аналогично, можно измерять недоделки в областях до и после аберрации. Недоводы также выражаются в процентах от разницы между уровнями состояний. Дополнительные входные аргументы используются для указания областей для измерения аберраций.
undershoot(clock2(95:270),Fs,'Region','Postshoot')
ans = 2×1
3.8499
4.9451
legend('Location','NorthEast')

Использовать pulsewidth без выходного аргумента для графика выделенной ширины импульса.
pulsewidth(clock2, time2,'Polarity','Positive');

При этом отображаются импульсы положительной полярности. Выберите отрицательную полярность для просмотра ширины импульсов отрицательной полярности.
Использовать dutycycle вычисляют отношение длительности импульса к периоду импульса для каждого импульса положительной или отрицательной полярности.
d = dutycycle(clock2,time2,'Polarity','negative')
d = 3×1
0.4979
0.5000
0.5000
Использовать pulseperiod для получения периодов каждого цикла формы сигнала. Эта информация используется для вычисления других показателей, таких как средняя частота сигнала или общее наблюдаемое дрожание.
pp = pulseperiod(clock2, time2); avgFreq = 1./mean(pp)
avgFreq = 1.2500e+03
totalJitter = std(pp)
totalJitter = 1.9866e-06
dutycycle | falltime | overshoot | pulseperiod | pulsewidth | risetime | slewrate | statelevels | undershoot