Really Thanks for your helpful.
But there are some problem as
In[79]:= {times, states} = Transpose@Normal@stateList;
states = Transpose@states;
During evaluation of In[79]:= Set::shape: Lists {times,states} and Transpose[CreateDataStructure[DynamicArray]] are not the same shape.
During evaluation of In[79]:= $RecursionLimit::reclim2: Recursion depth of 1024 exceeded during evaluation of Transpose[states].
Next, we compute InterpolatingFunction objects for each variable. Note that runs of constant state are replaced by just the first instance, and that we use an interpolation order of 0.
In[81]:= soln = First@{Thread[
vars -> (Interpolation[
Join @@ Replace[
SplitBy[Thread[{times, #}], Last], {a, _, z} :> {a}, {1}],
InterpolationOrder -> 0] & /@ states)]}
During evaluation of In[81]:= $RecursionLimit::reclim2: Recursion depth of 1024 exceeded during evaluation of Transpose[states].
Out[81]= Hold[soln =
First[{Thread[
vars -> (Interpolation[
Join @@ Replace[
SplitBy[Thread[{times, #1}], Last], {a, _, z} :> {a}, {1}],
InterpolationOrder -> 0] &) /@ states]}]]