Как резко сигнал включения - выключения включает и выключает? Как часто и как долго это активируется? Определите все те характеристики для выхода часов.
Загрузите сигнал и постройте его. Время измеряется в секундах и уровне в вольтах.
load(fullfile(matlabroot,'examples','signal','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