Уравнение для распределения предметов неравномерно - PullRequest
0 голосов
/ 09 мая 2018

Я пишу программу javascript, которая отправляет список MIDI-сигналов за определенный период времени.

Если сигналы отправляются равномерно, легко определить, как долго ждать между каждым сигналом:это просто общая длительность, деленная на количество сигналов.

Однако я хочу предложить параметр, при котором сигналы не передаются одинаково: либо сигналы отправляются с возрастающей или уменьшающейся скоростью.В любом случае количество сигналов и общее количество времени остаются неизменными.

Вот изображение, чтобы визуализировать то, о чем я говорю

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

Большое вам спасибо!

1 Ответ

0 голосов
/ 09 мая 2018

Поскольку вы не предоставляете какой-либо метод для получения значения импульса из предыдущего значения или любым другим способом, я предполагаю, что мы свободны придумать свой собственный.

В обоих случаях похоже, что вы начинаете с начального временного интервала: назовем его 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 почти постоянное, то это хорошая модель.

...