Note that there are some explanatory texts on larger screens.

plurals
  1. POSmooth a trajectory with splrep
    primarykey
    data
    text
    <p>From a video recording it was possible to extract the trajectory of the <strong>head</strong> of a pedestrian moving through a bottleneck. Since, pedestrians sway while moving the trajectory contains nasty oscillations that I would like to eliminate. (The smoothing-algorithm is not relevant for this question) </p> <p>The results are shown in this <a href="http://postimage.org/image/mt83l9lu3/" rel="nofollow">figure</a>.</p> <p>So, my goal is to get a smoothed trajectory using the blue points (called nullpoints). To do that I thought of a spline. Unfortunately, scipy's function <em>splrep</em> has the restriction that the data should be sorted with respect to the x-axis (why?).</p> <p>However in my case, sorting the data points is not a good idea, then it deforms the real trajectory. The result of the spline, <strong>after</strong> sorting looks <a href="http://postimage.org/image/3mb5dbhnl/" rel="nofollow">like</a>. </p> <p>(the last part of the figure is a zoom of the second to showcase the oscillations.)</p> <p>From a mathematical point of view the results of <em>splrep</em> may be correct, however they have no physical relevance and it is because I unnecessary had to manipulate the trajectory. </p> <p>Any ideas how to solve properly this problem with python (scipy)?</p> <p>Here is my code if someone want to play with the data.</p> <pre><code>from matplotlib.pyplot import * from numpy import * from scipy import interpolate # trajectory path = array([ [ 3.83911987e+02, -3.63506010e+01], [ 3.80407013e+02, -3.70444980e+01], [ 3.77910004e+02, -3.73224980e+01], [ 3.75592010e+02, -3.72258990e+01], [ 3.72606995e+02, -3.68973010e+01], [ 3.68860992e+02, -3.64117010e+01], [ 3.64709991e+02, -3.54816020e+01], [ 3.60441986e+02, -3.46052020e+01], [ 3.56470001e+02, -3.33995020e+01], [ 3.53148010e+02, -3.17936990e+01], [ 3.50332001e+02, -2.99004990e+01], [ 3.48214996e+02, -2.76462990e+01], [ 3.45072998e+02, -2.56490000e+01], [ 3.41787994e+02, -2.45536990e+01], [ 3.38785004e+02, -2.41054990e+01], [ 3.36031006e+02, -2.40007990e+01], [ 3.33045013e+02, -2.41030010e+01], [ 3.29737000e+02, -2.44983010e+01], [ 3.26299011e+02, -2.53087010e+01], [ 3.22807007e+02, -2.65634990e+01], [ 3.19296997e+02, -2.82255000e+01], [ 3.15854004e+02, -3.02551990e+01], [ 3.12652008e+02, -3.22993010e+01], [ 3.09871002e+02, -3.41482010e+01], [ 3.07183990e+02, -3.56874010e+01], [ 3.04494995e+02, -3.66516990e+01], [ 3.01890015e+02, -3.71099010e+01], [ 2.99341003e+02, -3.74341010e+01], [ 2.96681000e+02, -3.77743990e+01], [ 2.93803986e+02, -3.79683000e+01], [ 2.90785004e+02, -3.77564010e+01], [ 2.87817993e+02, -3.69802020e+01], [ 2.84980988e+02, -3.57428020e+01], [ 2.82131989e+02, -3.40877990e+01], [ 2.79335999e+02, -3.21539990e+01], [ 2.76933014e+02, -3.00962010e+01], [ 2.74431000e+02, -2.81432000e+01], [ 2.71325012e+02, -2.63622000e+01], [ 2.68205994e+02, -2.47146000e+01], [ 2.65588013e+02, -2.33606000e+01], [ 2.63167999e+02, -2.23937000e+01], [ 2.60816010e+02, -2.16775000e+01], [ 2.58609985e+02, -2.10203990e+01], [ 2.56585999e+02, -2.06432990e+01], [ 2.54651001e+02, -2.06508010e+01], [ 2.52639008e+02, -2.09992010e+01], [ 2.50608002e+02, -2.17117000e+01], [ 2.48576004e+02, -2.28300990e+01], [ 2.46585999e+02, -2.42358000e+01], [ 2.44641006e+02, -2.59650990e+01], [ 2.42638000e+02, -2.79718000e+01], [ 2.40481995e+02, -2.97957990e+01], [ 2.38220993e+02, -3.15263000e+01], [ 2.35929993e+02, -3.32879980e+01], [ 2.33899994e+02, -3.47654000e+01], [ 2.32324005e+02, -3.58550000e+01], [ 2.30934006e+02, -3.66335980e+01], [ 2.29505005e+02, -3.73493000e+01], [ 2.28022995e+02, -3.80163000e+01], [ 2.26539993e+02, -3.84826010e+01], [ 2.25024002e+02, -3.86341020e+01], [ 2.23253998e+02, -3.84396020e+01], [ 2.21259995e+02, -3.78853990e+01], [ 2.19130997e+02, -3.69795990e+01], [ 2.16889999e+02, -3.58032990e+01], [ 2.14451996e+02, -3.43969990e+01], [ 2.11820007e+02, -3.27537000e+01], [ 2.09186996e+02, -3.10618990e+01], [ 2.07384995e+02, -2.93244990e+01], [ 2.04218002e+02, -2.81264000e+01], [ 2.01115997e+02, -2.68684010e+01], [ 1.98009003e+02, -2.56004010e+01], [ 1.95281006e+02, -2.47794000e+01], [ 1.92839005e+02, -2.42327000e+01], [ 1.90753006e+02, -2.39883000e+01], [ 1.88904007e+02, -2.39496990e+01], [ 1.87065002e+02, -2.40893000e+01], [ 1.85164001e+02, -2.51790010e+01], [ 1.83408005e+02, -2.58622000e+01], [ 1.81880997e+02, -2.68085000e+01], [ 1.80416000e+02, -2.82280010e+01], [ 1.79287994e+02, -3.01436000e+01], [ 1.78574997e+02, -3.22188990e+01], [ 1.77757004e+02, -3.42841000e+01], [ 1.76931000e+02, -3.64440990e+01], [ 1.76029007e+02, -3.81259990e+01], [ 1.75113998e+02, -3.96713980e+01], [ 1.74244003e+02, -4.08652000e+01], [ 1.73044998e+02, -4.15327990e+01], [ 1.72110001e+02, -4.16768000e+01], [ 1.70936005e+02, -4.17703020e+01], [ 1.69544006e+02, -4.12965010e+01], [ 1.67804993e+02, -4.05098000e+01], [ 1.66028000e+02, -3.96259000e+01], [ 1.64475998e+02, -3.81104010e+01], [ 1.63324005e+02, -3.61517980e+01], [ 1.62007004e+02, -3.43326990e+01], [ 1.60423996e+02, -3.27486990e+01], [ 1.58707993e+02, -3.09353010e+01], [ 1.56770996e+02, -2.94423010e+01], [ 1.54835999e+02, -2.79886000e+01], [ 1.52953003e+02, -2.67169000e+01], [ 1.50912994e+02, -2.57530990e+01], [ 1.48996002e+02, -2.54090000e+01], [ 1.47061996e+02, -2.53249000e+01], [ 1.45320007e+02, -2.55256000e+01], [ 1.43707993e+02, -2.60972000e+01], [ 1.41876007e+02, -2.68913990e+01], [ 1.40018997e+02, -2.78764000e+01], [ 1.38016998e+02, -2.91917000e+01], [ 1.36063004e+02, -3.06130010e+01], [ 1.34001999e+02, -3.22636990e+01], [ 1.31807999e+02, -3.42985000e+01], [ 1.29455002e+02, -3.65051990e+01], [ 1.27331001e+02, -3.85568010e+01], [ 1.25116997e+02, -4.05253980e+01], [ 1.23258003e+02, -4.22365990e+01], [ 1.21709000e+02, -4.36623000e+01], [ 1.20507004e+02, -4.48983990e+01], [ 1.19530998e+02, -4.56188010e+01], [ 1.18888000e+02, -4.60003010e+01], [ 1.18030998e+02, -4.58804020e+01], [ 1.17032997e+02, -4.53919980e+01], [ 1.15643997e+02, -4.47540020e+01], [ 1.14077003e+02, -4.39210010e+01], [ 1.12264000e+02, -4.29716000e+01], [ 1.10446999e+02, -4.18083990e+01], [ 1.08487000e+02, -4.06045990e+01], [ 1.06468002e+02, -3.88120990e+01], [ 1.04453003e+02, -3.67605020e+01], [ 1.02263000e+02, -3.47210010e+01], [ 9.98833010e+01, -3.29178010e+01], [ 9.76293030e+01, -3.16152000e+01], [ 9.55121000e+01, -3.09032000e+01], [ 9.33936000e+01, -3.05140000e+01], [ 9.14021000e+01, -3.02255000e+01], [ 8.95216980e+01, -3.02507990e+01], [ 8.76836010e+01, -3.06539000e+01], [ 8.58259960e+01, -3.10028990e+01], [ 8.40342030e+01, -3.14128000e+01], [ 8.25109020e+01, -3.24874990e+01], [ 8.16477970e+01, -3.37783010e+01], [ 8.10721970e+01, -3.54217000e+01], [ 8.02864000e+01, -3.69583020e+01], [ 7.93555980e+01, -3.81934010e+01], [ 7.82388990e+01, -3.90952990e+01], [ 7.72057040e+01, -3.95537990e+01], [ 7.61997990e+01, -3.97468990e+01], [ 7.54201970e+01, -3.95574000e+01], [ 7.46388020e+01, -3.92573010e+01], [ 7.36848980e+01, -3.86537020e+01], [ 7.25225980e+01, -3.76381990e+01], [ 7.13074040e+01, -3.64692990e+01], [ 7.02815020e+01, -3.50397990e+01], [ 6.93098980e+01, -3.34804990e+01], [ 6.82506030e+01, -3.18008000e+01], [ 6.69611970e+01, -3.02639010e+01], [ 6.55927960e+01, -2.89077000e+01], [ 6.44023970e+01, -2.77817990e+01], [ 6.31432990e+01, -2.70891990e+01], [ 6.19845010e+01, -2.66151010e+01], [ 6.08012010e+01, -2.63731990e+01], [ 5.95279010e+01, -2.63244000e+01], [ 5.81848980e+01, -2.66625000e+01], [ 5.67341000e+01, -2.70667000e+01], [ 5.53522000e+01, -2.76193010e+01], [ 5.40955010e+01, -2.89263990e+01], [ 5.30055010e+01, -3.03295990e+01], [ 5.19216000e+01, -3.15974010e+01], [ 5.08109020e+01, -3.27397990e+01], [ 4.95959010e+01, -3.36008990e+01], [ 4.83475990e+01, -3.42673000e+01], [ 4.69407010e+01, -3.46990010e+01], [ 4.56283000e+01, -3.50008010e+01], [ 4.45952990e+01, -3.53820990e+01], [ 4.35136990e+01, -3.55634990e+01], [ 4.24670980e+01, -3.54066010e+01], [ 4.11960980e+01, -3.49855000e+01], [ 3.94818000e+01, -3.43259010e+01], [ 3.75299990e+01, -3.32298010e+01], [ 3.54291000e+01, -3.18832000e+01], [ 3.35419010e+01, -3.01863990e+01], [ 3.18060000e+01, -2.83223990e+01], [ 3.03379000e+01, -2.64284990e+01], [ 2.90386010e+01, -2.48046000e+01], [ 2.77717000e+01, -2.35111010e+01], [ 2.66282010e+01, -2.24167000e+01], [ 2.56504000e+01, -2.15105990e+01], [ 2.45620990e+01, -2.09494990e+01], [ 2.36200010e+01, -2.05372010e+01], [ 2.25006010e+01, -2.02623000e+01], [ 2.12878000e+01, -2.01607000e+01], [ 1.99335990e+01, -2.02614990e+01], [ 1.84620000e+01, -2.04685990e+01], [ 1.67920000e+01, -2.09810010e+01], [ 1.50698000e+01, -2.15951000e+01], [ 1.31372000e+01, -2.24368000e+01], [ 1.08794000e+01, -2.30415000e+01], [ 8.29891000e+00, -2.31980000e+01], [ 5.61593000e+00, -2.27952000e+01], [ 2.89633000e+00, -2.16718010e+01], [ 8.38298000e-01, -2.05924000e+01], [-9.50327000e-01, -1.92878000e+01], [-2.68694000e+00, -1.77108000e+01], [-4.20826000e+00, -1.59780000e+01], [-5.74339000e+00, -1.44248000e+01], [-7.13617000e+00, -1.34790000e+01], [-8.80355000e+00, -1.29467000e+01], [-1.09091000e+01, -1.23274000e+01], [-1.32822000e+01, -1.15982000e+01], [-1.57716000e+01, -1.08766000e+01], [-1.82273010e+01, -1.04894000e+01], [-2.05464000e+01, -1.03020000e+01], [-2.24237000e+01, -9.95550000e+00], [-2.38675990e+01, -9.45586000e+00], [-2.50128990e+01, -8.74390000e+00], [-2.58752990e+01, -7.79803000e+00], [-2.64664000e+01, -6.62279000e+00], [-2.66699010e+01, -5.05463000e+00], [-2.65776000e+01, -3.41969000e+00], [-2.63474010e+01, -1.57144000e+00], [-2.61133000e+01, 6.46999000e-01], [-2.58085990e+01, 3.23445000e+00], [-2.55969010e+01, 5.78099000e+00], [-2.55000000e+01, 8.36744000e+00], [-2.54680000e+01, 1.11505000e+01], [-2.53899000e+01, 1.41447000e+01], [-2.53566000e+01, 1.71451000e+01], [-2.58187010e+01, 2.05758000e+01], [-2.65830990e+01, 2.44065000e+01], [-2.79578990e+01, 2.84622990e+01], [-2.95126990e+01, 3.26220020e+01], [-3.12829000e+01, 3.70005990e+01], [-3.31349980e+01, 4.12872010e+01], [-3.51132010e+01, 4.54515000e+01], [-3.70420000e+01, 4.90353010e+01], [-3.85575980e+01, 5.27621990e+01], [-3.94586980e+01, 5.64221990e+01], [-3.97930980e+01, 5.98333020e+01], [-3.98658980e+01, 6.29235000e+01], [-3.94589000e+01, 6.64207990e+01], [-3.88973010e+01, 6.96651990e+01], [-3.81236990e+01, 7.34041980e+01], [-3.68148000e+01, 7.73573990e+01], [-3.54217990e+01, 8.15375980e+01], [-3.38608020e+01, 8.63582990e+01], [-3.15564000e+01, 9.19246980e+01], [-2.93428990e+01, 9.76631010e+01], [-2.72516990e+01, 1.02860001e+02], [-2.59647010e+01, 1.08068001e+02], [-2.51345010e+01, 1.12709999e+02], [-2.48617990e+01, 1.16903000e+02], [-2.48806990e+01, 1.20731003e+02], [-2.52887990e+01, 1.24375000e+02], [-2.62332990e+01, 1.28048004e+02], [-2.74224000e+01, 1.31630005e+02], [-2.93577000e+01, 1.35138000e+02], [-3.18421000e+01, 1.38580002e+02], [-3.43532980e+01, 1.42533997e+02], [-3.68244020e+01, 1.46210999e+02], [-3.83947980e+01, 1.49451996e+02], [-3.94422990e+01, 1.52266006e+02], [-4.00191000e+01, 1.54524002e+02], [-4.01052020e+01, 1.56955002e+02], [-4.01661990e+01, 1.59701996e+02], [-3.94771000e+01, 1.62824997e+02], [-3.84656980e+01, 1.65957993e+02], [-3.69557000e+01, 1.69384995e+02], [-3.54382020e+01, 1.72932007e+02], [-3.37109990e+01, 1.77065002e+02], [-3.12064990e+01, 1.81628006e+02], [-2.85994000e+01, 1.86921005e+02], [-2.57090000e+01, 1.91203003e+02], [-2.33045010e+01, 1.95505005e+02], [-2.18305000e+01, 1.99636993e+02], [-2.07416990e+01, 2.03414993e+02], [-2.00366990e+01, 2.06847000e+02], [-1.97754000e+01, 2.11009003e+02], [-1.97579000e+01, 2.15139999e+02], [-1.99501990e+01, 2.19901001e+02], [-2.07133010e+01, 2.24968994e+02], [-2.17415010e+01, 2.30507004e+02], [-2.29566990e+01, 2.36494003e+02], [-2.40505010e+01, 2.42442001e+02], [-2.48687990e+01, 2.48417007e+02], [-2.52953000e+01, 2.54072006e+02], [-2.54123000e+01, 2.59537994e+02], [-2.54193000e+01, 2.64915985e+02], [-2.56805990e+01, 2.71098999e+02], [-2.59018990e+01, 2.77950989e+02], [-2.64182000e+01, 2.84119995e+02], [-2.65342010e+01, 2.89997009e+02], [-2.60492990e+01, 2.95882996e+02], [-2.51636010e+01, 3.02220001e+02], [-2.36994990e+01, 3.09553986e+02], [-2.22290000e+01, 3.16851990e+02], [-2.17989010e+01, 3.23812012e+02], [-2.21809010e+01, 3.30109985e+02], [-2.24906010e+01, 3.36039001e+02], [-2.24252000e+01, 3.41493011e+02], [-2.26278990e+01, 3.46933990e+02], [-2.34319000e+01, 3.52662994e+02], [-2.43871990e+01, 3.58191010e+02], [-2.52982010e+01, 3.64041992e+02], [-2.64419000e+01, 3.70739990e+02], [-2.79559990e+01, 3.77709991e+02], [-2.87983000e+01, 3.84595001e+02], [-2.86500000e+01, 3.90970001e+02], [-2.82661990e+01, 3.96442993e+02], [-2.81972010e+01, 4.01808014e+02]]) #nullpoints A = array([ [ 3.50332001e+02, -2.99004990e+01], [ 3.15854004e+02, -3.02551990e+01], [ 2.76933014e+02, -3.00962010e+01], [ 2.42638000e+02, -2.79718000e+01], [ 2.11820007e+02, -3.27537000e+01], [ 1.77757004e+02, -3.42841000e+01], [ 1.63324005e+02, -3.61517980e+01], [ 1.27331001e+02, -3.85568010e+01], [ 1.06468002e+02, -3.88120990e+01], [ 8.10721970e+01, -3.54217000e+01], [ 7.02815020e+01, -3.50397990e+01], [ 5.30055010e+01, -3.03295990e+01], [ 3.03379000e+01, -2.64284990e+01], [ 1.67920000e+01, -2.09810010e+01], [-2.61133000e+01, 6.46999000e-01], [-3.31349980e+01, 4.12872010e+01], [-3.38608020e+01, 8.63582990e+01], [-3.18421000e+01, 1.38580002e+02], [-3.12064990e+01, 1.81628006e+02], [-2.17415010e+01, 2.30507004e+02], [-2.17415010e+01, 2.30507004e+02], [-2.51636010e+01, 3.02220001e+02], [-2.43871990e+01, 3.58191010e+02]]) isSort = 1 # isSort = 0 --&gt; problems with splrep # File "/usr/local/lib/python2.6/dist-packages/scipy/interpolate/fitpack.py", # line 466, in splrep # raise _iermess[ier][3](_iermess[ier][0]) # ValueError: Error on input data if isSort: I = lexsort((A[:,1], A[:,0]) ) A = A[I] a1 = A[:,0] a2 = A[:,1] subplot(311) plot(path[:,0], path[:,1], "-r", lw=2, label="path") plot(a1, a2, "ob", ms = 6, label = "nullpoints") legend();grid() subplot(312) # -------------------- spline ------------------------ xnew = np.arange( min(a1), max(a1), 1) for s, color in zip([abs(max(a2)- min(a2))*32, abs(max(a2)- min(a2))*8], ["-m", "-g"]): tck = interpolate.splrep(a1, a2, s = s) ynew = interpolate.splev(xnew, tck) plot(xnew, ynew, "%s"%color, lw=2, label = "splrep, s=%d"%s) #------------------------------------------------------ plot(a1, a2, "ob", ms = 6) legend();grid() # zoom around the oscillating part subplot(313) for s, color in zip([abs(max(a2)- min(a2))*32, abs(max(a2)- min(a2))*8], ["-m", "-g"]): tck = interpolate.splrep(a1, a2, s = s) ynew = interpolate.splev(xnew, tck) plot(xnew, ynew, "%s"%color, lw=2, label = "splrep, s=%d"%s) xlim([min(a2), -20]) plot(a1, a2, "ob", ms = 6, label = "nullpoints") grid();savefig("dummy.png"); show() </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload