Положительный треугольник пульса в питоне - PullRequest
1 голос
/ 28 мая 2019

Я хочу создать положительный треугольник импульса. Я хочу быть в состоянии определить амплитуду, время нарастания и спада, а также количество точек в них. Из документации scipy (https://docs.scipy.org/doc/scipy/reference/signal.html), я нашел форму волны «пилообразная» и пытаюсь ее использовать.

Проблема, с которой я сталкиваюсь, заключается в том, что упомянутая форма волны колеблется между 1, -1, но я хочу, чтобы она изменялась от 0 до указанного положительного предела. Вот пример того, что я хочу сделать:

enter image description here

Этот импульс будет использоваться для корреляции данных с детектора, поэтому важно иметь возможность указать время нарастания / спада и точки в них, чтобы экспериментировать и получать из этого максимально возможную ясность.

Можно ли манипулировать сигналом «пилообразная», чтобы получить то, что я хочу? Или я должен сам создать сигнал? Если единственным вариантом является его создание, могу ли я получить некоторую помощь относительно того, как я могу определить его в python?

Спасибо, что уделили время!

1 Ответ

0 голосов
/ 25 июня 2019

Решением может быть использование линейной интерполяции для построения требуемой функции.Если вам нужна функция периодического импульса, numpy.interp имеет опцию period для периодического наложения оси x.В противном случае, убрав аргумент, функция останется 0 после первого импульса.

rise_duration = 1
fall_duration = 3
period = 6

control_points_x = [0, rise_duration, rise_duration+fall_duration]
control_points_y = [0, 1, 0]

x = np.linspace(0, 14, 123)
triangular_pulses = np.interp(x, control_points_x, control_points_y, period=period)

# Graph
plt.plot(x, triangular_pulses, label='interpolation');
plt.plot(control_points_x, control_points_y, 'ok', label='control points')
plt.xlabel('x'); plt.ylabel('y'); plt.legend();

periodic tri pulse

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...