Поскольку вы не даете никакого метода для получения значения пульса, из предыдущего значения или каким-либо другим способом, я предполагаю, что мы можем придумать свой собственный.
В обоих ваших случаях похоже, что вы начинаете с начального временного интервала: назовем его a. Тогда следующий интервал — это значение, умноженное на постоянный коэффициент: назовем его r. В первом уменьшающемся случае ваше значение r находится между нулем и единицей (около 0,6), а во втором случае ваше значение r больше единицы (около 1,6). Таким образом, ваши временные интервалы в нотации Python равны
a, a*r, a*r**2, a*r**3, ...
Тогда время каждого сигнала равно сумме геометрического ряда,
a * (1 - r**n) / (1 - r)
где n — номер импульса (1 для первого, 2 для второго и т. д.). Эта формула действительна, если r не равно единице, но если r равно единице, то последовательность является тривиальной последовательностью обычного сигнала, а n-й сигнал дается в момент времени.
a * n
Это не «фиксированный результат», поскольку у вас есть две степени свободы — вы можете выбирать значения a и r.
Если вы хотите более равномерно распределить сигналы, просто приблизите r к единице. Значение, равное единице, абсолютно ровное, значение, находящееся дальше от единицы, более слипается на одном конце. Одним из недостатков этого метода является то, что если интервалы сигналов уменьшаются, то в какой-то момент сигналы полностью прекратятся, а именно в
a / (1 - r)
Если у вас есть уже отправленные или полученные сигналы и вы хотите найти значение r, просто найдите временной интервал между тремя последовательными сигналами, а r — это значение временного интервала между 2-м и 3-м сигналом, деленное на время интервью между 1-й и 2-й сигнал. Если вы хотите убедиться, что эта модель хороша для данного набора сигналов, проверьте значение r для нескольких сигналов — если значение r почти постоянно, то это хорошая модель.
person
Rory Daulton
schedule
08.05.2018