A computer-implemented method of determining a location of a mobile device, the method comprising: receiving inertial data (104; 304) generated at the mobile device, the inertial data comprising a plurality of samples taken at different times; segmenting the inertial data into pseudo-independent windows (304a, 304b, 304c, 304d, 304e), wherein each pseudo-independent window comprises a plurality of the samples and wherein one or more initial states for each pseudo-independent window are treated as unknown; estimating a change in navigation state over each pseudo-independent window using the samples of inertial data; summing the changes in the navigation states over the pseudo-independent windows so as to determine the location of the mobile device, wherein the estimating the change in navigation state over each pseudo-independent window is performed independently for each window, without requiring provision of an initial state for one window from the preceding window; wherein an initial velocity and a gravity vector in a device body frame states are unknown and are not passed to subsequent windows as input; and characterised in that a regressor such as a neural network or a genetic algorithm is used to estimate some representation of the initial velocity and the gravity vector implicitly encoded in latent features that the regressor extracts from the inertial data. receiving inertial data (104; 304) generated at the mobile device, the inertial data comprising a plurality of samples taken at different times; segmenting the inertial data into pseudo-independent windows (304a, 304b, 304c, 304d, 304e), wherein each pseudo-independent window comprises a plurality of the samples and wherein one or more initial states for each pseudo-independent window are treated as unknown; estimating a change in navigation state over each pseudo-independent window using the samples of inertial data; summing the changes in the navigation states over the pseudo-independent windows so as to determine the location of the mobile device, wherein the estimating the change in navigation state over each pseudo-independent window is performed independently for each window, without requiring provision of an initial state for one window from the preceding window; wherein an initial velocity and a gravity vector in a device body frame states are unknown and are not passed to subsequent windows as input; and characterised in that a regressor such as a neural network or a genetic algorithm is used to estimate some representation of the initial velocity and the gravity vector implicitly encoded in latent features that the regressor extracts from the inertial data. wherein the estimating the change in navigation state over each pseudo-independent window is performed independently for each window, without requiring provision of an initial state for one window from the preceding window; wherein an initial velocity and a gravity vector in a device body frame states are unknown and are not passed to subsequent windows as input; and characterised in that a regressor such as a neural network or a genetic algorithm is used to estimate some representation of the initial velocity and the gravity vector implicitly encoded in latent features that the regressor extracts from the inertial data.