Извлеките функции сигнала часов

Как резко сигнал включения - выключения включает и выключает? Как часто и как долго это активируется? Определите все те характеристики для вывода часов.

Загрузите сигнал и постройте его. Время измеряется в секундах и уровне в вольтах.

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

Смотрите также

| | | | | | | |

Похожие темы