The tracking precision required by modern industrial applications is continuously increasing. Feedback control alone is often no longer capable of giving the necessary tracking accuracy and so the use of two-degree-of-freedom controllers, which include a feedforward term, has become commonplace. Traditionally the feedforward term is a filter based on the inverse of an identified model of the system. It is, however, not possible to obtain very high precision tracking with this approach because the identified model will always suffer from model uncertainty. In this thesis, data-driven methods are investigated. These methods derive the feedforward control directly from measured data and thus avoid the system identification step, which is where the model uncertainty is introduced. They are, therefore, capable of producing higher precision tracking than the traditional methods. For the general tracking problem, a precompensator controller is considered as the feedforward term. This controller filters the desired output signal before it is applied as an input to the system. The precompensator's parameters are tuned directly using measured data. These data are affected by stochastic disturbances, such as measurement noise. The effect of these disturbances on the calculated parameters is studied and the correlation approach is used to reduce it. For the specific problem where the tracking task is repetitive, a situation frequently encountered in industrial applications, Iterative Learning Control is proposed. Iterative Learning Control uses measurements from previous repetitions to adjust the system's input for the current repetition in a manner that improves the tracking. As measurements are used, the calculated input is sensitive to the stochastic disturbances. The effect of these disturbances on the learning procedure is examined and algorithms, which are less sensitive to their presence, are developed. Extensions of the methods are also made for linear parameter varying systems in which the system's dynamics change as a function of a scheduling parameter. The developed methods are successfully applied to an industrial linear motor positioning system.