Estimating forward velocity for a swimmer With a modern IMU with 9 angles of freedom collecting accelerometer, magnetometer and gyroscope data on 3 axis, what would be the best approach on filtering the data and handling it to accurately estimate the forward velocity of the swimmer?

My approach was to:
1. Use a 3-point moving average to get rid of any vibrations caused by unneeded movements
2. Use a median average to get rid of repetitve movements such as shakes or water  resistance
3. Perform integration of accelerometer data.

At this point, I'm unsure of my data filtering approach. Is there a better approach? What methods should I use for acc. integration?
Your most important question is not the algorithm. You must check the precision of the sensor you can buy. I've tried several sensors, after 50 seconds the cumulated error can be a magnitude higher then the velocity itself. If you can buy a 1000 USD sensor, then it's precision would be sufficient, but you still have the problem that there will be no 0 position and 0 velocity, ie. the sensor will be moving even if the swimmer has not yet started to swim. This movement of the sensor will be greater then the difference between the velocities of two swimmers.