Я ищу эффективный метод для создания двух массивов NumPy; первое - это серия равномерно распределенных чисел, а второе - результат передачи данных первого массива через математическую функцию.
Затем будут построены массивы NumPy, один как x, а другой как y. Я рисую демпфированные гармонические колебания пружины, которые даны как функция х (х - время на графике). Функция представляет собой экспоненциально убывающую синусоидальную волну, где у на графике - смещение от нуля:
f (x) = e ^ (- L. X). а. cos (w. x)
, где L
, a
и w
- все константы (заданные пользователем), а e
- экспоненциальная. В настоящее время я делаю это следующим образом, где SAMPLE_TIME
и SAMPLE_RATE
- это переменные модуля, установленные в другом месте. Я бы предпочел не перебирать массив y и искал способ сделать это за один раз.
# numpy arrays for x and y coords
x = np.arange(0, SAMPLE_TIME, SAMPLE_RATE)
y = np.arange(0, SAMPLE_TIME, SAMPLE_RATE)
# iterate over y array
with np.nditer(y, op_flags=['readwrite']) as arr:
for el in arr:
# under-damped harmonic oscillator equation
el[...] = deflection * math.exp(-el*damping_coefficent) * math.cos(w * el)