Насколько резко включается и выключается сигнал включения/выключения? Как часто и долго он активируется? Определите все эти характеристики для вывода синхросигнала.
Загрузите сигнал и постройте его график. Время измеряется в секундах, а уровень в вольтах.
load('clock.mat') plot(tclock,clocksig) xlabel('Time (s)') ylabel('Level (V)')

Использовать statelevels найти нижний и верхний уровни сигнала с помощью гистограммы. Если выходной сигнал не указан, функция строит график сигнала, помечает уровни и отображает гистограмму.
levels = statelevels(clocksig)
levels = 1×2
0.0138 5.1848
statelevels(clocksig);

Определите скорость нарастания сигнала при каждом переходе. risetime использует нижний и верхний уровни, найденные statelevels. Он определяет время нарастания как время, необходимое сигналу для возрастания от 10% до 90% разницы между уровнями.
[Rise,LoTime,HiTime,LoLev,HiLev] = risetime(clocksig,tclock); Levels = [LoLev HiLev; (levels(2)-levels(1))*[0.1 0.9]+levels(1)]
Levels = 2×2
0.5309 4.6677
0.5309 4.6677
При звонке risetime без выходных данных функция рисует аннотированный график сигнала. Время подъема затеняется, точки пересечения помечаются и отображаются уровни. В качестве входных данных можно использовать вектор времени или частоту дискретизации.
risetime(clocksig,Fs);

overshoot и undershoot показать, насколько сигнал отклоняется от уровней состояния при каждом переходе. Результаты выражены в процентах от разницы между уровнями. Дальнейшие выходы выдают фактические значения времени и сигнала.
overshoot(clocksig,Fs); [pctgs,values,times] = undershoot(clocksig,Fs); hold on text(1.1e-3,2,' Undershoot','Background','w','Edge','k') plot([times;1.17e-3],[values;2],'^m','HandleVisibility','off') hold off

Определение скорости падения сигнала с помощью falltime. Уровни состояния и процентные ссылочные уровни можно задать вручную. Вы можете сделать то же самое с помощью risetime.
falltime(clocksig,tclock, ... 'PercentReferenceLevels',[30 80],'StateLevels',[0 5]);

Найдите период сигнала. По умолчанию период определяется как время, прошедшее между последовательными переходами вверх опорного уровня на полпути между уровнями состояний. Можно изменить полярность пересечений, задать уровни состояния или скорректировать опорный уровень.
per = pulseperiod(clocksig,tclock)
per = 4×1
10-3 ×
0.4143
0.4200
0.4188
0.4111
pulseperiod(clocksig,Fs,'Polarity','negative','MidPct',25);

Рабочий цикл представляет собой отношение длительности импульса к периоду импульса. Определите его непосредственно или с помощью специальной функции.
dut = dutycycle(clocksig,Fs); wdt = pulsewidth(clocksig,Fs); compare = [wdt./per dut]
compare = 4×2
0.4862 0.4862
0.4756 0.4756
0.4871 0.4871
0.4886 0.4886
dutycycle | falltime | overshoot | pulseperiod | pulsewidth | risetime | slewrate | statelevels | undershoot