#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), как максимумы, так и минимумы, и нашел время цикла. Кажется простым и эффективным в вычислительном отношении.