В этом примере показано, как создать форму волны меандра и измерить ее рабочий цикл. Можно думать о форме волны меандра как о последовательности на и от состояний. Один импульсный период является общей длительностью на и от состояния. Ширина импульса является длительностью на состоянии. Рабочий цикл является отношением ширины импульса к импульсному периоду. Рабочий цикл для меандра описывает часть времени, когда импульс включен в один импульсный период.
Создайте меандр, произведенный на уровне 1 гигагерца. Импульс включен, или равен 1, на срок 1 микросекунды. Импульс, если выключенный, или равный 0, на срок 3 микросекунд. Импульсный период составляет 4 микросекунды. Постройте форму волны.
Fs = 1e9; t = 0:1/Fs:(10*4e-6); pulsewidth = 1e-6; pulseperiods = [0:10]*4e-6; x = pulstran(t,pulseperiods,@rectpuls,pulsewidth); plot(t,x) axis([0 4e-5 -0.5 1.5])
Определите рабочий цикл формы волны с помощью dutycycle
. Введите и импульсный сигнал и частоту дискретизации, чтобы вывести рабочий цикл. dutycycle
выводит значение рабочего цикла для каждого обнаруженного импульса.
D = dutycycle(x,Fs)
D = 1×9
0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500 0.2500
В этом примере рабочий цикл для каждого из обнаруженных импульсов идентичен и равен 0,25. Это - ожидаемый рабочий цикл, потому что импульс включен в течение 1 микросекунды и прочь в течение 3 микросекунд в каждый период с 4 микросекундами. Поэтому импульс включен для 1/4 каждого периода. Описанный как процент, это равно рабочему циклу 25%.
Вызов dutycycle
без выходных аргументов производит график со всей обнаруженной отмеченной шириной импульса.
dutycycle(x,Fs);
Используя ту же частоту дискретизации и импульсный период, варьируйтесь импульс на времени (ширина импульса) с 1 до 3 микросекунд в цикле и вычислите рабочий цикл. Постройте импульсные сигналы и отобразите значение рабочего цикла в заголовке графика для каждого шага через цикл. Рабочий цикл увеличивается от 0,25 (1/4) к 0,75 (3/4), как ширина импульса увеличивается.
nwid = 3; for nn = 1:nwid x = pulstran(t,pulseperiods,@rectpuls,nn*pulsewidth); subplot(nwid,1,nn) plot(t,x) axis([0 4e-5 -0.5 1.5]) D = dutycycle(x,Fs); title(['Duty cycle is ' num2str(mean(D))]) end