Using autocorrelation to find commonly occurring signal fragments

I have a sensor which is capturing accelerometer data as a person walks. What I'm interested in extracting is each signal fragment when a step is taken. The Z-axis is what is used since only one axis is required to detect changes in steps. The images below illustrates a sample Z-axis gait signal (for 400 iterations). The image below illustrates the first-half of the above signal (for 200 iterations). The subject is initially standing still and then begins walking at ~X=30. Notice how there is an apparent pattern as the user walks. What I'm interested in using Autocorrelation to smooth the Z-axis signal using Matlab to smooth the signal (based on the image below). Unfortunately, I don't have a strong signal processing background, and I have a decent grasp of Matlab. How can I go about achieving smoothing the gait signal so I can extract steps? The literature that I'm using suggests that steps may be extracted by looking at the peaks of the smoothed signal. Other sources have suggested the use of Hidden Markov Models to extract each of the gait cycles, but I thought about a simpler signal processing approach before I consider using something advanced. However, what would be the best strategy if I wanted to pursue this course of action?

• How frequently is the sensor capturing its readings? These graphs look like aliasing patterns where the gait frequency and the sensor frequency are only slightly different. – whuber Nov 6 '10 at 21:21
• Data is being sampled at 10 acceleration readings/second. – rohanbk Nov 6 '10 at 21:30
• Ah! So the downward spikes are where a foot hits the ground and the rest is the "jiggling" in between. If that's the case, even a crummy low-pass filter should do the job. (en.wikipedia.org/wiki/Low-pass_filter ) E.g., fdesign.lowpass (mathworks.com/help/toolbox/filterdesign/ref/… ). – whuber Nov 7 '10 at 22:08
• Thanks for the suggestion. I'll look into the use of a low-pass filter. – rohanbk Nov 9 '10 at 2:44