Нахождение периода прямоугольной волны с переменной частотой дискретизации

#matlab #signal-processing #discrete-mathematics

#matlab #обработка сигналов #дискретная-математика

Вопрос:

У меня есть прямоугольная волна (0-1,8 В) с изменяющейся частотой дискретизации (из симулятора схемы). Это также не идеальная прямоугольная волна (высокий и низкий сигналы могут быть очень близки, но не точно равны нулю или 1 Вольту), а время спада немного медленнее, чем время нарастания.

Другим фактором является то, что я буду повторно обрабатывать данные, и период (и, возможно, рабочий цикл также) изменится, когда я изменю другой параметр, поэтому я не работаю с фиксированным количеством циклов в окне.

Я попробовал автокорреляцию, но, похоже, это дало мне удвоение или около того фактического периода. И БПФ, похоже, нужна фиксированная частота дискретизации. Что было бы лучшим решением для нахождения периода этой прямоугольной волны?

введите описание изображения здесь

Комментарии:

1. Можете ли вы выполнить повторную выборку с фиксированной частотой (например, используя interp1 ), а затем применить корреляцию или DFT?

2. Посмотрите, поможет ли вам эта страница о «Спектральном анализе сигналов с неравномерной дискретизацией». mathworks.com/help/signal/examples /…

3. Я не могу выполнить повторную выборку, потому что я не хочу терять какую-либо информацию, а вектор выборки был бы чрезвычайно длинным, слишком длинным для MATLAB

4. У вас есть какая-либо информация о процедуре дискретизации? Значение того, как изменяется частота дискретизации?

5. Насколько я знаю, симулятор схемы берет больше выборок вблизи восходящих / нисходящих краев и меньше на плоских деталях. Может быть, в 10 или 100 раз больше на этих ребрах

Ответ №1:

Я бы использовал diff, нашел пики (используя findpeaks), как максимумы, так и минимумы, и нашел время цикла. Кажется простым и эффективным в вычислительном отношении.