Matlab измеряет ширину импульса и график во времени для оценки джиттера
Я хочу измерить низкую длительность импульса сигнала, а затем построить график, чтобы увидеть, изменяется ли отношение ШИМ во время работы этого сигнала.
Сам сигнал был получен с помощью осциллографа и сохранен в виде cvs- файла, канал 2 - это импульсный сигнал, где я хочу оценить, в каких границах импульсы устойчивы или нет.
with d = dutycycle(CH2)
я мог бы получить рабочий цикл из моего сигнала
Как я могу изобразить рабочий цикл или время низкого импульса в виде графической линии или поля, чтобы увидеть их изменения во времени?
Оба файла для тестирования находятся здесь:
1 ответ
Ваш сигнал достаточно чистый, поэтому вы можете просто использовать пороговое значение. Если вам нужно немного больше шума, вот один из способов.
Основной подход состоит в том, чтобы разложить сигнал по частям (на последовательность постоянных сегментов). Идентификация точки изменения дает вам время начала и окончания, а также величину каждого сегмента.
Затем все четные времена являются нарастающими, а нечетные - падающими (или наоборот). Различия между этими двумя векторами дают большую и низкую длительность каждого импульса, а различия между нарастающими фронтами дают длительность каждого импульса.
rising = TIME(1+est.time(2:2:end));
falling = TIME(1+est.time(1:2:end));
hightime = falling(2:end) - rising(1:end-1);
lowtime = rising(2:end) - falling(2:end);
plot([lowtime hightime diff(rising)])
legend('Low Time', 'High Time', 'Pulse Duration')
Рабочий цикл тогда hightime ./ diff(rising)
и вы можете приступить к расчетам джиттера.
Для выполнения сегментации я использовал код из своей диссертации, но этот простой случай (кусочно-постоянный) уже был решен Killick et. Аль (2012)
Р. Киллик, П. Фернхед и И. А. Экли. Оптимальное обнаружение точек изменения с линейными вычислительными затратами. Журнал Американской статистической ассоциации, 107(500):1590–1598, декабрь 2012 г. doi: 10.1080 / 01621459.2012.737745.