def velocity_from_acceleration(ax, ay, az, t):
    """
    Estimate velocity from accelerometer readings.

    Parameters
    ----------
    ax : list or numpy array of floats
        accelerometer x-axis data
    ay : list or numpy array of floats
        accelerometer y-axis data
    az : list or numpy array of floats
        accelerometer z-axis data
    t : list or numpy array of floats
        accelerometer time points

    Returns
    -------
    vx : list or numpy array of floats
        estimated velocity along x-axis
    vy : list or numpy array of floats
        estimated velocity along y-axis
    vz : list or numpy array of floats
        estimated velocity along z-axis

    Examples
    --------
    >>> from mhealthx.extractors.dead_reckon import velocity_from_acceleration
    >>> from mhealthx.xio import read_accel_json
    >>> #input_file = '/Users/arno/DriveWork/mhealthx/mpower_sample_data/accel_walking_outbound.json.items-6dc4a144-55c3-4e6d-982c-19c7a701ca243282023468470322798.tmp'
    >>> input_file = '/Users/arno/DriveWork/mhealthx/mpower_sample_data/deviceMotion_walking_outbound.json.items-5981e0a8-6481-41c8-b589-fa207bfd2ab38771455825726024828.tmp'
    >>> #input_file = '/Users/arno/DriveWork/mhealthx/mpower_sample_data/deviceMotion_walking_outbound.json.items-a2ab9333-6d63-4676-977a-08591a5d837f5221783798792869048.tmp'
    >>> start = 150
    >>> device_motion = True
    >>> t, axyz, gxyz, uxyz, rxyz, sample_rate, duration = read_accel_json(input_file, start, device_motion)
    >>> ax, ay, az = axyz
    >>> vx, vy, vz = velocity_from_acceleration(ax, ay, az, t)

    """
    vx = [0]
    vy = [0]
    vz = [0]
    for i in range(1, len(ax)):
        dt = t[i] - t[i-1]
        vx.append(vx[i-1] + ax[i] * dt)
        vy.append(vy[i-1] + ay[i] * dt)
        vz.append(vz[i-1] + az[i] * dt)

    return vx, vy, vz