Квантование сложного сигнала в Python

#python #numpy #signal-processing #quantization

#python #numpy #обработка сигналов #квантование

Вопрос:

Я хочу произвести квантование сложного сигнала в Python — необходимо иметь этот сигнал в виде набора дискретных неоднородных уровней. Например, часть этого сигнала может быть представлена в виде:

 x = [0, 0.015, 0.03, 0.04, 0.08, 0.1, 0.11, 0.12, 0.14, 0.17, 0.2, 0.225, 0.24, 0.27, 0.31, 0.32, 0.33, 0.35, 0.36, 0.37, 0.39, 0.4, 0.42, 0.44, 0.45, 0.47, 0.48, 0.49, 0.5, 0.51, 0.52, 0.55, 0.57, 0.58, 0.6, 0.62, 0.64, 0.66, 0.68, 0.75, 0.77, 0.79, 0.82, 0.88] 

y = [0, 0.5, 1, 1.5, 2, 2.5, 2.75, 2.93, 2.93, 2.8, 2.5, 2, 1.5, 1.15, 1, 0.95, 1, 1.08, 1.10, 1.07, 1.02, 0.9, 0.7, 0.3, 0.1, -0.4, -0.6, -0.65, -0.6, -0.3, 0, 0.35, 0.5, 0.9, 1.2, 1.25, 1.2, 1.1, 0.95, 0.7, 0.5, 0.3, 0, -0.15]

plot(x, y,"r"); grid(True); show()
 

Не могли бы вы любезно порекомендовать мне, как я могу сделать это на Python?

Этот график показывает, что я хочу иметь:

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

1. Возможно, вы захотите попробовать np.digitize .

Ответ №1:

Использование matplotlib и marker параметр это отображается и может соответствовать вашим требованиям.

 import matplotlib.pyplot as plt

# x, y data provided

plt.plot(x,y,marker="_")
 

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

1. Спасибо за ваш ответ, но он может сделать просто визуализацию предоставленного набора. Мой вопрос в основном касается квантования набора данных — как уменьшить количество точек в наборе данных путем замены на уровни (т. Е. Для близких значений определите одно среднее значение, например, используя метод «скользящего среднего»).