Interpolate a continuous velocity time series from particle-tracking displacement measurements.

1 view (last 30 days)
I am tracking particle velocity by measuring its displacement between image pairs. Snapshots are taken at irregular intervals in time. Uncertainty in the velocity measurement is (+/- a few pixels)/dt, meaning that if images are taken too close together in time, the resulting velocity measurement is junk.
How can I turn my displacement/time measurements into a realistic continuous velocity time series? I am most interested in seeing the structure of changes in velocity over time. I want to know with the greatest precision possible, when does my particle speed up or slow down, and by how much?
To illustrate my problem, I've made up some data below. The heavy blue line shows some true continuous particle velocity. Vertical gray lines indicate times when I have images. I've measured velocities by pairing images 1 & 2, 1 & 3, and 3 & 4. I could also include measurements between images 1 & 4 and 2 & 4, but I was trying to keep the plot as simple as possible. My crude attempt to turn these measurements into a continuous time series follows these steps:
  1. Measure average velocity between image pairs.
  2. Assign measured velocity to the midpoint in time between image pairs.
  3. Interpolate midpoint velocities to a continuous time series.
Here's the data I used to create the plot above:
% time data:
t = 1:100;
% particle velocity data:
v = zeros(size(t))+100;
v(40:70) = 100*(1+sin(linspace(0,pi,31)));
% I have three images taken at times t_meas:
t_meas = [t(28) t(50);
t(28) t(57);
t(57) t(93)];
% average velocities from displacements between measurements:
v_meas = [mean(v(28:50)); mean(v(28:57)); mean(v(57:93))];
% interpolated velocity
v_interp = interp1(mean(t_meas,2),v_meas,t,'cubic');
Choice of interpolation method greatly affects the resulting time series, and I'm not convinced that any of Matlab's built-in interpolation methods are appropriate for this problem. Any of you signal processing whizzes out there have a clever solution?

Answers (1)

Image Analyst
Image Analyst on 23 Oct 2014
If you measure over a long time, you're going to get the mean velocity over that time, and so the values you are getting are the "true" mean values over the interval based on those times and interpolation method. There's nothing really wrong with the curve you're getting - it's calculating what you told it to. After all, maybe you or someone would want the average speed over the interval rather than the actual instantaneous speed and this code would give that. To get more accurate, so the interpolated curve follows the actual curve, you'll have to sample more frequently.
  1 Comment
Image Analyst
Image Analyst on 23 Oct 2014
I don't think you can. Even though you can get velocities in the intervening times, like even on a daily basis, if you don't have images for those "in between" time points, how do you know if you're right or not right? You can't. So what makes you think you're wrong? On average, you're right.

Sign in to comment.

Categories

Find more on Interpolating Gridded Data in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!